{-# OPTIONS --safe --warning=error --with-K #-} open import Sets.EquivalenceRelations open import Groups.Definition open import Orders open import Rings.Definition open import Numbers.Integers.Integers open import Numbers.Integers.Multiplication open import Setoids.Setoids open import LogicalFormulae open import Sets.FinSet open import Functions open import Numbers.Naturals.Definition open import Numbers.Naturals.Order open import Numbers.Naturals.Semiring open import Numbers.Naturals.WithK open import Numbers.Modulo.Definition open import Numbers.Modulo.Addition open import Numbers.Modulo.Group open import Rings.Examples.Examples open import Numbers.Primes.PrimeNumbers open import Groups.Lemmas open import Groups.Homomorphisms.Definition open import Groups.Homomorphisms.Lemmas open import Groups.Isomorphisms.Definition open import Groups.Cyclic.Definition open import Groups.QuotientGroup.Definition open import Groups.Subgroups.Definition open import Groups.Subgroups.Normal.Definition module Groups.Examples.Examples where trivialGroup : Group (reflSetoid (FinSet 1)) λ _ _ → fzero Group.+WellDefined trivialGroup _ _ = refl Group.0G trivialGroup = fzero Group.inverse trivialGroup _ = fzero Group.+Associative trivialGroup = refl Group.identRight trivialGroup {fzero} = refl Group.identRight trivialGroup {fsucc ()} Group.identLeft trivialGroup {fzero} = refl Group.identLeft trivialGroup {fsucc ()} Group.invLeft trivialGroup = refl Group.invRight trivialGroup = refl elementPowZ : (n : ℕ) → (elementPower ℤGroup (nonneg 1) (nonneg n)) ≡ nonneg n elementPowZ zero = refl elementPowZ (succ n) rewrite elementPowZ n = refl ℤCyclic : CyclicGroup ℤGroup CyclicGroup.generator ℤCyclic = nonneg 1 CyclicGroup.cyclic ℤCyclic {nonneg x} = (nonneg x , elementPowZ x) CyclicGroup.cyclic ℤCyclic {negSucc x} = (negSucc x , ans) where ans : (Group.inverse ℤGroup ((nonneg 1) +Z elementPower ℤGroup (nonneg 1) (nonneg x))) ≡ negSucc x ans rewrite elementPowZ x = refl elementPowZn : (n : ℕ) → {pr : 0