module Algebra.Group.Homotopy whereprivate variable
β : Level
A B C : Typeβ βHomotopy groupsπ
For positive
we can give the iterated loop space
a Group structure, obtained by truncating the higher groupoid
structure that
is equipped with. We call the sequence
the homotopy groups of
but remark that the indexing used by Οβββ is off by 1: Οβββ 0 A
is the fundamental group
Οβββ : Nat β Typeβ β β Group β
Οβββ n t = to-group omega where
omega : make-group β₯ Ξ©βΏ (suc n) t .fst β₯β
omega .make-group.group-is-set = squash
omega .make-group.unit = inc refl
omega .make-group.mul = β₯-β₯β-mapβ _β_
omega .make-group.inv = β₯-β₯β-map symAs mentioned above, the group structure is given entirely by the
groupoid structure of types: The neutral element is refl, the group operation is path concatenation, and
the inverses are given by inverting paths.
omega .make-group.assoc = elim! Ξ» x y z i β inc (β-assoc x y z i)
omega .make-group.invl = elim! Ξ» x i β inc (β-invl x i)
omega .make-group.idl = elim! Ξ» x i β inc (β-idl x i)Οβββ-ap
: β {β} {A B : Typeβ β} n (e : A ββ B)
β Οβββ n A Groups.β
Οβββ n B
Οβββ-ap n e = total-iso (β₯-β₯β-ap (Ξ©βΏ-ap (suc n) e .fst)) record
{ pres-β = elim! Ξ» q r β ap β₯_β₯β.inc (Ξ©βΏ-map-β n (Equivβ.toβ e) _ _) }
Οβββ-map
: β {β β'} {A : Typeβ β} {B : Typeβ β'} n (f : A ββ B)
β β Οβββ n A β β β Οβββ n B β
Οβββ-map n f = β₯-β₯β-map (Ξ©βΏ-map (suc n) f .fst)
opaque
Οβ-def
: β {β} (A : Typeβ β) n
β (β Οβββ n A β , inc refl) ββ Ξ©βΏ (suc n) (n-Trβ A (suc (n + 2)))
Οβ-def A n = n-Tr-set βe n-Tr-Ξ©βΏ A 1 (suc n) .fst , n-Tr-Ξ©βΏ A 1 (suc n) .snd
Οβ-def-inc
: β {β} (A : Typeβ β) n β (l : β Ξ©βΏ (1 + n) A β)
β Οβ-def A n Β· inc l β‘ Ξ©βΏ-map (1 + n) incβ Β· l
Οβ-def-inc A n l = n-Tr-Ξ©βΏ-inc A 1 (suc n) Β·β l
Οβ-def-β
: β {β} (A : Typeβ β) n β (p q : β Ξ©βΏ (1 + n) A β)
β Οβ-def A n Β· inc (p β q) β‘ Οβ-def A n Β· inc p β Οβ-def A n Β· inc q
Οβ-def-β A = n-Tr-Ξ©βΏ-β A 1A direct cubical transcription of the Eckmann-Hilton argument tells us that path concatenation for is commutative, independent of
Ξ©βΏβΊΒ²-is-abelian
: β {β} {A : Typeβ β} (n : Nat) (p q : Ξ©βΏ (2 + n) A .fst)
β p β q β‘ q β p
Ξ©βΏβΊΒ²-is-abelian n p q =
transport
(Ξ» k β ap (Ξ» x β β-idr x k) p β ap (Ξ» x β β-idl x k) q
β‘ ap (Ξ» x β β-idl x k) q β ap (Ξ» x β β-idr x k) p)
(Ξ» i β (Ξ» j β p (j β§ ~ i) β q (j β§ i))
β (Ξ» j β p (~ i β¨ j) β q (i β¨ j)))The proof can be visualized with the following diagram, where the
vertices are in
The outer rectangle shows p β q β‘ q β p, which is filled by
transporting the two inner squares using β-idr on p j and β-idl on q j. Note that
β-idr refl and β-idl refl are definitionally
equal. In the two inner squares, p j and q j
are on different sides of the path composition, so we can use the De
Morgan structure on the interval to have p and
q slip by each other.
Lifting this result through the set truncation establishes that is an Abelian group:
Οβββ-is-abelian-group : β {β} {A : Typeβ β} (n : Nat)
β Group-on-is-abelian (Οβββ (1 + n) A .snd)
Οβββ-is-abelian-group {A = A} n =
elim! Ξ» x y i β inc (Ξ©βΏβΊΒ²-is-abelian n x y i)We can give an alternative construction of the fundamental group for types that are known to be groupoids: in that case, we can avoid using a set truncation since the loop space is already a set.
module ΟβGroupoid {β} ((T , t) : Typeβ β) (grpd : is-groupoid T) where
private
mk : make-group (t β‘ t)
mk .make-group.group-is-set = grpd t t
mk .make-group.unit = refl
mk .make-group.mul = _β_
mk .make-group.inv = sym
mk .make-group.assoc = β-assoc
mk .make-group.invl = β-invl
mk .make-group.idl = β-idl
on-Ξ© : Group-on (t β‘ t)
on-Ξ© = to-group-on mk
Οβ : Group β
Οβ = to-group mk
Οββ‘Οβββ : Οβ Groups.β
Οβββ 0 (T , t)
Οββ‘Οβββ = total-iso (inc , β₯-β₯β-idempotent (grpd _ _)) (record { pres-β = Ξ» x y β refl })