@@ -33,8 +33,6 @@ We provide a group instance using path composition and show commutativity when `
3333
3434 TODO:
3535* `Ω^M (Ω^N X) ≃ₜ Ω^(M⊕N) X`, and `Ω^M X ≃ₜ Ω^N X` when `M ≃ N`. Similarly for `π_`.
36- * Path-induced homomorphisms. Show that `HomotopyGroup.pi1EquivFundamentalGroup`
37- is a group isomorphism.
3836* Examples with `𝕊^n`: `π_n (𝕊^n) = ℤ`, `π_m (𝕊^n)` trivial for `m < n`.
3937* Actions of π_1 on π_n.
4038* Lie algebra: `⁅π_(n+1), π_(m+1)⁆` contained in `π_(n+m+1)`.
@@ -527,6 +525,17 @@ def homotopyGroupEquivFundamentalGroupOfUnique (N) [Unique N] :
527525def HomotopyGroup.pi1EquivFundamentalGroup : π_ 1 X x ≃ FundamentalGroup X x :=
528526 homotopyGroupEquivFundamentalGroupOfUnique (Fin 1 )
529527
528+ lemma HomotopyGroup.genLoopEquivOfUnique_transAt (N) [DecidableEq N] [Unique N] (p q : Ω^ N X x) :
529+ genLoopEquivOfUnique _ (transAt default q p) =
530+ (genLoopEquivOfUnique _ q).trans (genLoopEquivOfUnique _ p) := by
531+ ext t
532+ simp only [genLoopEquivOfUnique, GenLoop.transAt, GenLoop.copy,
533+ one_div, Equiv.coe_fn_mk, GenLoop.mk_apply, ContinuousMap.coe_mk, Path.coe_mk', Path.trans,
534+ Function.comp_apply]
535+ refine ite_congr rfl (fun _ ↦ congrArg q ?_)
536+ fun _ ↦ congrArg p ?_
537+ <;> (ext i; rw [Unique.eq_default i]; simp)
538+
530539namespace HomotopyGroup
531540
532541/-- Group structure on `HomotopyGroup N X x` for nonempty `N` (in particular `π_(n+1) X x`). -/
@@ -595,4 +604,23 @@ instance commGroup [Nontrivial N] : CommGroup (HomotopyGroup N X x) :=
595604 simp only [fromLoop_trans_toLoop, transAt_distrib <| Classical.choose_spec h, coe_toEquiv,
596605 loopHomeo_apply, coe_symm_toEquiv, loopHomeo_symm_apply])
597606
607+ /-- The homotopy group at `x` indexed by a singleton is isomorphic to the fundamental group,
608+ i.e. the loops based at `x` up to homotopy. -/
609+ def homotopyGroupOfUniqueMulEquivFundamentalGroup (N) [Unique N] :
610+ HomotopyGroup N X x ≃* FundamentalGroup X x where
611+ toEquiv := homotopyGroupEquivFundamentalGroupOfUnique N
612+ map_mul' a b := Quotient.inductionOn₂ a b fun p q => by
613+ simp only [HomotopyGroup.mul_spec (i := default)]
614+ apply Quotient.sound
615+ simp [genLoopEquivOfUnique_transAt]
616+
617+ /-- The first homotopy group at `x` is isomorphic to the fundamental group. -/
618+ def pi1MulEquivFundamentalGroup :
619+ π_ 1 X x ≃* FundamentalGroup X x where
620+ toEquiv := HomotopyGroup.pi1EquivFundamentalGroup (X := X) (x := x)
621+ map_mul' a b := Quotient.inductionOn₂ a b fun p q => by
622+ simp only [HomotopyGroup.mul_spec (i := (0 : Fin 1 ))]
623+ apply Quotient.sound
624+ rw [Unique.eq_default 0 , genLoopEquivOfUnique_transAt]
625+
598626end HomotopyGroup
0 commit comments