Skip to content
The Lumenary
First-year graduateGraduate 150 min

Homotopy theory

Spaces up to deformation — higher homotopy groups, fibrations and their exact sequences, the Hopf map that links every pair of its fibres, and the theorems of Hurewicz, Whitehead and Freudenthal.

Formally verified · 9 LeanComputationally tested · 1 PythonAI-drafted · awaiting human reviewMathematically reviewed: Awaiting human review
MotivationH

A map that cannot be undone

In 1931 Heinz Hopf wrote down a map h:S3→S2h : S^3 \to S^2 and proved that it cannot be deformed to a constant map. This was a surprise. Homology sees nothing: H3(S2)=0H_3(S^2) = 0, so every map S3→S2S^3 \to S^2 induces zero on H3H_3. Yet Hopf's map is essential, and the reason is geometric: the preimages of any two points of S2S^2 are two circles in S3S^3 that are linked, like two rings of a chain.

Homotopy theory studies spaces and maps up to continuous deformation. Its basic invariants, the homotopy groups πn(X)\pi_n(X), are defined just like the fundamental group, with nn-spheres in place of loops. They are easy to define and fiendishly hard to compute — not even the homotopy groups of spheres are known in general:

πn+k(Sn)\pi_{n+k}(S^n)n=1n = 1n=2n = 2n=3n = 3n=4n = 4n=5n = 5n≥6n \ge 6
k=0k = 0Z\ZZ\ZZ\ZZ\ZZ\ZZ\Z
k=1k = 100Z\ZZ/2\Z/2Z/2\Z/2Z/2\Z/2Z/2\Z/2
k=2k = 200Z/2\Z/2Z/2\Z/2Z/2\Z/2Z/2\Z/2Z/2\Z/2
k=3k = 300Z/2\Z/2Z/12\Z/12Z⊕Z/12\Z \oplus \Z/12Z/24\Z/24Z/24\Z/24

(Toda, 1962.) This lesson develops the tools that produce such tables: fibrations and their long exact sequences, the Hopf fibration, and the theorems of Hurewicz, Whitehead and Freudenthal that connect homotopy to homology and stabilise it. It assumes the fundamental group and covering spaces and algebraic topology (homology and CW complexes).

IntuitionH

Room to move

An element of πn(X,x0)\pi_n(X, x_0) is a map from the cube InI^n to XX sending the whole boundary to the base point — an nn-dimensional "balloon" pinned at x0x_0 — up to deformation. Two such maps are added by placing their cubes side by side along the first coordinate and squashing. For n=1n = 1 this is concatenation of loops, which is not commutative in general.

For n≥2n \ge 2 there is room to move. Shrink ff into the bottom-left corner and gg into the top-right corner (the rest of the cube goes to x0x_0), slide them past each other, and expand again: f+gf + g becomes g+fg + f.

fgfgfggf
Why π₂ is abelian. The sum f + g (left) is deformed by shrinking each map into a smaller square, sliding the squares past each other through the region that maps to the base point, and expanding again, giving g + f (right).

The second idea is that homotopy groups behave well for fibrations — maps p:E→Bp : E \to B that look, up to homotopy, like projections of a product, though they may be globally twisted. A fibration with fibre FF gives a long exact sequence linking π∙(F)\pi_\bullet(F), π∙(E)\pi_\bullet(E) and π∙(B)\pi_\bullet(B). Covering spaces are fibrations with discrete fibres; the Hopf map is a fibration with fibre S1S^1, and its exact sequence computes π3(S2)\pi_3(S^2).

DefinitionsH

Definitions

Spaces have base points, maps preserve them, and homotopies fix them; [X,Y]∗[X, Y]_* denotes based homotopy classes of based maps.

Definition— homotopy groups

For n≥0n \ge 0, πn(X,x0)\pi_n(X, x_0) is the set of homotopy classes of maps f:(In,∂In)→(X,x0)f : (I^n, \partial I^n) \to (X, x_0), homotopies being through such maps. Equivalently, since In/∂In≅SnI^n / \partial I^n \cong S^n, πn(X,x0)=[(Sn,∗),(X,x0)]∗\pi_n(X, x_0) = [(S^n, *), (X, x_0)]_*. For n≥1n \ge 1 it is a group under

(f+g)(s1,…,sn)={f(2s1,s2,…,sn)s1≤12,g(2s1−1,s2,…,sn)s1≥12,(f + g)(s_1, \dots, s_n) = \begin{cases} f(2 s_1, s_2, \dots, s_n) & s_1 \le \tfrac12, \\ g(2 s_1 - 1, s_2, \dots, s_n) & s_1 \ge \tfrac12, \end{cases}

with identity the constant map and inverse f(1−s1,s2,…,sn)f(1 - s_1, s_2, \dots, s_n). π0(X)\pi_0(X) is the set of path components and π1\pi_1 is the fundamental group. A based map φ:X→Y\varphi : X \to Y induces homomorphisms φ∗[f]=[φ∘f]\varphi_*[f] = [\varphi \circ f].

Definition— n-connected; weak homotopy equivalence

XX is nn-connected if πk(X,x0)=0\pi_k(X, x_0) = 0 for 0≤k≤n0 \le k \le n (so 00-connected means path connected and 11-connected means simply connected). A map φ:X→Y\varphi : X \to Y is a weak homotopy equivalence if it induces bijections πn(X,x0)→πn(Y,φ(x0))\pi_n(X, x_0) \to \pi_n(Y, \varphi(x_0)) for all n≥0n \ge 0 and all base points.

Definition— fibration

A map p:E→Bp : E \to B has the homotopy lifting property for a space XX if for every homotopy G:X×I→BG : X \times I \to B and every map g~0:X→E\tilde g_0 : X \to E with p∘g~0=G0p \circ \tilde g_0 = G_0 there is a homotopy G~:X×I→E\tilde G : X \times I \to E with p∘G~=Gp \circ \tilde G = G and G~0=g~0\tilde G_0 = \tilde g_0. It is a (Hurewicz) fibration if this holds for all spaces XX, and a Serre fibration if it holds for all discs DnD^n (equivalently, all CW complexes). The fibre over b0b_0 is F=p−1(b0)F = p^{-1}(b_0), and we write F→E→BF \to E \to B.

Definition— fibre bundle

A fibre bundle with fibre FF is a map p:E→Bp : E \to B such that every point of BB has a neighbourhood UU with a homeomorphism p−1(U)≅U×Fp^{-1}(U) \cong U \times F over UU. Every fibre bundle is a Serre fibration (Hatcher, Proposition 4.48), and a fibre bundle over a paracompact base is a Hurewicz fibration (Hurewicz, 1955).

Definition— suspension and loop space

The reduced suspension ΣX\Sigma X is X×IX \times I with X×{0,1}∪{x0}×IX \times \{0, 1\} \cup \{x_0\} \times I collapsed to a point; ΣSn≅Sn+1\Sigma S^n \cong S^{n+1}. The loop space ΩX\Omega X is the space of based loops in XX (compact-open topology). They are adjoint: [ΣX,Y]∗≅[X,ΩY]∗[\Sigma X, Y]_* \cong [X, \Omega Y]_*, and in particular πn+1(Y)≅πn(ΩY)\pi_{n+1}(Y) \cong \pi_n(\Omega Y).

Definition— Eilenberg–MacLane space

For a group GG and n≥1n \ge 1 (with GG abelian if n≥2n \ge 2), an Eilenberg–MacLane space K(G,n)K(G, n) is a connected CW complex with πn≅G\pi_n \cong G and πk=0\pi_k = 0 for k≠nk \neq n.

Worked examplesH

Examples

Example— Easy cases

  • If XX is contractible, πn(X)=0\pi_n(X) = 0 for all nn.
  • πn(X×Y,(x0,y0))≅πn(X,x0)×πn(Y,y0)\pi_n(X \times Y, (x_0, y_0)) \cong \pi_n(X, x_0) \times \pi_n(Y, y_0): a map into a product is a pair of maps, and likewise for homotopies.
  • πn(Sn)≅Z\pi_n(S^n) \cong \Z for n≥1n \ge 1, detected by the degree (proved below via Hurewicz). The identity map generates.
  • πk(Sn)=0\pi_k(S^n) = 0 for k<nk \lt n (Theorem 5).

Example— Spheres are not determined by dimension

Higher homotopy groups do not vanish above the dimension: π3(S2)≅Z\pi_3(S^2) \cong \Z (Theorem 7), and Serre showed in the early 1950s that πk(Sn)\pi_k(S^n) is non-zero for infinitely many kk when n≥2n \ge 2. So a 22-dimensional CW complex can have non-zero homotopy groups in infinitely many degrees, whereas its homology vanishes above degree 22.

Example— Eilenberg–MacLane spaces you know

  • K(Z,1)=S1K(\Z, 1) = S^1: its universal cover R\R is contractible, so πn(S1)=0\pi_n(S^1) = 0 for n≥2n \ge 2 (Corollary 4).
  • K(π1(Mg),1)=MgK(\pi_1(M_g), 1) = M_g for a closed orientable surface of genus g≥1g \ge 1, whose universal cover is the plane.
  • K(Z/2,1)=RP∞K(\Z/2, 1) = \R P^\infty, covered by the contractible sphere S∞S^\infty.
  • K(Z,2)=CP∞K(\Z, 2) = \C P^\infty, from the fibration S1→S∞→CP∞S^1 \to S^\infty \to \C P^\infty and the long exact sequence.
ProofH

Homotopy groups and fibrations

Theorem— Theorem 1 (higher homotopy groups are abelian)

For n≥1n \ge 1, πn(X,x0)\pi_n(X, x_0) is a group, and for n≥2n \ge 2 it is abelian.

Proof

The group axioms are checked exactly as for π1\pi_1, using reparametrisations in the first coordinate. For n≥2n \ge 2 define a second operation +2+_2 by concatenating in the second coordinate; write +1+_1 for the first. Both have the constant map cc as identity. They satisfy the interchange law

(f+1g)+2(h+1k)=(f+2h)+1(g+2k)(f +_1 g) +_2 (h +_1 k) = (f +_2 h) +_1 (g +_2 k)

on the nose: both sides are the map on InI^n that is ff, gg, hh, kk on the four quarters {s1≤12,s2≤12}\{s_1 \le \tfrac12, s_2 \le \tfrac12\}, {s1≥12,s2≤12}\{s_1 \ge \tfrac12, s_2 \le \tfrac12\}, {s1≤12,s2≥12}\{s_1 \le \tfrac12, s_2 \ge \tfrac12\}, {s1≥12,s2≥12}\{s_1 \ge \tfrac12, s_2 \ge \tfrac12\}, suitably rescaled. Now the Eckmann–Hilton argument, which uses nothing but the two unit laws and the interchange law (writing ee for the common unit [c][c]):

a+1b=(a+2e)+1(e+2b)=(a+1e)+2(e+1b)=a+2b,a +_1 b = (a +_2 e) +_1 (e +_2 b) = (a +_1 e) +_2 (e +_1 b) = a +_2 b,a+1b=(e+2a)+1(b+2e)=(e+1b)+2(a+1e)=b+2a=b+1a.a +_1 b = (e +_2 a) +_1 (b +_2 e) = (e +_1 b) +_2 (a +_1 e) = b +_2 a = b +_1 a .

(In general one first shows that the two units agree, by the same trick: e1=e1+1e1=(e2+2e1)+1(e1+2e2)=(e2+1e1)+2(e1+1e2)=e2+2e2=e2e_1 = e_1 +_1 e_1 = (e_2 +_2 e_1) +_1 (e_1 +_2 e_2) = (e_2 +_1 e_1) +_2 (e_1 +_1 e_2) = e_2 +_2 e_2 = e_2.) So the two operations coincide on πn\pi_n and are commutative.

∎

For n=1n = 1 there is only one coordinate, the argument has nothing to work with, and indeed π1\pi_1 of the figure eight is a non-abelian free group.

Theorem— Theorem 2 (covering spaces are fibrations)

A covering map p:X~→Xp : \tilde X \to X has the homotopy lifting property for all spaces, with unique lifts.

This is the homotopy lifting theorem for covering spaces from the fundamental group lesson (Hatcher, Proposition 1.30): lift along each slice {x}×I\{x\} \times I using unique path lifting, and check continuity locally using evenly covered neighbourhoods.

Theorem— Theorem 3 (long exact sequence of a fibration)

Let p:E→Bp : E \to B be a Serre fibration, b0∈Bb_0 \in B, F=p−1(b0)F = p^{-1}(b_0) and e0∈Fe_0 \in F. There is a long exact sequence

⋯→πn(F,e0)→i∗πn(E,e0)→p∗πn(B,b0)→∂πn−1(F,e0)→⋯→π0(F)→π0(E)→π0(B),\cdots \to \pi_n(F, e_0) \xrightarrow{i_*} \pi_n(E, e_0) \xrightarrow{p_*} \pi_n(B, b_0) \xrightarrow{\partial} \pi_{n-1}(F, e_0) \to \cdots \to \pi_0(F) \to \pi_0(E) \to \pi_0(B),

where the last three terms are only pointed sets and exactness there means that preimages of the base point are images.

Proof

The boundary map. Represent [f]∈πn(B,b0)[f] \in \pi_n(B, b_0) by f:In→Bf : I^n \to B with f(∂In)=b0f(\partial I^n) = b_0, and view In=In−1×II^n = I^{n-1} \times I as a homotopy of maps In−1→BI^{n-1} \to B. Lift it, starting from the constant map e0e_0 on In−1×{0}I^{n-1} \times \{0\} and remaining e0e_0 on ∂In−1×I\partial I^{n-1} \times I; such relative lifts exist for Serre fibrations, because (In−1×I, In−1×{0}∪∂In−1×I)(I^{n-1} \times I,\ I^{n-1} \times \{0\} \cup \partial I^{n-1} \times I) is homeomorphic to (In−1×I, In−1×{0})(I^{n-1} \times I,\ I^{n-1} \times \{0\}). The lift f~\tilde f maps the top face In−1×{1}I^{n-1} \times \{1\} into p−1(b0)=Fp^{-1}(b_0) = F and its boundary to e0e_0, and ∂[f]\partial [f] is its class in πn−1(F,e0)\pi_{n-1}(F, e_0). Well-definedness follows by lifting homotopies one dimension higher.

Exactness at πn(E)\pi_n(E). First p∗i∗=0p_* i_* = 0, since p∘ip \circ i is constant. Conversely, let f:(In,∂In)→(E,e0)f : (I^n, \partial I^n) \to (E, e_0) and suppose p∘fp \circ f is null-homotopic through a homotopy G:In×I→BG : I^n \times I \to B with G0=p∘fG_0 = p \circ f, G1≡b0G_1 \equiv b_0 and G(∂In×I)=b0G(\partial I^n \times I) = b_0. Lift GG to G~\tilde G with G~0=f\tilde G_0 = f and G~=e0\tilde G = e_0 on ∂In×I\partial I^n \times I. Then G~1\tilde G_1 maps InI^n into p−1(b0)=Fp^{-1}(b_0) = F with boundary at e0e_0, and G~\tilde G is a homotopy from ff to G~1\tilde G_1 through maps of (In,∂In)(I^n, \partial I^n). So [f]=i∗[G~1][f] = i_*[\tilde G_1].

Exactness at the other two places is proved by the same lifting technique; equivalently, p∗:πn(E,F,e0)→πn(B,b0)p_* : \pi_n(E, F, e_0) \to \pi_n(B, b_0) is an isomorphism and the sequence is the long exact sequence of the pair (E,F)(E, F) (Hatcher, Theorem 4.41).

∎

Theorem— Corollary 4 (covering spaces)

If p:X~→Xp : \tilde X \to X is a covering map, then p∗:πn(X~)→πn(X)p_* : \pi_n(\tilde X) \to \pi_n(X) is an isomorphism for n≥2n \ge 2. In particular πn(S1)=0\pi_n(S^1) = 0, πn(Tk)=0\pi_n(T^k) = 0 for n≥2n \ge 2, and πn(RPm)≅πn(Sm)\pi_n(\R P^m) \cong \pi_n(S^m) for n≥2n \ge 2.

Proof

The fibre is discrete, so πk(F)=0\pi_k(F) = 0 for k≥1k \ge 1, and the exact sequence 0=πn(F)→πn(X~)→πn(X)→πn−1(F)=00 = \pi_n(F) \to \pi_n(\tilde X) \to \pi_n(X) \to \pi_{n-1}(F) = 0 (for n≥2n \ge 2) gives the isomorphism. Apply it to R→S1\R \to S^1, Rk→Tk\R^k \to T^k (contractible covers) and Sm→RPmS^m \to \R P^m.

∎

Theorem— Theorem 5 (spheres are highly connected)

πk(Sn)=0\pi_k(S^n) = 0 for 0≤k<n0 \le k \lt n.

Proof

By the cellular approximation theorem (Hatcher, Theorem 4.8), every map between CW complexes is homotopic to a cellular one, i.e. one sending the kk-skeleton into the kk-skeleton; the homotopy can be taken relative to a subcomplex on which the map is already cellular, such as the base point. Give SkS^k and SnS^n the cell structures e0∪eke^0 \cup e^k and e0∪ene^0 \cup e^n. A cellular map Sk→SnS^k \to S^n sends SkS^k into the kk-skeleton of SnS^n, which for k<nk \lt n is the single point e0e^0. So every based map Sk→SnS^k \to S^n is based-homotopic to a constant.

∎

ProofH

The Hopf fibration and π₃(S²)

Regard S3={(z,w)∈C2:∣z∣2+∣w∣2=1}S^3 = \{ (z, w) \in \C^2 : |z|^2 + |w|^2 = 1 \} and S2⊂C×R≅R3S^2 \subset \C \times \R \cong \R^3. The Hopf map is

h(z,w)=(2zwˉ, ∣z∣2−∣w∣2).h(z, w) = \big( 2 z \bar w,\ |z|^2 - |w|^2 \big).

Theorem— Theorem 6 (the Hopf fibration)

hh maps S3S^3 onto S2S^2; its fibres are exactly the circles {(λz,λw):∣λ∣=1}\{ (\lambda z, \lambda w) : |\lambda| = 1 \}; and hh is a fibre bundle with fibre S1S^1. Under stereographic projection S2∖{(0,1)}≅CS^2 \setminus \{(0, 1)\} \cong \C it is the map (z,w)↦z/w(z, w) \mapsto z / w, so hh is the quotient map S3→CP1≅S2S^3 \to \C P^1 \cong S^2.

Proof

Into S2S^2: ∣2zwˉ∣2+(∣z∣2−∣w∣2)2=4∣z∣2∣w∣2+(∣z∣2−∣w∣2)2=(∣z∣2+∣w∣2)2=1|2 z \bar w|^2 + (|z|^2 - |w|^2)^2 = 4|z|^2|w|^2 + (|z|^2 - |w|^2)^2 = (|z|^2 + |w|^2)^2 = 1.

Constant on circles: h(λz,λw)=(2λλˉzwˉ,∣λ∣2(∣z∣2−∣w∣2))=h(z,w)h(\lambda z, \lambda w) = (2 \lambda \bar\lambda z \bar w, |\lambda|^2(|z|^2 - |w|^2)) = h(z, w) when ∣λ∣=1|\lambda| = 1.

Fibres are exactly circles: suppose h(z,w)=h(z′,w′)h(z, w) = h(z', w') for two points of S3S^3. The second coordinates and ∣z∣2+∣w∣2=∣z′∣2+∣w′∣2=1|z|^2 + |w|^2 = |z'|^2 + |w'|^2 = 1 give ∣z∣=∣z′∣|z| = |z'| and ∣w∣=∣w′∣|w| = |w'|; the first gives zwˉ=z′wˉ′z \bar w = z' \bar w'. Put λ=z′zˉ+w′wˉ\lambda = z' \bar z + w' \bar w. Then

λz=z′∣z∣2+w′(zwˉ)=z′∣z∣2+w′z′wˉ′=z′(∣z∣2+∣w′∣2)=z′(∣z∣2+∣w∣2)=z′,\lambda z = z' |z|^2 + w' (z \bar w) = z' |z|^2 + w' z' \bar w' = z' (|z|^2 + |w'|^2) = z' (|z|^2 + |w|^2) = z',

and symmetrically (using zˉw=zˉ′w′\bar z w = \bar z' w') λw=w′\lambda w = w'. Finally 1=∣z′∣2+∣w′∣2=∣λ∣2(∣z∣2+∣w∣2)=∣λ∣21 = |z'|^2 + |w'|^2 = |\lambda|^2 (|z|^2 + |w|^2) = |\lambda|^2.

Stereographic form: projecting from (0,1)(0, 1), a point (v,t)(v, t) goes to v/(1−t)v / (1 - t); here 1−t=1−∣z∣2+∣w∣2=2∣w∣21 - t = 1 - |z|^2 + |w|^2 = 2|w|^2, so h(z,w)↦2zwˉ/(2∣w∣2)=z/wh(z, w) \mapsto 2 z \bar w / (2 |w|^2) = z / w. Onto, and locally trivial: over U=S2∖{(0,1)}U = S^2 \setminus \{(0, 1)\}, i.e. where w≠0w \neq 0, the map h−1(U)→U×S1h^{-1}(U) \to U \times S^1, (z,w)↦(h(z,w),w/∣w∣)(z, w) \mapsto (h(z, w), w / |w|), is a homeomorphism with inverse (q,μ)↦μ (q,1)/1+∣q∣2(q, \mu) \mapsto \mu\,(q, 1)/\sqrt{1 + |q|^2} in the stereographic coordinate q=z/wq = z / w; this also shows that every q∈Cq \in \C is hit. Over S2∖{(0,−1)}S^2 \setminus \{(0, -1)\} use z/∣z∣z / |z| instead.

∎

Theorem— Theorem 7 (Hopf, 1931)

π2(S2)≅Z\pi_2(S^2) \cong \Z, and πn(S2)≅πn(S3)\pi_n(S^2) \cong \pi_n(S^3) for n≥3n \ge 3. In particular π3(S2)≅Z\pi_3(S^2) \cong \Z, generated by the class of hh.

Proof

The long exact sequence of the fibration S1→S3→hS2S^1 \to S^3 \xrightarrow{h} S^2 contains

πn(S1)→πn(S3)→h∗πn(S2)→∂πn−1(S1).\pi_n(S^1) \to \pi_n(S^3) \xrightarrow{h_*} \pi_n(S^2) \xrightarrow{\partial} \pi_{n-1}(S^1) .

For n≥3n \ge 3 both ends vanish by Corollary 4, so h∗h_* is an isomorphism — this is the algebraic lemma bijective_of_exact formalised below. For n=2n = 2 the sequence reads π2(S3)→π2(S2)→π1(S1)→π1(S3)\pi_2(S^3) \to \pi_2(S^2) \to \pi_1(S^1) \to \pi_1(S^3), with outer terms zero by Theorem 5, so π2(S2)≅π1(S1)≅Z\pi_2(S^2) \cong \pi_1(S^1) \cong \Z. Finally π3(S3)≅Z\pi_3(S^3) \cong \Z is generated by [id][\mathrm{id}] (Corollary 9 below), and h∗[id]=[h]h_*[\mathrm{id}] = [h].

∎

The Hopf invariant gives a direct geometric reason. For a smooth map f:S3→S2f : S^3 \to S^2, the preimages of two regular values are disjoint closed curves (possibly with several components), and their linking number H(f)H(f) does not depend on the choices and is a homotopy invariant; H:π3(S2)→ZH : \pi_3(S^2) \to \Z is an isomorphism with H(h)=1H(h) = 1 (Bott and Tu, §17). The experiment below computes the linking numbers of Hopf fibres numerically. The same construction with quaternions and octonions gives Hopf fibrations S3→S7→S4S^3 \to S^7 \to S^4 and S7→S15→S8S^7 \to S^{15} \to S^8, and Adams proved (1960) that maps S2n−1→SnS^{2n-1} \to S^n of Hopf invariant one exist only for n=2,4,8n = 2, 4, 8. This gives a homotopy-theoretic proof that finite-dimensional real division algebras exist only in dimensions 1,2,4,81, 2, 4, 8 (first proved by Kervaire and by Bott and Milnor in 1958; for normed division algebras the result goes back to Hurwitz, 1898).

ProofH

Hurewicz, Whitehead, Freudenthal and Eilenberg–MacLane

These are the structural theorems of the subject. We state them precisely and show how they are used; their proofs occupy Chapter 4 of Hatcher.

Theorem— Theorem 8 (Whitehead, 1949)

A weak homotopy equivalence between connected CW complexes is a homotopy equivalence. More generally, if φ:X→Y\varphi : X \to Y is a map of CW complexes inducing isomorphisms on all πn\pi_n, there is ψ:Y→X\psi : Y \to X with ψφ≃idX\psi\varphi \simeq \mathrm{id}_X and φψ≃idY\varphi\psi \simeq \mathrm{id}_Y.

The CW hypothesis matters. The Warsaw circle (the closed topologist's sine curve, closed up by an arc) has all homotopy groups trivial, so the map to a point is a weak homotopy equivalence; but it is not contractible (its Čech cohomology detects the "circle").

Theorem— Theorem 9 (Hurewicz, 1935)

Let XX be (n−1)(n - 1)-connected with n≥2n \ge 2. Then H~k(X)=0\tilde H_k(X) = 0 for k<nk \lt n, and the Hurewicz map πn(X)→Hn(X)\pi_n(X) \to H_n(X), [f]↦f∗(fundamental class of Sn)[f] \mapsto f_*(\text{fundamental class of } S^n), is an isomorphism. For n=1n = 1 and path-connected XX, π1(X)ab≅H1(X)\pi_1(X)^{\mathrm{ab}} \cong H_1(X).

Theorem— Corollary 10

(a) πn(Sn)≅Z\pi_n(S^n) \cong \Z for n≥1n \ge 1, generated by the identity; a map Sn→SnS^n \to S^n is classified up to homotopy by its degree. (b) Homology Whitehead theorem: a map between simply connected CW complexes that induces isomorphisms on all homology groups is a homotopy equivalence.

Proof

(a) SnS^n is (n−1)(n - 1)-connected by Theorem 5, so πn(Sn)≅Hn(Sn)≅Z\pi_n(S^n) \cong H_n(S^n) \cong \Z by Theorem 9 (n≥2n \ge 2; for n=1n = 1 use π1(S1)≅Z\pi_1(S^1) \cong \Z). The Hurewicz map sends [f][f] to deg⁡(f)\deg(f) times the generator. (b) Sketch: make φ\varphi cellular and replace YY by the mapping cylinder so that φ\varphi is an inclusion of a subcomplex; then H∙(Y,X)=0H_\bullet(Y, X) = 0. The relative Hurewicz theorem for the simply connected pair (Y,X)(Y, X) (Hatcher, Theorem 4.32) shows inductively that πn(Y,X)=0\pi_n(Y, X) = 0 for all nn, so φ\varphi is a weak equivalence by the long exact sequence of the pair, and Theorem 8 applies.

∎

Simple connectivity cannot be dropped in (b): if Σ\Sigma is Poincaré's homology sphere, a degree-one map Σ→S3\Sigma \to S^3 (collapse the complement of a small ball) induces isomorphisms on all homology groups, but π1(Σ)\pi_1(\Sigma) has order 120120, so it is not a homotopy equivalence.

Theorem— Theorem 11 (Freudenthal suspension theorem, 1937)

If XX is an (n−1)(n - 1)-connected CW complex, the suspension map πi(X)→πi+1(ΣX)\pi_i(X) \to \pi_{i+1}(\Sigma X) is an isomorphism for i<2n−1i \lt 2n - 1 and surjective for i=2n−1i = 2n - 1. In particular πn+k(Sn)→πn+k+1(Sn+1)\pi_{n+k}(S^n) \to \pi_{n+k+1}(S^{n+1}) is an isomorphism for n>k+1n \gt k + 1.

So each column of the table in the motivation stabilises: the stable homotopy groups of spheres πks=lim⁡nπn+k(Sn)\pi_k^s = \lim_n \pi_{n+k}(S^n) begin Z,Z/2,Z/2,Z/24,0,0,Z/2,Z/240\Z, \Z/2, \Z/2, \Z/24, 0, 0, \Z/2, \Z/240. For example, π3(S2)≅Z→π4(S3)\pi_3(S^2) \cong \Z \to \pi_4(S^3) is onto (the case i=2n−1i = 2n - 1 with n=2n = 2), and π4(S3)≅π5(S4)≅⋯≅Z/2\pi_4(S^3) \cong \pi_5(S^4) \cong \dots \cong \Z/2, generated by the suspension of the Hopf map, usually called η\eta. The stable groups are the subject of stable homotopy theory.

Theorem— Theorem 12 (Eilenberg–MacLane spaces)

For every n≥1n \ge 1 and group GG (abelian if n≥2n \ge 2), a K(G,n)K(G, n) exists and is unique up to homotopy equivalence. For CW complexes XX and abelian GG, there is a natural bijection [X,K(G,n)]≅Hn(X;G)[X, K(G, n)] \cong H^n(X; G), sending ff to f∗(ι)f^*(\iota) for a fundamental class ι∈Hn(K(G,n);G)\iota \in H^n(K(G, n); G).

Construction: start with a wedge of nn-spheres, one for each generator of GG, attach (n+1)(n+1)-cells to impose the relations (this gives πn≅G\pi_n \cong G by Hurewicz and cellular approximation), then attach cells of dimension n+2,n+3,…n + 2, n + 3, \dots to kill all higher homotopy groups. Uniqueness comes from Whitehead's theorem, and representability is Hatcher, Theorem 4.57. Thus cohomology is a homotopy-theoretic object: the cup product, for instance, is induced by maps K(G,m)∧K(G′,n)→K(G⊗G′,m+n)K(G, m) \wedge K(G', n) \to K(G \otimes G', m + n). Dually, every connected CW complex is assembled from Eilenberg–MacLane spaces in a Postnikov tower, glued by cohomology classes (kk-invariants).

Formal mathematicsF

Eckmann–Hilton and the Hopf map in Lean

The Eckmann–Hilton argument of Theorem 1 is proved independently, for any set with two unital operations satisfying the interchange law; the calc blocks are the displayed equations of the proof.

eckmann_hiltonLean 4Proved here from basic factsFormally verified
/-- **Eckmann–Hilton.** If a set carries two binary operations `m₁`, `m₂` with units `e₁`, `e₂`
that satisfy the interchange law `(a ·₂ b) ·₁ (c ·₂ d) = (a ·₁ c) ·₂ (b ·₁ d)`, then the units
agree, the operations agree, and the operation is commutative. For `πₙ` with `n ≥ 2`,
concatenation of cubes in two different coordinate directions gives two such operations. -/
theorem eckmann_hilton {M : Type*} (m₁ m₂ : M → M → M) (e₁ e₂ : M)
    (h₁l : ∀ a, m₁ e₁ a = a) (h₁r : ∀ a, m₁ a e₁ = a)
    (h₂l : ∀ a, m₂ e₂ a = a) (h₂r : ∀ a, m₂ a e₂ = a)
    (interchange : ∀ a b c d, m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)) :
    e₁ = e₂ ∧ (∀ a b, m₁ a b = m₂ a b) ∧ (∀ a b, m₁ a b = m₁ b a) := by
  -- the units agree
  have he : e₁ = e₂ :=
    calc e₁ = m₁ e₁ e₁ := (h₁l e₁).symm
      _ = m₁ (m₂ e₂ e₁) (m₂ e₁ e₂) := by rw [h₂l, h₂r]
      _ = m₂ (m₁ e₂ e₁) (m₁ e₁ e₂) := interchange _ _ _ _
      _ = m₂ e₂ e₂ := by rw [h₁r, h₁l]
      _ = e₂ := h₂l e₂
  -- the operations agree
  have hm : ∀ a b, m₁ a b = m₂ a b := fun a b =>
    calc m₁ a b = m₁ (m₂ a e₂) (m₂ e₂ b) := by rw [h₂r, h₂l]
      _ = m₂ (m₁ a e₂) (m₁ e₂ b) := interchange _ _ _ _
      _ = m₂ a b := by rw [← he, h₁r, h₁l]
  refine ⟨he, hm, fun a b => ?_⟩
  -- and the operation is commutative
  calc m₁ a b = m₁ (m₂ e₂ a) (m₂ b e₂) := by rw [h₂l, h₂r]
    _ = m₂ (m₁ e₂ b) (m₁ a e₂) := interchange _ _ _ _
    _ = m₂ b a := by rw [← he, h₁l, h₁r]
    _ = m₁ b a := (hm b a).symm
Axioms used: No axiomsformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor

Mathlib defines πn\pi_n with cubes exactly as in the lesson (HomotopyGroup.Pi n X x, notation π_ n X x), and proves commutativity for n≥2n \ge 2 by the same Eckmann–Hilton argument (EckmannHilton.commGroup), applied to concatenation in two different cube directions. It also identifies the cube version of π1\pi_1 with the fundamental group, and loops of loops with higher loops:

pi_commLean 4Applies a library theoremFormally verified
/-- **Higher homotopy groups are abelian:** `πₙ₊₂(X, x)` is commutative. This uses Mathlib's
instance `HomotopyGroup.commGroup`, which is built with `EckmannHilton.commGroup` from the
interchange law for concatenation in two different cube directions. -/
theorem pi_comm (n : ℕ) (X : Type*) [TopologicalSpace X] (x : X)
    (a b : π_ (n + 2) X x) : a * b = b * a :=
  mul_comm a b
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor
pi_oneLean 4Applies a library theoremFormally verified
/-- `π₁(X, x)`, defined with cubes, is isomorphic as a group to the fundamental group of loops
up to homotopy. This applies Mathlib's `HomotopyGroup.pi1MulEquivFundamentalGroup`. -/
theorem pi_one (X : Type*) [TopologicalSpace X] (x : X) :
    Nonempty (π_ 1 X x ≃* FundamentalGroup X x) :=
  ⟨HomotopyGroup.pi1MulEquivFundamentalGroup⟩
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor
loops_of_loopsLean 4Applies a library theoremFormally verified
/-- **Loops of loops are higher loops:** the space of `M`-cubes in the space of `N`-cubes of `X`
is homeomorphic to the space of `(M ⊕ N)`-cubes of `X`. Taking `M` with one element this is the
statement `Ω(Ωⁿ X) ≅ Ωⁿ⁺¹ X` behind `πₖ(ΩX) ≅ πₖ₊₁(X)`. This applies Mathlib's
`GenLoop.genLoopGenLoopEquiv`. -/
theorem loops_of_loops (M N : Type*) (X : Type*) [TopologicalSpace X] (x : X) :
    Nonempty (Ω^ M (Ω^ N X x) GenLoop.const ≃ₜ Ω^ (M ⊕ N) X x) :=
  ⟨GenLoop.genLoopGenLoopEquiv x⟩
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor

The Hopf map and the first three claims of Theorem 6 are formalised independently. The proof that fibres are exactly circles uses the same λ=z′zˉ+w′wˉ\lambda = z' \bar z + w' \bar w as the human proof; each displayed identity becomes a linear_combination of the hypotheses.

hopfLean 4Formally verified
/-- The **Hopf map** `ℂ² → ℂ × ℝ ≅ ℝ³`, `(z, w) ↦ (2 z w̄, |z|² - |w|²)`. Restricted to the unit
sphere `S³ ⊂ ℂ²` it is the Hopf fibration `S³ → S²`. -/
noncomputable def hopf (p : ℂ × ℂ) : ℂ × ℝ :=
  (2 * p.1 * conj p.2, Complex.normSq p.1 - Complex.normSq p.2)
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor
hopf_mem_sphereLean 4Proved here from basic factsFormally verified
/-- The Hopf map sends `S³` to `S²`: if `|z|² + |w|² = 1` then
`|2 z w̄|² + (|z|² - |w|²)² = 4|z|²|w|² + (|z|² - |w|²)² = (|z|² + |w|²)² = 1`. -/
theorem hopf_mem_sphere (z w : ℂ) (h : Complex.normSq z + Complex.normSq w = 1) :
    Complex.normSq (hopf (z, w)).1 + (hopf (z, w)).2 ^ 2 = 1 := by
  simp only [hopf, Complex.normSq_mul, Complex.normSq_conj]
  have h2 : Complex.normSq 2 = 4 := by norm_num [Complex.normSq_apply]
  rw [h2]
  linear_combination (Complex.normSq z + Complex.normSq w + 1) * h
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor
hopf_circle_invariantLean 4Proved here from basic factsFormally verified
/-- The Hopf map is constant on circles: multiplying `(z, w)` by a unit complex number `λ`
does not change `hopf (z, w)`, because `λ λ̄ = |λ|² = 1`. -/
theorem hopf_circle_invariant (l z w : ℂ) (hl : Complex.normSq l = 1) :
    hopf (l * z, l * w) = hopf (z, w) := by
  have hc : l * conj l = 1 := by rw [Complex.mul_conj, hl, Complex.ofReal_one]
  unfold hopf
  ext
  · -- first component: `2 (λz) conj(λw) = 2 z w̄ · λλ̄`
    simp only [map_mul]
    linear_combination (2 * z * conj w) * hc
  · -- second component: `|λz|² - |λw|² = |λ|² (|z|² - |w|²)`
    simp only [Complex.normSq_mul, hl, one_mul]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor
hopf_fibreLean 4Proved here from basic factsFormally verified
/-- **The fibres of the Hopf map are exactly circles.** If two points `(z, w)` and `(z', w')` of
`S³` have the same image, then `(z', w') = λ · (z, w)` for a unit complex number `λ`; one can
take the Hermitian inner product `λ = z' z̄ + w' w̄`. Together with `hopf_circle_invariant`, the
fibre over each point of `S²` is a great circle of `S³`. -/
theorem hopf_fibre (z w z' w' : ℂ) (hs : Complex.normSq z + Complex.normSq w = 1)
    (hs' : Complex.normSq z' + Complex.normSq w' = 1) (heq : hopf (z, w) = hopf (z', w')) :
    ∃ l : ℂ, Complex.normSq l = 1 ∧ z' = l * z ∧ w' = l * w := by
  simp only [hopf, Prod.mk.injEq] at heq
  obtain ⟨h1, h2⟩ := heq
  -- the moduli agree
  have hz : Complex.normSq z = Complex.normSq z' := by linarith
  have hw : Complex.normSq w = Complex.normSq w' := by linarith
  -- the same facts as identities of complex numbers
  have e1 : z * conj w = z' * conj w' := by linear_combination h1 / 2
  have e1c : conj z * w = conj z' * w' := by
    have := congrArg conj e1
    simpa [map_mul, mul_comm] using this
  have mz : z * conj z = (Complex.normSq z : ℂ) := Complex.mul_conj z
  have mw : w * conj w = (Complex.normSq w : ℂ) := Complex.mul_conj w
  have mz' : z' * conj z' = (Complex.normSq z' : ℂ) := Complex.mul_conj z'
  have mw' : w' * conj w' = (Complex.normSq w' : ℂ) := Complex.mul_conj w'
  have cz : (Complex.normSq z : ℂ) = Complex.normSq z' := by rw [hz]
  have cw : (Complex.normSq w : ℂ) = Complex.normSq w' := by rw [hw]
  have cs : (Complex.normSq z : ℂ) + Complex.normSq w = 1 := by
    rw [← Complex.ofReal_add, hs, Complex.ofReal_one]
  -- the circle parameter is the Hermitian inner product of the two points
  set l := z' * conj z + w' * conj w with hl
  have hz' : z' = l * z := by
    rw [hl]
    linear_combination (-z') * mz + (-w') * e1 + (-z') * mw' + z' * cw + (-z') * cs
  have hw' : w' = l * w := by
    rw [hl]
    linear_combination (-z') * e1c + (-w') * mz' + (-w') * mw + w' * cz + (-w') * cs
  refine ⟨l, ?_, hz', hw'⟩
  -- `1 = |z'|² + |w'|² = |λ|² (|z|² + |w|²) = |λ|²`
  have k1 : Complex.normSq z' = Complex.normSq l * Complex.normSq z := by
    rw [← Complex.normSq_mul, ← hz']
  have k2 : Complex.normSq w' = Complex.normSq l * Complex.normSq w := by
    rw [← Complex.normSq_mul, ← hw']
  linear_combination (-Complex.normSq l) * hs - k1 - k2 + hs'
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor

The algebraic step in the proof of Theorem 7 — an exact sequence of groups whose outer terms are trivial has a bijective middle map — is proved for arbitrary groups:

bijective_of_exactLean 4Proved here from basic factsFormally verified
/-- **An exact sequence flanked by trivial groups.** If `A → B → C → D` is exact at `B` and at
`C` (kernel = image) and `A`, `D` are trivial, then `g : B → C` is bijective. In the long exact
sequence of the Hopf fibration, `π₃(S¹) → π₃(S³) → π₃(S²) → π₂(S¹)` with `πₖ(S¹) = 0` for
`k ≥ 2`, this gives `π₃(S²) ≅ π₃(S³) ≅ ℤ`. -/
theorem bijective_of_exact {A B C D : Type*} [Group A] [Group B] [Group C] [Group D]
    [Subsingleton A] [Subsingleton D] (f : A →* B) (g : B →* C) (k : C →* D)
    (exactB : ∀ b, g b = 1 ↔ ∃ a, f a = b) (exactC : ∀ c, k c = 1 ↔ ∃ b, g b = c) :
    Function.Bijective g := by
  constructor
  · -- injective: the kernel of `g` is the image of the trivial group `A`
    intro b₁ b₂ h
    have hker : g (b₁⁻¹ * b₂) = 1 := by rw [map_mul, map_inv, h, inv_mul_cancel]
    obtain ⟨a, ha⟩ := (exactB _).1 hker
    have ha1 : a = 1 := Subsingleton.elim a 1
    rw [ha1, map_one] at ha
    -- `1 = b₁⁻¹ * b₂`, so `b₁ = b₂`
    exact inv_mul_eq_one.mp ha.symm
  · -- surjective: everything is in the kernel of the map to the trivial group `D`
    intro c
    exact (exactC c).1 (Subsingleton.elim _ _)
Axioms used: propextformal/Lumenary/HomotopyTheory.leanTry it in the Lean web editor

What is and is not formalised. Formalised independently: the Eckmann–Hilton argument, the Hopf map, that it maps S3S^3 to S2S^2, is constant on circles and has exactly circles as fibres, and the exact-sequence lemma. From Mathlib: πn\pi_n, its group structure and commutativity, π1\pi_1 and Ω(ΩnX)≅Ωn+1X\Omega(\Omega^n X) \cong \Omega^{n+1} X. Not formalised (and, as far as we know, not yet in Mathlib): surjectivity and local triviality of the Hopf map, the long exact sequence of a fibration, πn(Sn)≅Z\pi_n(S^n) \cong \Z, cellular approximation, and the theorems of Whitehead, Hurewicz and Freudenthal. So Theorem 7 is formalised only in its algebraic and geometric ingredients. (Several of these results have been formalised synthetically in homotopy type theory — see the logic viewpoint below.)

ComputationC

Linked fibres, numerically

The experiment samples five fibres of hh, checks that hh is constant on them to rounding error, projects them stereographically into R3\R^3 and evaluates Gauss's linking integral

Lk(γ1,γ2)=14π∮∮(γ1−γ2)⋅(γ˙1×γ˙2)∣γ1−γ2∣3 ds dt\mathrm{Lk}(\gamma_1, \gamma_2) = \frac{1}{4\pi} \oint \oint \frac{(\gamma_1 - \gamma_2) \cdot (\dot\gamma_1 \times \dot\gamma_2)}{|\gamma_1 - \gamma_2|^3}\, ds\, dt

for every pair, with a control pair of unlinked circles.

Hopf fibres are linked circlesPythonNumerical approximationComputationally tested
"""The Hopf fibration numerically: fibres are circles, and any two of them link.

The Hopf map h(z, w) = (2 z conj(w), |z|^2 - |w|^2) sends the unit sphere S^3
in C^2 to the unit sphere S^2. The fibre over a point p is the circle
{(lz, lw) : |l| = 1}. We sample fibres, check that h is constant on them, map
them into R^3 by stereographic projection, and evaluate Gauss's linking
integral for pairs of fibres. The answer is 1 every time: the Hopf invariant of
h, which is why h generates pi_3(S^2) = Z. Numerical evidence only.
"""

import math

import numpy as np

def hopf(z, w):
    """The Hopf map, returning a point (x, y, t) of R^3."""
    v = 2 * z * np.conj(w)
    return np.stack([v.real, v.imag, abs(z) ** 2 - abs(w) ** 2], axis=-1)

def fibre(p, n=400):
    """n points (z, w) on the fibre over the unit vector p = (a, b, c)."""
    a, b, c = p
    if c >= 0:
        z0 = math.sqrt((1 + c) / 2)
        w0 = complex(a, -b) / (2 * z0)
    else:
        w0 = math.sqrt((1 - c) / 2)
        z0 = complex(a, b) / (2 * w0)
    lam = np.exp(2j * np.pi * np.arange(n) / n)
    return lam * z0, lam * w0

def stereographic(z, w):
    """Project S^3 minus the point (0, i) to R^3."""
    return np.stack([z.real, z.imag, w.real], axis=-1) / (1 - w.imag)[:, None]

def spectral_derivative(c):
    """Derivative d/dtheta of a closed curve sampled at n equally spaced angles."""
    n = len(c)
    k = np.fft.fftfreq(n, d=1.0 / n)
    k[n // 2] = 0 if n % 2 == 0 else k[n // 2]
    return np.real(np.fft.ifft(1j * k[:, None] * np.fft.fft(c, axis=0), axis=0))

def linking_number(c1, c2):
    """Gauss linking integral of two closed curves sampled uniformly in angle.

    Uses the periodic trapezoidal rule with spectrally exact tangent vectors,
    which converges faster than any power of 1/n for smooth curves.
    """
    t1, t2 = spectral_derivative(c1), spectral_derivative(c2)
    r = c1[:, None, :] - c2[None, :, :]
    cross = np.cross(t1[:, None, :], t2[None, :, :])
    integrand = np.einsum("ijk,ijk->ij", r, cross)
    integrand /= np.linalg.norm(r, axis=-1) ** 3
    h = 2 * math.pi / len(c1) * 2 * math.pi / len(c2)
    return integrand.sum() * h / (4 * math.pi)

def round_circle(center, n=400, vertical=False):
    """A unit circle around center, horizontal or in a vertical (x, z) plane."""
    t = 2 * np.pi * np.arange(n) / n
    if vertical:
        pts = np.stack([np.cos(t), np.zeros(n), np.sin(t)], axis=-1)
    else:
        pts = np.stack([np.cos(t), np.sin(t), np.zeros(n)], axis=-1)
    return pts + np.asarray(center, dtype=float)

def unit(v):
    """Normalise a vector to a point of S^2."""
    v = np.asarray(v, dtype=float)
    return v / np.linalg.norm(v)

POINTS = {
    "north pole": unit([0, 0, 1]),
    "equator, x": unit([1, 0, 0]),
    "equator, y": unit([0, 1, 0]),
    "(1, 1, 1)": unit([1, 1, 1]),
    "(-2, 1, -1)": unit([-2, 1, -1]),
}

def main():
    print("Hopf map h : S^3 -> S^2, h(z, w) = (2 z conj(w), |z|^2 - |w|^2)")
    print()
    curves = {}
    worst = 0.0
    for name, p in POINTS.items():
        z, w = fibre(p)
        worst = max(worst, float(np.abs(hopf(z, w) - p).max()))
        curves[name] = stereographic(z, w)
    print(f"max |h(x) - p| over 400 points on each of 5 fibres: {worst:.1e}")
    print()
    print("Gauss linking numbers of the projected fibres (400 points each):")
    names = list(POINTS)
    for i in range(len(names)):
        for j in range(i + 1, len(names)):
            lk = linking_number(curves[names[i]], curves[names[j]])
            print(f"  {names[i]:<12} with {names[j]:<12} Lk = {lk:.10f}")
    flat = round_circle([0, 0, 0])
    apart = linking_number(flat, round_circle([3, 0, 0], vertical=True))
    print(f"  control: two unlinked round circles      Lk = {abs(apart):.10f}")
    print()
    print("Every pair of fibres links once. The linking number of two fibres")
    print("is the Hopf invariant H(h) = 1; a map S^3 -> S^2 homotopic to a")
    print("constant would have H = 0, so h is not null-homotopic.")
    print()
    print("Epistemic status: numerical evidence. The trapezoidal rule for")
    print("smooth closed curves converges very fast and the values agree with")
    print("the integer 1 to many digits, but floating-point quadrature proves")
    print("nothing; the lesson proves that h generates pi_3(S^2) = Z.")

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.

Every pair links exactly once, as the Hopf invariant H(h)=1H(h) = 1 predicts. Because the curves are smooth and periodic, the trapezoidal rule with spectrally computed tangents is accurate to many digits — but this is numerical evidence about five fibres, not a proof; the proof that [h][h] generates π3(S2)\pi_3(S^2) is Theorem 7.

Explore

Explore: homotopy versus homology in the twice-punctured plane

The plane with two holes is homotopy equivalent to the figure eight, so its fundamental group is free on two loops aa, bb around the holes, while H1≅Z2H_1 \cong \Z^2 records only the winding numbers. Choose Draw your own and draw the commutator loop aba−1b−1a b a^{-1} b^{-1}: around the left hole, around the right hole, back around the left hole the other way, then around the right hole the other way.

Winding around a hole

The commutator loop winds 0 times around each hole, yet cannot be shrunk to a point.

p₁p₂

Drag a hole to move it. Press Play to send the point around the loop, or use the slider. The small square marks the start.

Winding number around p₁−1

(1/2πi)∮ dz/(z − p₁) ≈ −1.000 + 0.000i

Winding number around p₂1

(1/2πi)∮ dz/(z − p₂) ≈ 1.000 + 0.000i

Turns swept so far by each dashed arrow:

p₁: 0.00p₂: 0.00

The winding number is found by adding up the small changes in direction of the arrow from the hole to the moving point, and dividing the total by 360°. Counter-clockwise counts as positive.

With two holes, the winding numbers around each hole are still invariants, but they no longer tell the whole story. The fundamental group is now the free group on two generators: a loop that goes around p₁, then p₂, then p₁ backwards, then p₂ backwards winds 0 times around each hole, yet it cannot be shrunk to a point.

A link to complex analysis: think of the plane as the complex numbers and of a hole as a point a. Then (1/2πi)∮ dz/(z − a) equals the winding number around a. The values above are computed numerically along the loop.

Both winding numbers of the commutator are 00, so it is zero in H1H_1 — this is the Hurewicz theorem in degree one, H1=π1abH_1 = \pi_1^{\mathrm{ab}} — yet it is not null-homotopic, because aba−1b−1≠1a b a^{-1} b^{-1} \neq 1 in the free group. Homotopy remembers order; homology forgets it.

Exercises

Exercises

1. Homotopy theory

Warm-upHuman

For which kk is πk(S3)=0\pi_k(S^3) = 0? (Select all that apply.)

Choose all that apply

2. Homotopy theory

CoreHuman

Which list gives π1,π2,π3\pi_1, \pi_2, \pi_3 of RP3\R P^3?

Choose one

3. Homotopy theory

CoreHuman

The quaternionic Hopf fibration S3→S7→S4S^3 \to S^7 \to S^4 has null-homotopic fibre inclusion (since π3(S7)=0\pi_3(S^7) = 0), and this splits its long exact sequence: πn(S4)≅πn(S7)⊕πn−1(S3)\pi_n(S^4) \cong \pi_n(S^7) \oplus \pi_{n-1}(S^3). Given π6(S3)≅Z/12\pi_6(S^3) \cong \Z/12 and π7(S7)≅Z\pi_7(S^7) \cong \Z, what is the order of the torsion subgroup of π7(S4)\pi_7(S^4)?

4. Homotopy theory

CoreHuman

The Eckmann–Hilton argument proves that πn(X)\pi_n(X) is abelian for n≥2n \ge 2. Why does it not apply to π1(X)\pi_1(X)?

Choose one

5. Homotopy theory

CoreHuman

Which example shows that the CW hypothesis in Whitehead's theorem cannot be dropped?

Choose one

6. Homotopy theory

StretchHuman

Let Σ\Sigma be Poincaré's homology sphere and c:Σ→S3c : \Sigma \to S^3 a degree-one map. Which statement is correct?

Choose one

7. Homotopy theory

CoreFormal

Let S3 z w abbreviate Complex.normSq z + Complex.normSq w = 1. Which Lean statement says that the fibre of the Hopf map through a point of S3S^3 is exactly the circle through it?

Choose one

8. Homotopy theory

CoreComputational

Write hopf(z, w) returning the triple (x, y, t) of real numbers with x+iy=2zwˉx + iy = 2 z \bar w and t=∣z∣2−∣w∣2t = |z|^2 - |w|^2. The tests check that points of S3S^3 go to S2S^2, that the map is constant on circles λ(z,w)\lambda(z, w), and two special values.

Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Common misconceptionsH

Common misconceptions

Misconception

"Higher homotopy groups of spheres vanish above the dimension, as homology does." They do not: π3(S2)≅Z\pi_3(S^2) \cong \Z, and by Serre's work πk(Sn)\pi_k(S^n) is non-zero for infinitely many kk when n≥2n \ge 2. Homology vanishes above the dimension of a CW complex because it is computed from cells; homotopy groups are not.

Misconception

"A map inducing isomorphisms on all homology groups is a homotopy equivalence." Only with extra hypotheses: for CW complexes that are simply connected (Corollary 10(b)). The degree-one map from Poincaré's homology sphere to S3S^3 is a homology isomorphism but not a homotopy equivalence. Even isomorphisms on all homotopy groups need the CW hypothesis (Theorem 8; the Warsaw circle).

Misconception

"Abstractly isomorphic homotopy groups mean homotopy equivalent spaces." Whitehead's theorem needs a map inducing the isomorphisms. S2×RP3S^2 \times \R P^3 and RP2×S3\R P^2 \times S^3 have isomorphic homotopy groups in every degree (both have π1=Z/2\pi_1 = \Z/2 and universal cover S2×S3S^2 \times S^3) but are not homotopy equivalent: one is orientable and the other is not, so their top homology groups differ.

Misconception

"A fibration is a product, or at least locally a product." The Hopf fibration is not a product — S3≄S2×S1S^3 \not\simeq S^2 \times S^1, since π1(S2×S1)=Z\pi_1(S^2 \times S^1) = \Z — and a fibration need not be locally trivial at all; only its homotopy lifting property matters. What is true is that all fibres over a path-connected base are homotopy equivalent.

ViewpointsH

Viewpoints

Topology— The homotopy category and its invariants

Homotopy theory replaces the category of spaces by the homotopy category, where homotopic maps are identified and weak equivalences are inverted; Whitehead's theorem says this loses nothing for CW complexes. The fundamental question is to compute [X,Y][X, Y], and the tools are exact sequences (of pairs, of fibrations, of cofibrations A→X→X/AA \to X \to X/A), obstruction theory (extending a map cell by cell, with obstructions in Hn+1(X;πn(Y))H^{n+1}(X; \pi_n(Y))), and spectral sequences. A beautiful example: Pontryagin's theorem identifies πn+k(Sn)\pi_{n+k}(S^n) with framed kk-dimensional submanifolds of Rn+k\R^{n+k} up to framed cobordism — the preimage of a regular value — and the Hopf map corresponds to a circle with a framing that twists once.

Geometry— Clifford circles and Lie groups

The fibres of the Hopf map are great circles of S3S^3, any two of which are Clifford parallel (at constant distance) and linked; the preimage of a circle of latitude is a flat torus. The unit quaternions form the Lie group S3=SU(2)S^3 = SU(2), and hh is the quotient SU(2)→SU(2)/U(1)SU(2) \to SU(2)/U(1). More generally, for every compact simple Lie group GG, π2(G)=0\pi_2(G) = 0 and π3(G)≅Z\pi_3(G) \cong \Z, and Bott periodicity (1959) gives πi(U)≅πi+2(U)\pi_i(U) \cong \pi_{i+2}(U) and πi(O)≅πi+8(O)\pi_i(O) \cong \pi_{i+8}(O) for the infinite unitary and orthogonal groups — the source of the 22- and 88-fold periodicities of K-theory and of Clifford algebras.

Algebra— Rationally, spheres are simple

Serre's finiteness theorem (1953): πk(Sn)\pi_k(S^n) is finite except for k=nk = n, and, when nn is even, k=2n−1k = 2n - 1, where it is Z\Z plus a finite group. So rationally the homotopy groups of spheres are almost trivial, and rational homotopy theory (Quillen, 1969; Sullivan, 1977) shows that the rational homotopy type of a simply connected space is captured completely by algebra: a commutative differential graded algebra or a differential graded Lie algebra. The torsion is where the difficulty lives, prime by prime, organised by the Adams spectral sequence and chromatic homotopy theory.

Logic— Homotopy type theory

In homotopy type theory, types are spaces, identity proofs are paths, and higher inductive types define spheres directly. Results such as π1(S1)≅Z\pi_1(S^1) \cong \Z (Licata and Shulman, 2013), the Freudenthal suspension theorem, the long exact sequence of a fibration and the Hopf fibration have synthetic proofs valid in any model, including ∞\infty-toposes. Guillaume Brunerie (2016) proved in this setting that π4(S3)≅Z/n\pi_4(S^3) \cong \Z/n for an explicitly defined integer nn, and then that n=2n = 2; computing nn by running the proof as a program became a famous challenge, met with a simplified definition by Axel Ljungström and Anders Mörtberg in Cubical Agda (2023).

Physics— Monopoles, solitons and instantons

The Hopf fibration is the bundle of Dirac's magnetic monopole of unit charge (1931, the same year as Hopf's paper): the electron's wavefunction is a section of the associated line bundle over a sphere surrounding the monopole, and the charge quantisation is the integer classifying the bundle (see vector bundles). Homotopy groups classify topological defects and solitons: field configurations on R3\R^3 with values in S2S^2 that are constant at infinity are maps S3→S2S^3 \to S^2, and their Hopf invariant is a conserved topological charge (Faddeev–Skyrme "hopfions"); Yang–Mills instantons on R4\R^4 are labelled by π3(SU(2))≅Z\pi_3(SU(2)) \cong \Z. These are physical heuristics backed by theorems in each mathematical model, not derivations of physics.

Category theory— Spaces are ∞-groupoids

A space determines its fundamental ∞\infty-groupoid: points, paths, homotopies between paths, and so on. Grothendieck's homotopy hypothesis — made precise by Quillen's equivalence between topological spaces and Kan complexes — says that homotopy types are ∞\infty-groupoids. Quillen's model categories (1967) axiomatised the passage to the homotopy category, and ∞-categories now provide a framework in which homotopy theory is done systematically, from algebraic geometry to the stable homotopy category.

History & global context

History and global context

  • Higher homotopy groups. Eduard Čech introduced higher homotopy groups at the 1932 International Congress in Zürich, but because they were abelian they were dismissed as unlikely to say more than homology. Witold Hurewicz rediscovered them in 1935–36 and proved the theorem connecting them to homology.
  • Hopf. Heinz Hopf's 1931 paper constructed h:S3→S2h : S^3 \to S^2 and the linking invariant, the first sign that homotopy groups of spheres do not vanish above the dimension. Hans Freudenthal proved the suspension theorem in 1937, introducing the stable range.
  • Framed manifolds. Lev Pontryagin in the Soviet Union related πn+k(Sn)\pi_{n+k}(S^n) to framed manifolds and computed the first two stable stems (1950), and Vladimir Rokhlin's work on the third stable stem in the early 1950s led to his theorem that the signature of a smooth spin 44-manifold is divisible by 1616.
  • The 1940s and 1950s. J. H. C. Whitehead's combinatorial homotopy (1949) introduced CW complexes and his theorem. Samuel Eilenberg and Saunders Mac Lane developed the spaces K(G,n)K(G, n) and their cohomology. Jean-Pierre Serre's thesis (1951) brought spectral sequences of fibrations and loop spaces into the subject, giving finiteness and many computations. Hiroshi Toda's Composition Methods in Homotopy Groups of Spheres (1962) computed πn+k(Sn)\pi_{n+k}(S^n) for k≤19k \le 19. J. Frank Adams built his spectral sequence (1958) and settled the Hopf invariant one problem (1960).
  • Recent work. Michael Hill, Michael Hopkins and Douglas Ravenel solved the Kervaire invariant one problem in all dimensions except 126126 (2016), and Weinan Lin, Guozhen Wang and Zhouli Xu announced a resolution of dimension 126126 in 2024. Daniel Isaksen, Guozhen Wang and Zhouli Xu, using motivic methods and machine computation, determined the stable stems through dimension about 9090 (2023). The full computation of πn+k(Sn)\pi_{n+k}(S^n) remains open, and is not expected to have a closed form.
Further reading

Further reading

  • Allen Hatcher, Algebraic Topology (2002), Chapter 4 — homotopy groups, CW approximation, Whitehead, Hurewicz, fibrations, Eilenberg–MacLane spaces and Postnikov towers.
  • J. P. May, A Concise Course in Algebraic Topology (1999) — a fast, categorical account of fibrations, cofibrations and the main theorems.
  • George W. Whitehead, Elements of Homotopy Theory (1978) — the classical comprehensive treatment.
  • Raoul Bott and Loring W. Tu, Differential Forms in Algebraic Topology (1982), §17–18 — the Hopf invariant via differential forms and the Serre spectral sequence.
  • Martin Arkowitz, Introduction to Homotopy Theory (2011) — duality between fibrations and cofibrations, at a gentle pace.
  • Hiroshi Toda, Composition Methods in Homotopy Groups of Spheres (1962), and Douglas C. Ravenel, Complex Cobordism and Stable Homotopy Groups of Spheres (1986) — for the computations.
  • The Univalent Foundations Program, Homotopy Type Theory: Univalent Foundations of Mathematics (2013), Chapter 8 — synthetic homotopy theory.

Reading path: Hatcher §4.1–4.3 with this lesson, then May; then stable homotopy theory or ∞-categories.