Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Theorem 1.20 (second part): ker⁡Φ⊆N\ker\Phi\subseteq NkerΦ⊆N

Proved
Hatcher.ker_vanKampenHom_le

by korbonits · Sep 8, 2026 · Mathlib 0df444a (Lean v4.33.1)

algebraic-topologyfundamental-grouphatchervan-kampen

Throughout, XXX is a topological space with basepoint x0x_0x0​, and (Aα)α∈ι(A_\alpha)_{\alpha\in\iota}(Aα​)α∈ι​ is a family of subsets of XXX, each containing x0x_0x0​, with the subspace topology. The standing hypotheses of Lemma 1.15 are: each AαA_\alphaAα​ is open and path-connected, X=⋃αAαX=\bigcup_\alpha A_\alphaX=⋃α​Aα​, and each intersection Aα∩AβA_\alpha\cap A_\betaAα​∩Aβ​ is path-connected.

Theorem 1.20, second part. Assume in addition that each triple intersection Aα∩Aβ∩AγA_\alpha\cap A_\beta\cap A_\gammaAα​∩Aβ​∩Aγ​ is path-connected. Then the kernel of Φ\PhiΦ is contained in the normal subgroup NNN generated by the elements iαβ(ω) iβα(ω)−1i_{\alpha\beta}(\omega)\,i_{\beta\alpha}(\omega)^{-1}iαβ​(ω)iβα​(ω)−1:

ker⁡Φ ≤ N.\ker\Phi\ \le\ N .kerΦ ≤ N.

Together with the easy inclusion N≤ker⁡ΦN\le\ker\PhiN≤kerΦ this is Hatcher's statement that "the kernel of Φ\PhiΦ is the normal subgroup NNN". It is the hard half of van Kampen's theorem, proved by subdividing a homotopy between two factorizations of a loop.

Formalization Note The hypotheses are stated exactly as in Hatcher: openness and path-connectedness of the AαA_\alphaAα​, the covering condition, and path-connectedness of pairwise and triple intersections (the pairwise condition is listed separately even though it follows from the triple one).

Preamble
import Definitions.Def_Hatcher_VanKampen
import Mathlib

open Hatcher
Formal statement
namespace Hatcher
theorem ker_vanKampenHom_le {X : Type*} [TopologicalSpace X] {ι : Type*}
    (A : ι → Set X) (x₀ : X) (hx₀ : ∀ α, x₀ ∈ A α)
    (hopen : ∀ α, IsOpen (A α)) (hpc : ∀ α, IsPathConnected (A α))
    (hcover : (⋃ α, A α) = Set.univ) (hinter : ∀ α β, IsPathConnected (A α ∩ A β))
    (htriple : ∀ α β γ, IsPathConnected (A α ∩ A β ∩ A γ)) :
    (vanKampenHom A x₀ hx₀).ker ≤ vanKampenNormal A x₀ hx₀ := by sorry
end Hatcher
Source
A. Hatcher, Algebraic Topology, Cambridge University Press 2002, https://pi.math.cornell.edu/~hatcher/AT/AT.pdf, Section 1.2, p. 43, Theorem 1.20 (kernel statement), proof pp. 44–46
Read-back

What the Lean code literally says, in plain math · claude-fable-5-1

Declaration Hatcher.ker_vanKampenHom_le. Let XXX be a topological space (an arbitrary type in an arbitrary universe, equipped with a topology; no separation, compactness, or other axioms are assumed) and let ι\iotaι be an arbitrary index type (possibly empty, possibly infinite, no decidable equality assumed). The following data and hypotheses are given:

  • a family of subsets Aα⊆XA_\alpha \subseteq XAα​⊆X indexed by α∈ι\alpha \in \iotaα∈ι;
  • a point x0∈Xx_0 \in Xx0​∈X;
  • hx0h_{x_0}hx0​​: for every α∈ι\alpha \in \iotaα∈ι, x0∈Aαx_0 \in A_\alphax0​∈Aα​;
  • hopenh_{\mathrm{open}}hopen​: for every α\alphaα, AαA_\alphaAα​ is open in XXX;
  • hpch_{\mathrm{pc}}hpc​: for every α\alphaα, AαA_\alphaAα​ is path-connected, where "a set F⊆XF \subseteq XF⊆X is path-connected" means (Mathlib's IsPathConnected): there exists a point x∈Fx \in Fx∈F such that for every y∈Fy \in Fy∈F there is a continuous path γ:[0,1]→X\gamma : [0,1] \to Xγ:[0,1]→X with γ(0)=x\gamma(0)=xγ(0)=x, γ(1)=y\gamma(1)=yγ(1)=y and γ(t)∈F\gamma(t) \in Fγ(t)∈F for all ttt (in particular FFF is nonempty);
  • hcoverh_{\mathrm{cover}}hcover​: ⋃α∈ιAα=X\bigcup_{\alpha \in \iota} A_\alpha = X⋃α∈ι​Aα​=X (equality with the whole space, as sets);
  • hinterh_{\mathrm{inter}}hinter​: for every pair α,β∈ι\alpha, \beta \in \iotaα,β∈ι (including α=β\alpha = \betaα=β), the set Aα∩AβA_\alpha \cap A_\betaAα​∩Aβ​ is path-connected in the above sense;
  • htripleh_{\mathrm{triple}}htriple​: for every triple α,β,γ∈ι\alpha, \beta, \gamma \in \iotaα,β,γ∈ι (coincidences allowed), the set (Aα∩Aβ)∩Aγ(A_\alpha \cap A_\beta) \cap A_\gamma(Aα​∩Aβ​)∩Aγ​ is path-connected in the above sense.

Objects built from these data (all custom definitions, unfolded). For each α\alphaα, the space AαA_\alphaAα​ is regarded as a topological space with the subspace topology, and its basepoint is baseptα:=x0\mathrm{basept}_\alpha := x_0baseptα​:=x0​ viewed as an element of AαA_\alphaAα​ (via hx0h_{x_0}hx0​​). Likewise Aα∩AβA_\alpha \cap A_\betaAα​∩Aβ​ carries the subspace topology with basepoint baseptαβ:=x0\mathrm{basept}_{\alpha\beta} := x_0baseptαβ​:=x0​ viewed as an element of Aα∩AβA_\alpha \cap A_\betaAα​∩Aβ​. For a space YYY with point yyy, π1(Y,y)\pi_1(Y,y)π1​(Y,y) denotes Mathlib's FundamentalGroup Y y: its elements are equivalence classes of continuous loops [0,1]→Y[0,1] \to Y[0,1]→Y based at yyy, two loops being identified iff they are homotopic through loops based at yyy (homotopy relative to the endpoints); the group identity is the class of the constant loop, the inverse is path reversal, and the product is defined so that p⋅qp \cdot qp⋅q is the class of "qqq traversed first, then ppp" (i.e. p⋅q=q∗pp \cdot q = q \ast pp⋅q=q∗p in concatenation order). Given a continuous map f:Y→Zf : Y \to Zf:Y→Z with f(y)=zf(y) = zf(y)=z, Mathlib's FundamentalGroup.mapOfEq is the group homomorphism π1(Y,y)→π1(Z,z)\pi_1(Y,y) \to \pi_1(Z,z)π1​(Y,y)→π1​(Z,z) sending the class of a loop γ\gammaγ to the class of f∘γf \circ \gammaf∘γ (with the basepoint identification f(y)=zf(y)=zf(y)=z; here every such identification is a definitional equality). With this:

  • inclHomα:π1(Aα,x0)→π1(X,x0)\mathrm{inclHom}_\alpha : \pi_1(A_\alpha, x_0) \to \pi_1(X, x_0)inclHomα​:π1​(Aα​,x0​)→π1​(X,x0​) is the homomorphism induced by the subspace inclusion Aα↪XA_\alpha \hookrightarrow XAα​↪X (composition of loops with the inclusion).
  • interHomLeftαβ:π1(Aα∩Aβ,x0)→π1(Aα,x0)\mathrm{interHomLeft}_{\alpha\beta} : \pi_1(A_\alpha \cap A_\beta, x_0) \to \pi_1(A_\alpha, x_0)interHomLeftαβ​:π1​(Aα​∩Aβ​,x0​)→π1​(Aα​,x0​) is induced by the inclusion Aα∩Aβ↪AαA_\alpha \cap A_\beta \hookrightarrow A_\alphaAα​∩Aβ​↪Aα​, and interHomRightαβ:π1(Aα∩Aβ,x0)→π1(Aβ,x0)\mathrm{interHomRight}_{\alpha\beta} : \pi_1(A_\alpha \cap A_\beta, x_0) \to \pi_1(A_\beta, x_0)interHomRightαβ​:π1​(Aα​∩Aβ​,x0​)→π1​(Aβ​,x0​) is induced by the inclusion Aα∩Aβ↪AβA_\alpha \cap A_\beta \hookrightarrow A_\betaAα​∩Aβ​↪Aβ​.
  • FreeProd:=∗α∈ι π1(Aα,x0)\mathrm{FreeProd} := \ast_{\alpha \in \iota}\, \pi_1(A_\alpha, x_0)FreeProd:=∗α∈ι​π1​(Aα​,x0​) is Mathlib's Monoid.CoprodI of the family of groups α↦π1(Aα,x0)\alpha \mapsto \pi_1(A_\alpha, x_0)α↦π1​(Aα​,x0​): the quotient of the free monoid on the alphabet {(α,g):α∈ι, g∈π1(Aα,x0)}\{(\alpha, g) : \alpha \in \iota,\ g \in \pi_1(A_\alpha,x_0)\}{(α,g):α∈ι, g∈π1​(Aα​,x0​)} by the congruence generated by (α,1)∼1(\alpha, 1) \sim 1(α,1)∼1 and (α,g)(α,h)∼(α,gh)(\alpha, g)(\alpha, h) \sim (\alpha, gh)(α,g)(α,h)∼(α,gh); since every factor is a group this is a group (the free product of the groups π1(Aα,x0)\pi_1(A_\alpha,x_0)π1​(Aα​,x0​)). For each α\alphaα, ια:=\iota_\alpha := ια​:= Monoid.CoprodI.of :π1(Aα,x0)→FreeProd: \pi_1(A_\alpha,x_0) \to \mathrm{FreeProd}:π1​(Aα​,x0​)→FreeProd is the canonical homomorphism sending ggg to the class of the one-letter word (α,g)(\alpha, g)(α,g). Multiplication in FreeProd\mathrm{FreeProd}FreeProd is concatenation of words (in the written order).
  • Φ:=vanKampenHom:FreeProd→π1(X,x0)\Phi := \mathrm{vanKampenHom} : \mathrm{FreeProd} \to \pi_1(X, x_0)Φ:=vanKampenHom:FreeProd→π1​(X,x0​) is Monoid.CoprodI.lift of the family (inclHomα)α(\mathrm{inclHom}_\alpha)_\alpha(inclHomα​)α​: the unique group homomorphism with Φ(ια(g))=inclHomα(g)\Phi(\iota_\alpha(g)) = \mathrm{inclHom}_\alpha(g)Φ(ια​(g))=inclHomα​(g) for all α\alphaα and all g∈π1(Aα,x0)g \in \pi_1(A_\alpha,x_0)g∈π1​(Aα​,x0​); concretely, a word (α1,g1)⋯(αn,gn)(\alpha_1,g_1)\cdots(\alpha_n,g_n)(α1​,g1​)⋯(αn​,gn​) is sent to the product inclHomα1(g1)⋯inclHomαn(gn)\mathrm{inclHom}_{\alpha_1}(g_1)\cdots\mathrm{inclHom}_{\alpha_n}(g_n)inclHomα1​​(g1​)⋯inclHomαn​​(gn​) computed in π1(X,x0)\pi_1(X,x_0)π1​(X,x0​) (with that group's multiplication convention).
  • vanKampenRelators⊆FreeProd\mathrm{vanKampenRelators} \subseteq \mathrm{FreeProd}vanKampenRelators⊆FreeProd is the set
R:={ ια(interHomLeftαβ(ω))⋅ιβ(interHomRightαβ(ω))−1  :  α,β∈ι, ω∈π1(Aα∩Aβ,x0) },R := \Big\{\, \iota_\alpha\big(\mathrm{interHomLeft}_{\alpha\beta}(\omega)\big)\cdot \iota_\beta\big(\mathrm{interHomRight}_{\alpha\beta}(\omega)\big)^{-1} \;:\; \alpha, \beta \in \iota,\ \omega \in \pi_1(A_\alpha \cap A_\beta, x_0) \,\Big\},R:={ια​(interHomLeftαβ​(ω))⋅ιβ​(interHomRightαβ​(ω))−1:α,β∈ι, ω∈π1​(Aα​∩Aβ​,x0​)},

i.e. for every ordered pair (α,β)(\alpha,\beta)(α,β) (including α=β\alpha=\betaα=β) and every based-homotopy class ω\omegaω of loops in Aα∩AβA_\alpha \cap A_\betaAα​∩Aβ​ at x0x_0x0​, the element of the free product obtained as (the image of ω\omegaω in π1(Aα,x0)\pi_1(A_\alpha,x_0)π1​(Aα​,x0​), placed in the α\alphaα-th factor) times (the inverse of the image of ω\omegaω in π1(Aβ,x0)\pi_1(A_\beta,x_0)π1​(Aβ​,x0​), placed in the β\betaβ-th factor).

  • N:=vanKampenNormalN := \mathrm{vanKampenNormal}N:=vanKampenNormal is Mathlib's Subgroup.normalClosure of RRR: the subgroup of FreeProd\mathrm{FreeProd}FreeProd generated by the set of all conjugates { c r c−1:r∈R, c∈FreeProd }\{\, c\, r\, c^{-1} : r \in R,\ c \in \mathrm{FreeProd} \,\}{crc−1:r∈R, c∈FreeProd}, equivalently the intersection of all subgroups of FreeProd\mathrm{FreeProd}FreeProd containing every such conjugate; this is the smallest normal subgroup containing RRR.
  • ker⁡Φ\ker \PhikerΦ is Mathlib's MonoidHom.ker: the subgroup { w∈FreeProd:Φ(w)=1 }\{\, w \in \mathrm{FreeProd} : \Phi(w) = 1 \,\}{w∈FreeProd:Φ(w)=1}, where 1∈π1(X,x0)1 \in \pi_1(X,x_0)1∈π1​(X,x0​) is the class of the constant loop at x0x_0x0​.

Conclusion. Under all of the above hypotheses,

ker⁡Φ  ≤  N,\ker \Phi \;\le\; N,kerΦ≤N,

where ≤\le≤ is the order on subgroups given by inclusion of underlying sets: every w∈FreeProdw \in \mathrm{FreeProd}w∈FreeProd with Φ(w)=1\Phi(w) = 1Φ(w)=1 lies in NNN. Equivalently: every element of the free product ∗απ1(Aα,x0)\ast_\alpha \pi_1(A_\alpha,x_0)∗α​π1​(Aα​,x0​) that maps to the trivial class in π1(X,x0)\pi_1(X,x_0)π1​(X,x0​) belongs to the normal closure of RRR. The statement asserts only this one inclusion (ker⁡Φ⊆N\ker\Phi \subseteq NkerΦ⊆N); it does not assert the reverse inclusion N≤ker⁡ΦN \le \ker\PhiN≤kerΦ, nor equality, nor surjectivity of Φ\PhiΦ, nor any isomorphism.

Edge cases made explicit. (i) If ι\iotaι is empty, then ⋃αAα=∅\bigcup_\alpha A_\alpha = \varnothing⋃α​Aα​=∅, so hcoverh_{\mathrm{cover}}hcover​ forces X=∅X = \varnothingX=∅, which contradicts the existence of x0∈Xx_0 \in Xx0​∈X; hence in that case the hypotheses are jointly unsatisfiable and the statement holds vacuously. (ii) The hypotheses hinterh_{\mathrm{inter}}hinter​ and htripleh_{\mathrm{triple}}htriple​ range over all pairs and triples of indices with repetitions allowed, so they include the statements "Aα∩Aα=AαA_\alpha \cap A_\alpha = A_\alphaAα​∩Aα​=Aα​ is path-connected" and "Aα∩Aβ∩AαA_\alpha \cap A_\beta \cap A_\alphaAα​∩Aβ​∩Aα​ is path-connected". (iii) The relator set RRR includes the pairs α=β\alpha = \betaα=β, for which the relator is ια(ω′) ια(ω′)−1=1\iota_\alpha(\omega')\,\iota_\alpha(\omega')^{-1} = 1ια​(ω′)ια​(ω′)−1=1 with ω′\omega'ω′ the image of ω\omegaω in π1(Aα,x0)\pi_1(A_\alpha,x_0)π1​(Aα​,x0​); it also includes both orderings (α,β)(\alpha,\beta)(α,β) and (β,α)(\beta,\alpha)(β,α) of each unordered pair. (iv) Nothing is assumed about the cardinality of ι\iotaι beyond what hcoverh_{\mathrm{cover}}hcover​ and x0x_0x0​ force; XXX itself is not assumed path-connected, Hausdorff, or otherwise restricted. (v) The hypotheses hopenh_{\mathrm{open}}hopen​ and hcoverh_{\mathrm{cover}}hcover​ are assumptions of the theorem; they do not appear in the definitions of Φ\PhiΦ, RRR, or NNN, which depend only on AAA, x0x_0x0​, and hx0h_{x_0}hx0​​. (vi) The proof of this declaration is omitted (the body is sorry); the statement above is what is asserted, not what is proved.

Human review
  • Endorsed by Shuze Chen · Sep 8, 2026

  • Endorsed by korbonits · Sep 8, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactJoin Slack© 2026 Prove2Me