Symmetric groups
Content created by Egbert Rijke, Fredrik Bakke, Eléonore Mangel, Jonathan Prieto-Cubides, Elisabeth Stenholm and favonia.
Created on 2022-03-17.
Last modified on 2024-03-11.
module group-theory.symmetric-groups where
Imports
open import foundation.action-on-identifications-functions open import foundation.automorphisms open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.function-extensionality open import foundation.identity-types open import foundation.sets open import foundation.subtypes open import foundation.universe-levels open import group-theory.concrete-groups open import group-theory.groups open import group-theory.homomorphisms-groups open import group-theory.homomorphisms-semigroups open import group-theory.isomorphisms-groups open import group-theory.monoids open import group-theory.opposite-groups open import group-theory.semigroups open import group-theory.symmetric-concrete-groups
Definitions
set-symmetric-Group : {l : Level} (X : Set l) → Set l set-symmetric-Group X = Aut-Set X type-symmetric-Group : {l : Level} (X : Set l) → UU l type-symmetric-Group X = type-Set (set-symmetric-Group X) is-set-type-symmetric-Group : {l : Level} (X : Set l) → is-set (type-symmetric-Group X) is-set-type-symmetric-Group X = is-set-type-Set (set-symmetric-Group X) has-associative-mul-aut-Set : {l : Level} (X : Set l) → has-associative-mul-Set (Aut-Set X) pr1 (has-associative-mul-aut-Set X) f e = f ∘e e pr2 (has-associative-mul-aut-Set X) e f g = associative-comp-equiv g f e symmetric-Semigroup : {l : Level} (X : Set l) → Semigroup l pr1 (symmetric-Semigroup X) = set-symmetric-Group X pr2 (symmetric-Semigroup X) = has-associative-mul-aut-Set X is-unital-Semigroup-symmetric-Semigroup : {l : Level} (X : Set l) → is-unital-Semigroup (symmetric-Semigroup X) pr1 (is-unital-Semigroup-symmetric-Semigroup X) = id-equiv pr1 (pr2 (is-unital-Semigroup-symmetric-Semigroup X)) = left-unit-law-equiv pr2 (pr2 (is-unital-Semigroup-symmetric-Semigroup X)) = right-unit-law-equiv is-group-symmetric-Semigroup' : {l : Level} (X : Set l) → is-group-is-unital-Semigroup ( symmetric-Semigroup X) ( is-unital-Semigroup-symmetric-Semigroup X) pr1 (is-group-symmetric-Semigroup' X) = inv-equiv pr1 (pr2 (is-group-symmetric-Semigroup' X)) = left-inverse-law-equiv pr2 (pr2 (is-group-symmetric-Semigroup' X)) = right-inverse-law-equiv symmetric-Group : {l : Level} → Set l → Group l pr1 (symmetric-Group X) = symmetric-Semigroup X pr1 (pr2 (symmetric-Group X)) = is-unital-Semigroup-symmetric-Semigroup X pr2 (pr2 (symmetric-Group X)) = is-group-symmetric-Semigroup' X
Properties
If two sets are equivalent, then their symmetric groups are isomorphic
module _ {l1 l2 : Level} (X : Set l1) (Y : Set l2) (e : type-Set X ≃ type-Set Y) where hom-symmetric-group-equiv-Set : hom-Group (symmetric-Group X) (symmetric-Group Y) pr1 hom-symmetric-group-equiv-Set f = e ∘e (f ∘e inv-equiv e) pr2 hom-symmetric-group-equiv-Set {f} {g} = ( eq-equiv-eq-map-equiv refl) ∙ ( ap ( λ h → e ∘e f ∘e h ∘e g ∘e inv-equiv e) ( inv (left-inverse-law-equiv e))) ∙ ( eq-equiv-eq-map-equiv refl) hom-inv-symmetric-group-equiv-Set : hom-Group (symmetric-Group Y) (symmetric-Group X) pr1 hom-inv-symmetric-group-equiv-Set f = inv-equiv e ∘e f ∘e e pr2 hom-inv-symmetric-group-equiv-Set {f} {g} = ( eq-equiv-eq-map-equiv refl) ∙ ( ap ( λ h → inv-equiv e ∘e f ∘e h ∘e g ∘e e) ( inv (right-inverse-law-equiv e))) ∙ ( eq-equiv-eq-map-equiv refl) is-section-hom-inv-symmetric-group-equiv-Set : Id ( comp-hom-Group ( symmetric-Group Y) ( symmetric-Group X) ( symmetric-Group Y) ( hom-symmetric-group-equiv-Set) ( hom-inv-symmetric-group-equiv-Set)) ( id-hom-Group (symmetric-Group Y)) is-section-hom-inv-symmetric-group-equiv-Set = eq-type-subtype ( preserves-mul-prop-Semigroup ( semigroup-Group (symmetric-Group Y)) ( semigroup-Group (symmetric-Group Y))) ( eq-htpy ( λ f → ( eq-equiv-eq-map-equiv refl) ∙ ( ap (λ h → h ∘e f ∘e h) (right-inverse-law-equiv e)) ∙ ( eq-equiv-eq-map-equiv refl))) is-retraction-hom-inv-symmetric-group-equiv-Set : Id ( comp-hom-Group ( symmetric-Group X) ( symmetric-Group Y) ( symmetric-Group X) ( hom-inv-symmetric-group-equiv-Set) ( hom-symmetric-group-equiv-Set)) ( id-hom-Group (symmetric-Group X)) is-retraction-hom-inv-symmetric-group-equiv-Set = eq-type-subtype ( preserves-mul-prop-Semigroup ( semigroup-Group (symmetric-Group X)) ( semigroup-Group (symmetric-Group X))) ( eq-htpy ( λ f → ( eq-equiv-eq-map-equiv refl) ∙ ( ap (λ h → h ∘e f ∘e h) (left-inverse-law-equiv e)) ∙ ( eq-equiv-eq-map-equiv refl))) iso-symmetric-group-equiv-Set : iso-Group (symmetric-Group X) (symmetric-Group Y) pr1 iso-symmetric-group-equiv-Set = hom-symmetric-group-equiv-Set pr1 (pr2 iso-symmetric-group-equiv-Set) = hom-inv-symmetric-group-equiv-Set pr1 (pr2 (pr2 iso-symmetric-group-equiv-Set)) = is-section-hom-inv-symmetric-group-equiv-Set pr2 (pr2 (pr2 iso-symmetric-group-equiv-Set)) = is-retraction-hom-inv-symmetric-group-equiv-Set
The symmetric group and the abstract automorphism group of a set are isomorphic
module _ {l1 : Level} (A : Set l1) where equiv-compute-symmetric-Concrete-Group : type-Concrete-Group (symmetric-Concrete-Group A) ≃ type-symmetric-Group A equiv-compute-symmetric-Concrete-Group = extensionality-classifying-type-symmetric-Concrete-Group A ( shape-symmetric-Concrete-Group A) ( shape-symmetric-Concrete-Group A) map-compute-symmetric-Concrete-Group : type-Concrete-Group (symmetric-Concrete-Group A) → type-symmetric-Group A map-compute-symmetric-Concrete-Group = equiv-eq-classifying-type-symmetric-Concrete-Group A ( shape-symmetric-Concrete-Group A) ( shape-symmetric-Concrete-Group A) preserves-mul-compute-symmetric-Concrete-Group : preserves-mul-Group ( op-group-Concrete-Group (symmetric-Concrete-Group A)) ( symmetric-Group A) ( map-compute-symmetric-Concrete-Group) preserves-mul-compute-symmetric-Concrete-Group {x} {y} = preserves-mul-equiv-eq-classifying-type-symmetric-Concrete-Group A ( shape-symmetric-Concrete-Group A) ( shape-symmetric-Concrete-Group A) ( shape-symmetric-Concrete-Group A) ( x) ( y) equiv-group-compute-symmetric-Concrete-Group : equiv-Group ( op-group-Concrete-Group (symmetric-Concrete-Group A)) ( symmetric-Group A) pr1 equiv-group-compute-symmetric-Concrete-Group = equiv-compute-symmetric-Concrete-Group pr2 equiv-group-compute-symmetric-Concrete-Group {x} {y} = preserves-mul-compute-symmetric-Concrete-Group {x} {y} compute-symmetric-Concrete-Group' : iso-Group ( op-group-Concrete-Group (symmetric-Concrete-Group A)) ( symmetric-Group A) compute-symmetric-Concrete-Group' = iso-equiv-Group ( op-group-Concrete-Group (symmetric-Concrete-Group A)) ( symmetric-Group A) ( equiv-group-compute-symmetric-Concrete-Group) compute-symmetric-Concrete-Group : iso-Group ( group-Concrete-Group (symmetric-Concrete-Group A)) ( symmetric-Group A) compute-symmetric-Concrete-Group = comp-iso-Group ( group-Concrete-Group (symmetric-Concrete-Group A)) ( op-group-Concrete-Group (symmetric-Concrete-Group A)) ( symmetric-Group A) ( compute-symmetric-Concrete-Group') ( iso-inv-Group (group-Concrete-Group (symmetric-Concrete-Group A)))
Recent changes
- 2024-03-11. Fredrik Bakke. Refactor category theory to use strictly involutive identity types (#1052).
- 2024-01-28. Fredrik Bakke. Equivalence injective type families (#1009).
- 2023-11-24. Fredrik Bakke. The orbit category of a group (#935).
- 2023-11-24. Egbert Rijke. Abelianization (#877).
- 2023-11-04. Fredrik Bakke. Small fixes concrete groups (#897).