n
th homotopy group #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We define the n
th homotopy group at x : X
, π_n X x
, as the equivalence classes
of functions from the n
-dimensional cube to the topological space X
that send the boundary to the base point x
, up to homotopic equivalence.
Note that such functions are generalized loops gen_loop (fin n) x
; in particular
gen_loop (fin 1) x ≃ path x x
.
We show that π_0 X x
is equivalent to the path-connected components, and
that π_1 X x
is equivalent to the fundamental group at x
.
We provide a group instance using path composition and show commutativity when n > 1
.
definitions #
gen_loop N x
is the type of continuous fuctionsI^N → X
that send the boundary tox
,homotopy_group.pi n X x
denotedπ_ n X x
is the quotient ofgen_loop (fin n) x
by homotopy relative to the boundary,- group instance
group (π_(n+1) X x)
, - commutative group instance
comm_group (π_(n+2) X x)
.
TODO:
Ω^M (Ω^N X) ≃ₜ Ω^(M⊕N) X
, andΩ^M X ≃ₜ Ω^N X
whenM ≃ N
. Similarly forπ_
.- Path-induced homomorphisms. Show that
homotopy_group.pi_1_equiv_fundamental_group
is a group isomorphism. - Examples with
𝕊^n
:π_n (𝕊^n) = ℤ
,π_m (𝕊^n)
trivial form < n
. - Actions of π_1 on π_n.
- Lie algebra:
⁅π_(n+1), π_(m+1)⁆
contained inπ_(n+m+1)
.
The points in a cube with at least one projection equal to 0 or 1.
Equations
- cube.boundary N = {y : N → ↥unit_interval | ∃ (i : N), y i = 0 ∨ y i = 1}
The forward direction of the homeomorphism between the cube $I^N$ and $I × I^{N\setminus\{j\}}$.
Equations
The backward direction of the homeomorphism between the cube $I^N$ and $I × I^{N\setminus\{j\}}$.
Equations
The space of paths with both endpoints equal to a specified point x : X
.
Equations
- loop_space X x = path x x
Equations
- loop_space.inhabited X x = {default := path.refl x}
The n
-dimensional generalized loops based at x
in a space X
are
continuous functions I^n → X
that sends the boundary to x
.
We allow an arbitrary indexing type N
in place of fin n
here.
Equations
Instances for ↥gen_loop
Copy of a gen_loop
with a new map from the unit cube equal to the old one.
Useful to fix definitional equalities.
Equations
- gen_loop.copy f g h = ⟨{to_fun := g, continuous_to_fun := _}, _⟩
Equations
- gen_loop.fun_like = {coe := λ (f : ↥(gen_loop N X x)), ⇑(f.val), coe_injective' := _}
The constant gen_loop
at x
.
Equations
- gen_loop.const = ⟨continuous_map.const (N → ↥unit_interval) x, _⟩
Equations
The "homotopic relative to boundary" relation between gen_loop
s.
Equations
- gen_loop.homotopic f g = f.val.homotopic_rel g.val (cube.boundary N)
Equations
- gen_loop.homotopic.setoid N x = {r := gen_loop.homotopic x, iseqv := _}
Loop from a generalized loop by currying $I^N → X$ into $I → (I^{N\setminus\{j\}} → X)$.
Equations
- gen_loop.to_loop i p = {to_continuous_map := {to_fun := λ (t : ↥unit_interval), ⟨⇑((p.val.comp (cube.insert_at i).to_continuous_map).curry) t, _⟩, continuous_to_fun := _}, source' := _, target' := _}
Generalized loop from a loop by uncurrying $I → (I^{N\setminus\{j\}} → X)$ into $I^N → X$.
Equations
- gen_loop.from_loop i p = ⟨({to_fun := coe coe_to_lift, continuous_to_fun := _}.comp p.to_continuous_map).uncurry.comp (cube.split_at i).to_continuous_map, _⟩
The n+1
-dimensional loops are in bijection with the loops in the space of
n
-dimensional loops with base point const
.
We allow an arbitrary indexing type N
in place of fin n
here.
Equations
- gen_loop.loop_homeo i = {to_equiv := {to_fun := gen_loop.to_loop i, inv_fun := gen_loop.from_loop i, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
Composition with cube.insert_at
as a continuous map.
Equations
- gen_loop.c_comp_insert i = {to_fun := λ (f : C(N → ↥unit_interval, X)), f.comp (cube.insert_at i).to_continuous_map, continuous_to_fun := _}
A homotopy between n+1
-dimensional loops p
and q
constant on the boundary
seen as a homotopy between two paths in the space of n
-dimensional paths.
Equations
- gen_loop.homotopy_to i H = ({to_fun := continuous_map.curry _inst_1, continuous_to_fun := _}.comp ((gen_loop.c_comp_insert i).comp H.to_homotopy.to_continuous_map.curry)).uncurry
The converse to gen_loop.homotopy_to
: a homotopy between two loops in the space of
n
-dimensional loops can be seen as a homotopy between two n+1
-dimensional paths.
Equations
- gen_loop.homotopy_from i H = ({to_fun := continuous_map.uncurry _, continuous_to_fun := _}.comp ({to_fun := coe coe_to_lift, continuous_to_fun := _}.comp H.to_homotopy.to_continuous_map).curry).uncurry.comp ((continuous_map.id ↥unit_interval).prod_map (cube.split_at i).to_continuous_map)
Concatenation of two gen_loop
s along the i
th coordinate.
Equations
- gen_loop.trans_at i f g = gen_loop.copy (gen_loop.from_loop i (path.trans (gen_loop.to_loop i f) (gen_loop.to_loop i g))) (λ (t : N → ↥unit_interval), ite (↑(t i) ≤ 1 / 2) (⇑f (function.update t i (set.proj_Icc 0 1 gen_loop.trans_at._proof_1 (2 * ↑(t i))))) (⇑g (function.update t i (set.proj_Icc 0 1 gen_loop.trans_at._proof_2 (2 * ↑(t i) - 1))))) _
Reversal of a gen_loop
along the i
th coordinate.
Equations
- gen_loop.symm_at i f = gen_loop.copy (gen_loop.from_loop i (path.symm (gen_loop.to_loop i f))) (λ (t : N → ↥unit_interval), ⇑f (λ (j : N), ite (j = i) (unit_interval.symm (t i)) (t j))) _
The n
th homotopy group at x
defined as the quotient of Ω^n x
by the
gen_loop.homotopic
relation.
Equations
- homotopy_group N X x = quotient (gen_loop.homotopic.setoid N x)
Instances for homotopy_group
Equivalence between the homotopy group of X and the fundamental group of
Ω^{j // j ≠ i} x
.
Homotopy group of finite index.
Equations
- homotopy_group.pi n X x = homotopy_group (fin n) X x
The 0-dimensional generalized loops based at x
are in bijection with X
.
Equations
- gen_loop_homeo_of_is_empty N x = {to_equiv := {to_fun := λ (f : ↥(gen_loop N X x)), ⇑f 0, inv_fun := λ (y : X), ⟨continuous_map.const (N → ↥unit_interval) y, _⟩, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
The homotopy "group" indexed by an empty type is in bijection with
the path components of X
, aka the zeroth_homotopy
.
Equations
The 0th homotopy "group" is in bijection with zeroth_homotopy
.
The 1-dimensional generalized loops based at x
are in bijection with loops at x
.
Equations
- gen_loop_equiv_of_unique N = {to_fun := λ (p : ↥(gen_loop N X x)), {to_continuous_map := {to_fun := λ (t : ↥unit_interval), ⇑p (λ (_x : N), t), continuous_to_fun := _}, source' := _, target' := _}, inv_fun := λ (p : loop_space X x), ⟨{to_fun := λ (c : N → ↥unit_interval), ⇑p (c inhabited.default), continuous_to_fun := _}, _⟩, left_inv := _, right_inv := _}
The homotopy group at x
indexed by a singleton is in bijection with the fundamental group,
i.e. the loops based at x
up to homotopy.
The first homotopy group at x
is in bijection with the fundamental group.
Group structure on homotopy_group N X x
for nonempty N
(in particular π_(n+1) X x
).
Equations
Group structure on homotopy_group
obtained by pulling back path composition along the
i
th direction. The group structures for two different i j : N
distribute over each
other, and therefore are equal by the Eckmann-Hilton argument.
Equations
Characterization of multiplicative identity
Characterization of multiplication
Characterization of multiplicative inverse
Multiplication on homotopy_group N X x
is commutative for nontrivial N
.
In particular, multiplication on π_(n+2)
is commutative.
Equations
- homotopy_group.comm_group = let h : ∃ (y : N), y ≠ classical.arbitrary N := homotopy_group.comm_group._proof_1 in eckmann_hilton.comm_group homotopy_group.comm_group._proof_2 homotopy_group.comm_group._proof_3