Skip to content

Commit 4dd9d0a

Browse files
2 parents ed4ec59 + 53c68dd commit 4dd9d0a

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

Mathlib/Topology/Homotopy/HomotopyGroup.lean

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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] :
527525
def 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+
530539
namespace 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+
598626
end HomotopyGroup

lake-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
"type": "git",
6666
"subDir": null,
6767
"scope": "leanprover-community",
68-
"rev": "5d0b29ae9ec365780781387af35eb3e4c2cc466d",
68+
"rev": "cb2f99b967518958fcfb60da6862b4cbce49da8c",
6969
"name": "batteries",
7070
"manifestFile": "lake-manifest.json",
7171
"inputRev": "deprecate-string-legacy",

0 commit comments

Comments
 (0)