Skip to content

Commit de0314d

Browse files
authored
Theory of Symmetric Groups (#1187)
* Theory of Symmetric Groups * Removed a trailing whitespace * Imported `_$_` * Forgot to import from `Cubical.Foundations.Isomorphism` * Forgot to import univalence * Compatibility with #1184 `LehmerCode` no longer exports `factorial` * import `Foundations.Structure` * fix
1 parent 2422a13 commit de0314d

File tree

1 file changed

+77
-13
lines changed

1 file changed

+77
-13
lines changed

Cubical/Algebra/SymmetricGroup.agda

Lines changed: 77 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,87 @@ module Cubical.Algebra.SymmetricGroup where
44
open import Cubical.Foundations.Prelude
55
open import Cubical.Foundations.Equiv
66
open import Cubical.Foundations.HLevels
7+
open import Cubical.Foundations.Function
8+
open import Cubical.Foundations.Isomorphism
9+
open import Cubical.Foundations.Univalence
10+
open import Cubical.Foundations.Structure
711
open import Cubical.Data.Sigma
8-
open import Cubical.Data.Nat using (ℕ ; suc ; zero)
9-
open import Cubical.Data.Fin using (Fin ; isSetFin)
10-
open import Cubical.Data.Empty
11-
open import Cubical.Relation.Nullary using (¬_)
12+
open import Cubical.Data.Nat
13+
open import Cubical.Data.SumFin
14+
open import Cubical.Data.Empty as Empty
15+
open import Cubical.Data.Bool
16+
open import Cubical.Data.Unit
1217

1318
open import Cubical.Algebra.Group
19+
open import Cubical.Algebra.Group.Morphisms
20+
open import Cubical.Algebra.Group.MorphismProperties
21+
open import Cubical.Algebra.Group.GroupPath
22+
open import Cubical.Algebra.Group.Instances.Bool
23+
open import Cubical.Algebra.Group.Instances.Unit
1424

15-
private
16-
variable
17-
: Level
25+
private variable
26+
ℓ ℓ' : Level
27+
X Y : Type ℓ
1828

19-
Symmetric-Group : (X : Type ℓ) isSet X Group ℓ
20-
Symmetric-Group X isSetX = makeGroup (idEquiv X) compEquiv invEquiv (isOfHLevel≃ 2 isSetX isSetX)
21-
compEquiv-assoc compEquivEquivId compEquivIdEquiv invEquiv-is-rinv invEquiv-is-linv
29+
SymGroup : (X : Type ℓ) isSet X Group ℓ
30+
SymGroup X isSetX = makeGroup {G = X ≃ X} (idEquiv X) compEquiv invEquiv
31+
(isOfHLevel≃ 2 isSetX isSetX)
32+
compEquiv-assoc
33+
compEquivEquivId
34+
compEquivIdEquiv
35+
invEquiv-is-rinv
36+
invEquiv-is-linv
2237

23-
-- Finite symmetrics groups
38+
FinSymGroup : Group₀
39+
FinSymGroup n = SymGroup (Fin n) isSetFin
2440

25-
Sym : Group _
26-
Sym n = Symmetric-Group (Fin n) isSetFin
41+
Sym0≃1 : GroupEquiv (FinSymGroup 0) UnitGroup₀
42+
Sym0≃1 = contrGroupEquivUnit $ inhProp→isContr (idEquiv _) $ isOfHLevel≃ 1 isProp⊥ isProp⊥
43+
44+
Sym0≡1 : FinSymGroup 0 ≡ UnitGroup₀
45+
Sym0≡1 = uaGroup Sym0≃1
46+
47+
Sym1≃1 : GroupEquiv (FinSymGroup 1) UnitGroup₀
48+
Sym1≃1 = contrGroupEquivUnit $ isOfHLevel≃ 0 isContrSumFin1 isContrSumFin1
49+
50+
Sym1≡1 : FinSymGroup 1 ≡ UnitGroup₀
51+
Sym1≡1 = uaGroup Sym1≃1
52+
53+
Sym2≃Bool : GroupEquiv (FinSymGroup 2) BoolGroup
54+
Sym2≃Bool = GroupIso→GroupEquiv $ invGroupIso $ ≅Bool $
55+
Fin 2 ≃ Fin 2 Iso⟨ equivCompIso SumFin2≃Bool SumFin2≃Bool ⟩
56+
Bool ≃ Bool Iso⟨ invIso univalenceIso ⟩
57+
Bool ≡ Bool Iso⟨ invIso reflectIso ⟩
58+
Bool ∎Iso
59+
where open BoolReflection
60+
61+
Sym2≡Bool : FinSymGroup 2 ≡ BoolGroup
62+
Sym2≡Bool = uaGroup Sym2≃Bool
63+
64+
SymUnit≃Unit : GroupEquiv (SymGroup Unit isSetUnit) UnitGroup₀
65+
SymUnit≃Unit = contrGroupEquivUnit $ isOfHLevel≃ 0 isContrUnit isContrUnit
66+
67+
SymUnit≡Unit : SymGroup Unit isSetUnit ≡ UnitGroup₀
68+
SymUnit≡Unit = uaGroup SymUnit≃Unit
69+
70+
SymBool≃Bool : GroupEquiv (SymGroup Bool isSetBool) BoolGroup
71+
SymBool≃Bool = GroupIso→GroupEquiv $ invGroupIso $ ≅Bool $
72+
Bool ≃ Bool Iso⟨ invIso univalenceIso ⟩
73+
Bool ≡ Bool Iso⟨ invIso reflectIso ⟩
74+
Bool ∎Iso
75+
where open BoolReflection
76+
77+
SymBool≡Bool : SymGroup Bool isSetBool ≡ BoolGroup
78+
SymBool≡Bool = uaGroup SymBool≃Bool
79+
80+
module _ (n : ℕ) where
81+
82+
⟨Sym⟩≃factorial : ⟨ FinSymGroup n ⟩ ≃ Fin (n !)
83+
⟨Sym⟩≃factorial = SumFin≃≃ n
84+
85+
⟨Sym⟩≡factorial : ⟨ FinSymGroup n ⟩ ≡ Fin (n !)
86+
⟨Sym⟩≡factorial = ua ⟨Sym⟩≃factorial
87+
88+
Sym-cong-≃ : isSetX isSetY X ≃ Y GroupEquiv (SymGroup X isSetX) (SymGroup Y isSetY)
89+
Sym-cong-≃ isSetX isSetY e .fst = equivComp e e
90+
Sym-cong-≃ isSetX isSetY e .snd = makeIsGroupHom λ g h sym $ equivEq $ funExt λ x cong (e .fst ∘ h .fst) (retEq e _)

0 commit comments

Comments
 (0)