This commit is contained in:
Smaug123
2019-11-16 12:18:03 +00:00
parent 42f1defd2a
commit f8a2062c6e
6 changed files with 144 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ open import Groups.Groups
open import Groups.Subgroups.Definition
open import Groups.Abelian.Definition
open import Groups.Definition
open import Groups.Lemmas
module Groups.Cyclic.Definition {m n : _} {A : Set m} {S : Setoid {m} {n} A} {_·_ : A A A} (G : Group S _·_) where
@@ -25,6 +26,10 @@ positiveEltPower : (x : A) (i : ) → A
positiveEltPower x 0 = Group.0G G
positiveEltPower x (succ i) = x · (positiveEltPower x i)
positiveEltPowerWellDefinedG : (x y : A) (x y) (i : ) (positiveEltPower x i) (positiveEltPower y i)
positiveEltPowerWellDefinedG x y x=y 0 = reflexive
positiveEltPowerWellDefinedG x y x=y (succ i) = +WellDefined x=y (positiveEltPowerWellDefinedG x y x=y i)
positiveEltPowerCollapse : (x : A) (i j : ) Setoid.__ S ((positiveEltPower x i) · (positiveEltPower x j)) (positiveEltPower x (i +N j))
positiveEltPowerCollapse x zero j = Group.identLeft G
positiveEltPowerCollapse x (succ i) j = transitive (symmetric +Associative) (+WellDefined reflexive (positiveEltPowerCollapse x i j))
@@ -33,6 +38,17 @@ elementPower : (x : A) (i : ) → A
elementPower x (nonneg i) = positiveEltPower x i
elementPower x (negSucc i) = Group.inverse G (positiveEltPower x (succ i))
-- TODO: move this to lemmas
elementPowerWellDefinedZ : (i j : ) (i j) {g : A} elementPower g i elementPower g j
elementPowerWellDefinedZ i j i=j {g} = applyEquality (elementPower g) i=j
elementPowerWellDefinedZ' : (i j : ) (i j) {g : A} (elementPower g i) (elementPower g j)
elementPowerWellDefinedZ' i j i=j {g} = identityOfIndiscernablesRight __ reflexive (elementPowerWellDefinedZ i j i=j)
elementPowerWellDefinedG : (g h : A) (g h) {n : } (elementPower g n) (elementPower h n)
elementPowerWellDefinedG g h g=h {nonneg n} = positiveEltPowerWellDefinedG g h g=h n
elementPowerWellDefinedG g h g=h {negSucc x} = inverseWellDefined G (+WellDefined g=h (positiveEltPowerWellDefinedG g h g=h x))
record CyclicGroup : Set (m n) where
field
generator : A