Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
My final commit on universal algebra, I did not reach my goal of the first homomorphism theorem as I've realized a lot of theory will be needed for it, and I want to work on more immediate results. ---------------- For posterity, here's my thoughts on what and how to proof next (and other stuff) if one wanted to continue this line 1. Prove that `induced-function-term` is the same as `eval-term` in the sense more precise of commit a070945 (lazily called `assignment-vec'`). 2. Prove that the quotient algebra is indeed an algebra: use the previous result to say that each axiom in the quotients comes from function application in the quotient, and then prove that this function is one that comes from functoriality in the base algebra. (Alternatively redefine the model in the quotient algebra so that this holds by definition). 3. (1) is hard as a lot of workarounds (mutual recursion) have to be made to satisfy the termination checker, alternatively one could redefine being an algebra as one that matches the `induced-function-term`s associated to two terms `t1` and `t2`. Notice that the de bruijn variables in each term may be different, so that an appropriate notion of merging and extending the induced functions must be made. 4. Once these results hold, I think classic results should be relatively easy, including the homomorphism theorems. My goal was proving the first homomorphism theorem and applying it to the algebraic theory of groups, and then transporting the result to groups (through univalance). I wanted a general and *practical* way to study and prove stuff about all algebraic structures. In the end, I'm still not sure if this approach would have worked...
- Loading branch information
Fernando Chu
committed
Mar 28, 2023
1 parent
3ed77b9
commit f1b872e
Showing
8 changed files
with
450 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# Kernels of homomorphisms of algebras | ||
|
||
```agda | ||
module universal-algebra.kernels where | ||
``` | ||
|
||
<details><summary>Imports</summary> | ||
|
||
```agda | ||
open import elementary-number-theory.natural-numbers | ||
|
||
open import foundation.binary-relations | ||
open import foundation.dependent-pair-types | ||
open import foundation.equational-reasoning | ||
open import foundation.equivalence-relations | ||
open import foundation.identity-types | ||
open import foundation.universe-levels | ||
|
||
open import linear-algebra.functoriality-vectors | ||
open import linear-algebra.vectors | ||
|
||
open import universal-algebra.algebraic-theories | ||
open import universal-algebra.algebras-of-theories | ||
open import universal-algebra.congruences | ||
open import universal-algebra.homomorphisms-of-algebras | ||
open import universal-algebra.signatures | ||
``` | ||
|
||
</details> | ||
|
||
## Idea | ||
|
||
The kernel of a homomorphism `f` of algebras is the congruence relation given by | ||
`x ~ y` iff `f x ~ f y`. | ||
|
||
## Definitions | ||
|
||
```agda | ||
module _ | ||
{ l1 : Level} ( Sg : signature l1) | ||
{ l2 : Level } ( Th : Theory Sg l2) | ||
{ l3 l4 : Level } | ||
( Alg1 : Algebra Sg Th l3) | ||
( Alg2 : Algebra Sg Th l4) | ||
( F : type-hom-Algebra Sg Th Alg1 Alg2) | ||
where | ||
|
||
rel-prop-kernel-hom-Algebra : | ||
Rel-Prop l4 (type-Algebra Sg Th Alg1) | ||
pr1 (rel-prop-kernel-hom-Algebra x y) = | ||
map-hom-Algebra Sg Th Alg1 Alg2 F x = | ||
map-hom-Algebra Sg Th Alg1 Alg2 F y | ||
pr2 (rel-prop-kernel-hom-Algebra x y) = | ||
is-set-Algebra Sg Th Alg2 _ _ | ||
|
||
eq-rel-kernel-hom-Algebra : | ||
Eq-Rel l4 (type-Algebra Sg Th Alg1) | ||
pr1 eq-rel-kernel-hom-Algebra = | ||
rel-prop-kernel-hom-Algebra | ||
pr1 (pr2 eq-rel-kernel-hom-Algebra) = refl | ||
pr1 (pr2 (pr2 eq-rel-kernel-hom-Algebra)) = inv | ||
pr2 (pr2 (pr2 eq-rel-kernel-hom-Algebra)) = _∙_ | ||
|
||
kernel-hom-Algebra : | ||
congruence-Algebra Sg Th Alg1 l4 | ||
pr1 kernel-hom-Algebra = eq-rel-kernel-hom-Algebra | ||
pr2 kernel-hom-Algebra op v v' p = | ||
equational-reasoning | ||
f (is-model-set-Algebra Sg Th Alg1 op v) | ||
= is-model-set-Algebra Sg Th Alg2 op (map-vec f v) | ||
by preserves-operations-hom-Algebra Sg Th Alg1 Alg2 F op v | ||
= is-model-set-Algebra Sg Th Alg2 op (map-vec f v') | ||
by ap ( is-model-set-Algebra Sg Th Alg2 op) | ||
( map-hom-Algebra-lemma (pr2 Sg op) v v' p) | ||
= f (is-model-set-Algebra Sg Th Alg1 op v') | ||
by inv (preserves-operations-hom-Algebra Sg Th Alg1 Alg2 F op v') | ||
where | ||
f = map-hom-Algebra Sg Th Alg1 Alg2 F | ||
map-hom-Algebra-lemma : | ||
( n : ℕ) → | ||
( v v' : vec (type-Algebra Sg Th Alg1) n) → | ||
( relation-holds-all-vec Sg Th Alg1 eq-rel-kernel-hom-Algebra v v') → | ||
(map-vec f v) = (map-vec f v') | ||
map-hom-Algebra-lemma zero-ℕ empty-vec empty-vec p = refl | ||
map-hom-Algebra-lemma (succ-ℕ n) (x ∷ v) (x' ∷ v') (p , p') = | ||
ap-binary (_∷_) p (map-hom-Algebra-lemma n v v' p') | ||
``` |
Oops, something went wrong.