11# Large abelian groups
22
33``` agda
4+ {-# OPTIONS --lossy-unification #-}
5+
46module group-theory.large-abelian-groups where
57```
68
@@ -55,6 +57,13 @@ record Large-Ab (α : Level → Level) (β : Level → Level → Level) : UUω w
5557 type-Large-Ab (l1 ⊔ l2)
5658 add-Large-Ab = mul-Large-Group large-group-Large-Ab
5759
60+ ap-add-Large-Ab :
61+ {l1 l2 : Level} {x x' : type-Large-Ab l1} → x = x' →
62+ {y y' : type-Large-Ab l2} → y = y' →
63+ add-Large-Ab x y = add-Large-Ab x' y'
64+ ap-add-Large-Ab =
65+ ap-mul-Large-Group large-group-Large-Ab
66+
5867 zero-Large-Ab : type-Large-Ab lzero
5968 zero-Large-Ab = unit-Large-Group large-group-Large-Ab
6069
@@ -63,7 +72,7 @@ record Large-Ab (α : Level → Level) (β : Level → Level → Level) : UUω w
6372
6473 field
6574 commutative-add-Large-Ab :
66- {l1 l2 : Level} → (x : type-Large-Ab l1) → (y : type-Large-Ab l2) →
75+ {l1 l2 : Level} (x : type-Large-Ab l1) (y : type-Large-Ab l2) →
6776 add-Large-Ab x y = add-Large-Ab y x
6877
6978open Large-Ab public
@@ -104,6 +113,17 @@ module _
104113 sim-Large-Ab y z → sim-Large-Ab x y → sim-Large-Ab x z
105114 transitive-sim-Large-Ab =
106115 transitive-sim-Large-Group (large-group-Large-Ab G)
116+
117+ sim-eq-Large-Ab :
118+ {l : Level} {x y : type-Large-Ab G l} →
119+ x = y → sim-Large-Ab x y
120+ sim-eq-Large-Ab = sim-eq-Large-Group (large-group-Large-Ab G)
121+
122+ eq-sim-Large-Ab :
123+ {l : Level} {x y : type-Large-Ab G l} →
124+ sim-Large-Ab x y → x = y
125+ eq-sim-Large-Ab {x = x} {y = y} =
126+ eq-sim-Large-Group (large-group-Large-Ab G) x y
107127```
108128
109129### Raising universe levels
@@ -173,6 +193,35 @@ module _
173193 raise-zero-Large-Ab lzero = zero-Large-Ab G
174194 raise-unit-lzero-Large-Ab =
175195 raise-unit-lzero-Large-Group (large-group-Large-Ab G)
196+
197+ preserves-sim-left-add-Large-Ab :
198+ {l1 l2 l3 : Level} →
199+ (y : type-Large-Ab G l1) →
200+ (x : type-Large-Ab G l2) (x' : type-Large-Ab G l3) →
201+ sim-Large-Ab G x x' →
202+ sim-Large-Ab G (add-Large-Ab G x y) (add-Large-Ab G x' y)
203+ preserves-sim-left-add-Large-Ab =
204+ preserves-sim-left-mul-Large-Group (large-group-Large-Ab G)
205+
206+ preserves-sim-right-add-Large-Ab :
207+ {l1 l2 l3 : Level} →
208+ (x : type-Large-Ab G l1) →
209+ (y : type-Large-Ab G l2) (y' : type-Large-Ab G l3) →
210+ sim-Large-Ab G y y' →
211+ sim-Large-Ab G (add-Large-Ab G x y) (add-Large-Ab G x y')
212+ preserves-sim-right-add-Large-Ab =
213+ preserves-sim-right-mul-Large-Group (large-group-Large-Ab G)
214+ ```
215+
216+ ### Similarity reasoning on large abelian groups
217+
218+ ``` agda
219+ module
220+ similarity-reasoning-Large-Ab
221+ {α : Level → Level} {β : Level → Level → Level} (G : Large-Ab α β)
222+ where
223+
224+ open similarity-reasoning-Large-Group (large-group-Large-Ab G) public
176225```
177226
178227### Group properties of large abelian groups
@@ -203,6 +252,18 @@ module _
203252 add-Large-Ab G x (zero-Large-Ab G) = x
204253 right-unit-law-add-Large-Ab =
205254 right-unit-law-mul-Large-Group (large-group-Large-Ab G)
255+
256+ left-inverse-law-add-Large-Ab :
257+ {l : Level} (x : type-Large-Ab G l) →
258+ add-Large-Ab G (neg-Large-Ab G x) x = raise-zero-Large-Ab G l
259+ left-inverse-law-add-Large-Ab =
260+ left-inverse-law-mul-Large-Group (large-group-Large-Ab G)
261+
262+ right-inverse-law-add-Large-Ab :
263+ {l : Level} (x : type-Large-Ab G l) →
264+ add-Large-Ab G x (neg-Large-Ab G x) = raise-zero-Large-Ab G l
265+ right-inverse-law-add-Large-Ab =
266+ right-inverse-law-mul-Large-Group (large-group-Large-Ab G)
206267```
207268
208269### The negation of the identity is the identity
@@ -263,7 +324,7 @@ module _
263324 add-Large-Ab G (neg-Large-Ab G x) (neg-Large-Ab G y)
264325 distributive-neg-add-Large-Ab x y =
265326 ( distributive-inv-mul-Large-Group (large-group-Large-Ab G) x y) ∙
266- ( commutative-add-Large-Ab G _ _ )
327+ ( commutative-add-Large-Ab G (neg-Large-Ab G y) (neg-Large-Ab G x) )
267328```
268329
269330### Negation is an involution
@@ -447,3 +508,53 @@ module _
447508 ( ab-Large-Ab G (l1 ⊔ l2))
448509 hom-raise-Large-Ab = hom-raise-Large-Group (large-group-Large-Ab G) l1 l2
449510```
511+
512+ ### If ` x + x = x ` , ` x ` is similar to 0
513+
514+ ``` agda
515+ module _
516+ {α : Level → Level} {β : Level → Level → Level} (G : Large-Ab α β)
517+ where
518+
519+ abstract
520+ sim-zero-is-idempotent-add-Large-Ab :
521+ {l : Level} (x : type-Large-Ab G l) →
522+ add-Large-Ab G x x = x →
523+ sim-Large-Ab G x (zero-Large-Ab G)
524+ sim-zero-is-idempotent-add-Large-Ab {l} x x+x=x =
525+ let
526+ open similarity-reasoning-Large-Ab G
527+ in
528+ similarity-reasoning
529+ x
530+ ~ add-Large-Ab G x (zero-Large-Ab G)
531+ by sim-eq-Large-Ab G (inv (right-unit-law-add-Large-Ab G x))
532+ ~ add-Large-Ab G x (raise-zero-Large-Ab G l)
533+ by
534+ preserves-sim-right-add-Large-Ab G _ _ _
535+ ( sim-raise-Large-Ab G _ _)
536+ ~ add-Large-Ab G x (add-Large-Ab G x (neg-Large-Ab G x))
537+ by
538+ sim-eq-Large-Ab G
539+ ( ap-add-Large-Ab G
540+ ( refl)
541+ ( inv (right-inverse-law-add-Large-Ab G x)))
542+ ~ add-Large-Ab G (add-Large-Ab G x x) (neg-Large-Ab G x)
543+ by sim-eq-Large-Ab G (inv (associative-add-Large-Ab G _ _ _))
544+ ~ add-Large-Ab G x (neg-Large-Ab G x)
545+ by sim-eq-Large-Ab G (ap-add-Large-Ab G x+x=x refl)
546+ ~ raise-zero-Large-Ab G l
547+ by sim-eq-Large-Ab G (right-inverse-law-add-Large-Ab G x)
548+ ~ zero-Large-Ab G
549+ by sim-raise-Large-Ab' G _ _
550+
551+ eq-zero-is-idempotent-add-Large-Ab :
552+ {l : Level} (x : type-Large-Ab G l) →
553+ add-Large-Ab G x x = x →
554+ x = raise-zero-Large-Ab G l
555+ eq-zero-is-idempotent-add-Large-Ab {l} x x+x=x =
556+ eq-sim-Large-Ab G
557+ ( transitive-sim-Large-Ab G _ _ _
558+ ( sim-raise-Large-Ab G l (zero-Large-Ab G))
559+ ( sim-zero-is-idempotent-add-Large-Ab x x+x=x))
560+ ```
0 commit comments