The cube modulo its boundary is a sphere #
Mathlib's homotopy groups π_ n X x are built from generalized loops, maps I^n → X sending the
boundary of the cube to x. The classical description of πₙ(X, x) is by pointed maps
(Sⁿ, s₀) → (X, x) from the sphere, and the two are related by the homeomorphism
Iⁿ / ∂Iⁿ ≅ Sⁿ. This file constructs that homeomorphism, for the unit sphere of
EuclideanSpace ℝ (Fin (n + 1)) pointed at its north pole e_last, and transfers generalized
loops, their homotopies and their homotopy classes to pointed maps out of the sphere.
The map from the Euclidean closed unit ball of ℝⁿ to the unit sphere of ℝⁿ⁺¹ is
x ↦ (2 √(1 - ‖x‖²) x, 2 ‖x‖² - 1), the last coordinate being the height
(TauCeti.closedBallToSphere). It sends the centre to the south pole -e_last, collapses the
boundary sphere to the north pole e_last, and is injective on the open ball. The cube map
TauCeti.cubeToSphere precomposes it with the homeomorphism TauCeti.diskHomeomorphCube of the
disk onto the cube, the one through which TauCeti.cubeBoundaryPair and the Hurewicz maps are
compared with the disk. In positive dimension it is surjective, hence a quotient map since the
cube is compact, and it induces the homeomorphism
TauCeti.cubeQuotientHomeomorphSphere : Iⁿ / ∂Iⁿ ≃ₜ Sⁿ, where Iⁿ / ∂Iⁿ is the quotient by the
relation TauCeti.cubeBoundarySetoid identifying all boundary points.
A generalized loop p therefore descends to a pointed map GenLoop.toSphere p out of the sphere,
and GenLoop.sphereEquiv identifies generalized loops with pointed maps. Two generalized loops are
homotopic relative to the boundary of the cube exactly when the corresponding maps are homotopic
relative to the north pole (GenLoop.homotopic_iff_toSphere), so πₙ(X, x) is the set of
pointed homotopy classes of maps (Sⁿ, e_last) → (X, x) (HomotopyGroup.sphereEquiv). The
identification is natural in based maps (GenLoop.toSphere_map). A class is trivial exactly
when its map out of the sphere is null-homotopic, by a free homotopy that need not fix the north
pole (HomotopyGroup.mk_eq_one_iff_nullhomotopic_toSphere).
Main declarations #
TauCeti.sphereNorthPole: the north polee_lastof the unit sphere ofEuclideanSpace ℝ (Fin (n + 1)).TauCeti.closedBallToSphere: the closed unit ball ofℝⁿmodulo its boundary is the sphere, withTauCeti.closedBallToSphere_eq_closedBallToSphere_iffandTauCeti.closedBallToSphere_surjective.TauCeti.cubeToSphere: the same for the cubeI^n, a quotient map in positive dimension (TauCeti.isQuotientMap_cubeToSphere) collapsing exactly the boundary (TauCeti.cubeToSphere_eq_cubeToSphere_iff,TauCeti.cubeToSphere_eq_sphereNorthPole_iff).TauCeti.liftProdCubeToSphere: a family of maps out of the cube, parametrised byIand constant on the boundary at each time, as a family of maps out of the sphere.TauCeti.cubeQuotientHomeomorphSphere: the pointed homeomorphismIⁿ / ∂Iⁿ ≃ₜ Sⁿ.TauCeti.sphereGenLoop:TauCeti.cubeToSphereas a generalized loop of the sphere.GenLoop.toSphereandGenLoop.sphereEquiv: generalized loops are pointed maps out of the sphere;pis the image ofTauCeti.sphereGenLoopunderGenLoop.toSphere p(GenLoop.map_toSphere_sphereGenLoop).GenLoop.diskBoundaryMap: the mapGenLoop.toSphere pwith its source written as Mathlib's sphereTopCat.diskBoundary (n + 1), the attaching map of a cell killing⟦p⟧.GenLoop.diskMap: a generalized loopγof dimensionnread on the disk𝔻 n, the map ontoγof a sphere formed by attaching ann-cell along a constant map.GenLoop.homotopic_iff_toSphereandHomotopyGroup.sphereEquiv: homotopy relative to the boundary of the cube is homotopy relative to the north pole, andπₙ(X, x)is the set of pointed homotopy classes of mapsSⁿ → X, the classes ofTauCeti.pointedHomotopySetoid.TauCeti.GenLoop.HomotopyAlong.homotopic_toSphere: a homotopy of generalized loops along a path is a free homotopy of the corresponding maps out of the sphere.HomotopyGroup.mk_eq_one_iff_nullhomotopic_toSphere: a class is trivial exactly when the corresponding mapSⁿ → Xis freely null-homotopic.
References #
- A. Hatcher, Algebraic Topology,
Section 4.1, where
πₙ(X, x₀)is described both by maps(Iⁿ, ∂Iⁿ) → (X, x₀)and, throughIⁿ / ∂Iⁿ = Sⁿ, by maps(Sⁿ, s₀) → (X, x₀).
The north pole e_last of the unit sphere of EuclideanSpace ℝ (Fin (n + 1)): the last
standard basis vector.
Instances For
A point of the unit sphere is the north pole exactly when its height is one.
A point of the unit sphere has height less than one exactly when it is not the north pole.
The closed unit ball modulo its boundary is the sphere. The map from the closed unit ball
of ℝⁿ to the unit sphere of ℝⁿ⁺¹ sending x to (2 √(1 - ‖x‖²) x, 2 ‖x‖² - 1), the last
coordinate being the height. It sends the centre to the south pole, collapses the boundary sphere
to the north pole (TauCeti.closedBallToSphere_eq_sphereNorthPole_iff), is injective on the open
ball (TauCeti.closedBallToSphere_eq_closedBallToSphere_iff) and is surjective in positive
dimension (TauCeti.closedBallToSphere_surjective).
Instances For
TauCeti.closedBallToSphere sends exactly the boundary sphere to the north pole.
TauCeti.closedBallToSphere identifies exactly the points of the boundary sphere: it is
injective on the open ball, and its value there is not the north pole.
TauCeti.closedBallToSphere is surjective in positive dimension: the north pole is the image
of the boundary sphere, which is nonempty, and every other point of the sphere has an explicit
preimage in the open ball.
The cube modulo its boundary is the sphere. The map from the cube I^n to the unit sphere
of EuclideanSpace ℝ (Fin (n + 1)) given by TauCeti.closedBallToSphere after the inverse of the
homeomorphism TauCeti.diskHomeomorphCube of the Euclidean disk onto the cube. It collapses
exactly the boundary of the cube, to the north pole (TauCeti.cubeToSphere_eq_sphereNorthPole_iff,
TauCeti.cubeToSphere_eq_cubeToSphere_iff), and is a quotient map in positive dimension
(TauCeti.isQuotientMap_cubeToSphere).
Instances For
TauCeti.cubeToSphere sends exactly the boundary of the cube to the north pole.
TauCeti.cubeToSphere identifies exactly the points of the boundary of the cube.
The tautological generalized loop of the sphere: TauCeti.cubeToSphere, which sends the
boundary of the cube to the north pole, as a generalized loop at the north pole. Every generalized
loop p is its image under the pointed map GenLoop.toSphere p
(GenLoop.map_toSphere_sphereGenLoop).
Instances For
TauCeti.cubeToSphere is surjective in positive dimension.
TauCeti.cubeToSphere is a quotient map in positive dimension: it is a continuous surjection
from the compact cube onto the Hausdorff sphere.
The product of the identity of I with TauCeti.cubeToSphere is a quotient map in positive
dimension, as a continuous surjection from a compact space onto a Hausdorff space.
A family of maps out of the cube, parametrised by I and constant on the boundary of the cube
at each time, as a family of maps out of the sphere: the map I × Sⁿ → X through which it factors
along TauCeti.cubeToSphere (TauCeti.liftProdCubeToSphere_apply). It turns homotopies of
generalized loops, and homotopies of them along paths, into homotopies of maps out of the
sphere.
Instances For
The cube modulo its boundary is homeomorphic to the sphere, by the map induced by
TauCeti.cubeToSphere. It is pointed: the class of the boundary goes to the north pole.
Instances For
TauCeti.cubeQuotientHomeomorphSphere is pointed: it sends the class of the boundary of the
cube to the north pole.
The inverse of TauCeti.cubeQuotientHomeomorphSphere sends the north pole to the class of the
boundary of the cube, represented by its corner 0.
A generalized loop I^n → X, constant on the boundary of the cube, descends along
TauCeti.cubeToSphere to a map out of the unit sphere of EuclideanSpace ℝ (Fin (n + 1))
(GenLoop.toSphere_cubeToSphere), sending the north pole to the base point
(GenLoop.toSphere_sphereNorthPole).
Instances For
The pointed map out of the sphere of the image of a generalized loop under a based map is the composite.
Every generalized loop is an image of the tautological loop: p is the image of
TauCeti.sphereGenLoop n under the pointed map GenLoop.toSphere p out of the sphere.
The constant generalized loop corresponds to the constant map out of the sphere.
Generalized loops are pointed maps out of the sphere. The bijection between generalized
loops (I^n, ∂I^n) → (X, x) and pointed maps (Sⁿ, e_last) → (X, x) out of the unit sphere of
EuclideanSpace ℝ (Fin (n + 1)), given by GenLoop.toSphere and by precomposition with
TauCeti.cubeToSphere.
Instances For
Homotopies of generalized loops are pointed homotopies of maps out of the sphere. Two generalized loops are homotopic relative to the boundary of the cube exactly when the corresponding maps out of the sphere are homotopic relative to the north pole.
A homotopy of generalized loops along a path is a free homotopy of maps out of the
sphere. If h is a homotopy from f to g whose boundary traces a path from the base point of
f to that of g, then the corresponding maps out of the sphere are homotopic.
The attaching map ∂𝔻 (n + 1) ⟶ X of the (n + 1)-cell that kills the class of a generalized
loop p: the pointed map Sⁿ → X corresponding to p (GenLoop.toSphere), with its source
written as Mathlib's sphere TopCat.diskBoundary (n + 1).
Instances For
The attaching map of the image of a generalized loop under a based map is the attaching map of the loop followed by the map.
A generalized loop γ of dimension n, read on the disk 𝔻 n through
TauCeti.diskHomeomorphCube. When TopCat.diskBoundary n is attached at x along a constant
map, this is the map onto γ of the resulting sphere.
Instances For
A generalized loop at x, read on the disk, is constant at x on the boundary sphere.
Homotopy groups are pointed homotopy classes of maps out of spheres. The bijection
between πₙ(X, x) and the pointed homotopy classes of maps (Sⁿ, e_last) → (X, x) out of the unit
sphere of EuclideanSpace ℝ (Fin (n + 1)), induced by GenLoop.sphereEquiv.
Instances For
A homotopy class is trivial exactly when its sphere map is null-homotopic. The class of a
generalized loop p is the identity of πₙ(X, x) if and only if the corresponding map
GenLoop.toSphere p : Sⁿ → X is freely homotopic to a constant map.
A homotopy class is trivial exactly when its attaching map is null-homotopic. The class of
a generalized loop p is the identity of πₙ(X, x) if and only if the map
GenLoop.diskBoundaryMap p : ∂𝔻 (n + 1) ⟶ X, along which a cell kills that class, is freely
null-homotopic.
A based map kills a class exactly when it extends the attaching map over a disk. The image
of the class of p under a based map f is the identity exactly when the attaching map
GenLoop.diskBoundaryMap p followed by f is null-homotopic.