mirror of
https://github.com/Smaug123/agdaproofs
synced 2025-10-16 08:58:39 +00:00
Quotient ring (#81)
This commit is contained in:
@@ -10,21 +10,18 @@ open import Groups.Definition
|
||||
open import Groups.Subgroups.Definition
|
||||
open import Groups.Subgroups.Normal.Definition
|
||||
|
||||
module Groups.Cosets {a b : _} {A : Set a} {S : Setoid {a} {b} A} {_+_ : A → A → A} (G : Group S _+_) {c : _} {pred : A → Set c} (subgrp : subgroup G pred) where
|
||||
module Groups.Cosets {a b : _} {A : Set a} {S : Setoid {a} {b} A} {_+_ : A → A → A} (G : Group S _+_) {c : _} {pred : A → Set c} (subgrp : Subgroup G pred) where
|
||||
|
||||
open Equivalence (Setoid.eq S)
|
||||
open import Groups.Lemmas G
|
||||
open _&_&_ (_&&_.snd subgrp)
|
||||
open Group G
|
||||
|
||||
private
|
||||
subs = _&&_.fst subgrp
|
||||
open Subgroup subgrp
|
||||
|
||||
cosetSetoid : Setoid A
|
||||
Setoid._∼_ cosetSetoid g h = pred ((Group.inverse G h) + g)
|
||||
Equivalence.reflexive (Setoid.eq cosetSetoid) = subs (symmetric (Group.invLeft G)) two
|
||||
Equivalence.symmetric (Setoid.eq cosetSetoid) yx = subs (transitive invContravariant (+WellDefined reflexive invInv)) (three yx)
|
||||
Equivalence.transitive (Setoid.eq cosetSetoid) yx zy = subs (transitive +Associative (+WellDefined (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invRight) identRight)) reflexive)) (one zy yx)
|
||||
Equivalence.reflexive (Setoid.eq cosetSetoid) = isSubset (symmetric (Group.invLeft G)) containsIdentity
|
||||
Equivalence.symmetric (Setoid.eq cosetSetoid) yx = isSubset (transitive invContravariant (+WellDefined reflexive invInv)) (closedUnderInverse yx)
|
||||
Equivalence.transitive (Setoid.eq cosetSetoid) yx zy = isSubset (transitive +Associative (+WellDefined (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invRight) identRight)) reflexive)) (closedUnderPlus zy yx)
|
||||
|
||||
cosetGroup : normalSubgroup G subgrp → Group cosetSetoid _+_
|
||||
Group.+WellDefined (cosetGroup norm) {m} {n} {x} {y} m=x n=y = ans
|
||||
@@ -34,17 +31,17 @@ Group.+WellDefined (cosetGroup norm) {m} {n} {x} {y} m=x n=y = ans
|
||||
u : pred (inverse x + m)
|
||||
u = m=x
|
||||
v : pred (m + inverse x)
|
||||
v = subs (+WellDefined reflexive (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invRight) identRight))) (norm u)
|
||||
v = isSubset (+WellDefined reflexive (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invRight) identRight))) (norm u)
|
||||
ans' : pred ((inverse y) + ((inverse x + m) + inverse (inverse y)))
|
||||
ans' = norm u
|
||||
ans'' : pred ((inverse y) + ((inverse x + m) + y))
|
||||
ans'' = subs (+WellDefined reflexive (+WellDefined reflexive (invTwice y))) ans'
|
||||
ans'' = isSubset (+WellDefined reflexive (+WellDefined reflexive (invTwice y))) ans'
|
||||
ans : pred (inverse (x + y) + (m + n))
|
||||
ans = subs (transitive (transitive +Associative (transitive (+WellDefined (transitive (symmetric +Associative) (transitive (+WellDefined reflexive (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invRight) identRight))) +Associative)) reflexive) (symmetric +Associative))) (symmetric (+WellDefined invContravariant reflexive))) (one ans'' t)
|
||||
ans = isSubset (transitive (transitive +Associative (transitive (+WellDefined (transitive (symmetric +Associative) (transitive (+WellDefined reflexive (transitive (symmetric +Associative) (transitive (+WellDefined reflexive invRight) identRight))) +Associative)) reflexive) (symmetric +Associative))) (symmetric (+WellDefined invContravariant reflexive))) (closedUnderPlus ans'' t)
|
||||
Group.0G (cosetGroup norm) = 0G
|
||||
Group.inverse (cosetGroup norm) = inverse
|
||||
Group.+Associative (cosetGroup norm) {a} {b} {c} = subs (symmetric (transitive (+WellDefined (inverseWellDefined (symmetric +Associative)) reflexive) (invLeft {a + (b + c)}))) two
|
||||
Group.identRight (cosetGroup norm) = subs (symmetric (transitive +Associative (transitive (+WellDefined invLeft reflexive) identRight))) two
|
||||
Group.identLeft (cosetGroup norm) = subs (symmetric (transitive (+WellDefined reflexive identLeft) invLeft)) two
|
||||
Group.invLeft (cosetGroup norm) = subs (symmetric (transitive (+WellDefined reflexive invLeft) invLeft)) two
|
||||
Group.invRight (cosetGroup norm) = subs (symmetric (transitive (+WellDefined reflexive invRight) invLeft)) two
|
||||
Group.+Associative (cosetGroup norm) {a} {b} {c} = isSubset (symmetric (transitive (+WellDefined (inverseWellDefined (symmetric +Associative)) reflexive) (invLeft {a + (b + c)}))) containsIdentity
|
||||
Group.identRight (cosetGroup norm) = isSubset (symmetric (transitive +Associative (transitive (+WellDefined invLeft reflexive) identRight))) containsIdentity
|
||||
Group.identLeft (cosetGroup norm) = isSubset (symmetric (transitive (+WellDefined reflexive identLeft) invLeft)) containsIdentity
|
||||
Group.invLeft (cosetGroup norm) = isSubset (symmetric (transitive (+WellDefined reflexive invLeft) invLeft)) containsIdentity
|
||||
Group.invRight (cosetGroup norm) = isSubset (symmetric (transitive (+WellDefined reflexive invRight) invLeft)) containsIdentity
|
||||
|
Reference in New Issue
Block a user