Theorem 1.20 (van Kampen): is surjective with kernel
ProvedHatcher.vanKampenThroughout, is a topological space with basepoint , and is a family of subsets of , each containing , with the subspace topology. The standing hypotheses of Lemma 1.15 are: each is open and path-connected, , and each intersection is path-connected.
Theorem 1.20 (van Kampen). If is the union of path-connected open sets each containing the basepoint , each intersection is path-connected, and each intersection is path-connected, then the homomorphism
is surjective and its kernel is the normal subgroup generated by all elements , :
Consequently induces an isomorphism .
This is the gluing law for fundamental groups and the main computational tool of Hatcher's Chapter 1.
Formalization Note Hatcher's first sentence needs only pairwise path-connected intersections; that weaker statement is the separate milestone Hatcher.vanKampenHom_surjective. Here all hypotheses are assumed and both conclusions are asserted.
import Definitions.Def_Hatcher_VanKampen import Mathlib open Hatcher
namespace Hatcher
theorem vanKampen {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 γ)) :
Function.Surjective (vanKampenHom A x₀ hx₀) ∧
(vanKampenHom A x₀ hx₀).ker = vanKampenNormal A x₀ hx₀ := by sorry
end HatcherRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
Read-back of Hatcher.vanKampen.
Setting and binders. Let be a topological space (an arbitrary type in an arbitrary universe, equipped with a topology; no separation, compactness, or other axioms are assumed). Let be an arbitrary index type (any universe, any cardinality, possibly empty). Let be a family of subsets , and let be a point. Each subset , and each intersection , is regarded as a topological space with the subspace topology inherited from . The theorem takes the following hypotheses:
- for every , ;
- for every , is open in ;
- for every , is path-connected in the following sense: there exists a point such that for every there is a continuous path with , , and for all (this notion in particular requires , which is already forced by );
- ;
- for every pair (the case is included), is path-connected in the same sense;
- for every triple (repeated indices included, e.g. or ), is path-connected in the same sense.
Degenerate cases: if then , while witnesses , so cannot hold; hence the hypotheses are jointly satisfiable only when is nonempty. Because the quantifiers in and range over all tuples including repeated indices, with restates , and with restates . No finiteness, countability, or distinctness condition on or on the family is imposed.
Fundamental groups used. For a space and point , denotes the fundamental group as defined in Mathlib: its elements are homotopy classes (homotopies fixing both endpoints) of continuous loops based at ; the identity is the class of the constant loop; the inverse is the class of the reversed loop; and the product is the class of the concatenation "first traverse , then traverse " (Mathlib's convention ). The base points used are: in , the point regarded as an element of the subspace (this is what the custom basept denotes; its membership witness is at ); in , the point regarded as an element of that subspace (the custom basept₂). Write
The homomorphisms. The custom inclHom at is the group homomorphism
induced by the continuous inclusion : it sends the class of a loop in based at to the class of the same loop regarded as a loop in (Mathlib's FundamentalGroup.mapOfEq applied to the inclusion and the identity ; the "cast along equality" it performs is along a reflexive equation and changes nothing). Likewise the custom interHomLeft and interHomRight at are the homomorphisms
induced respectively by the inclusions and (each sends the class of a loop in the intersection to the class of the same loop viewed in the larger subspace).
The free product. The custom FreeProd is
Mathlib's Monoid.CoprodI of the family : the quotient of the free monoid on the alphabet by the congruence generated by the relations and . Since every is a group, is a group (the coproduct of the in the category of groups). For , Monoid.CoprodI.of denotes the image of the one-letter word in ; write it , so is the canonical homomorphism from the -th factor.
The custom vanKampenHom is the homomorphism
obtained by Mathlib's Monoid.CoprodI.lift from the family : it is the unique group homomorphism satisfying for all and ; concretely, a word is sent to the product in (with the product convention for stated above).
The relators and the normal subgroup. The custom vanKampenRelators is the subset
where the product and inverse are those of the group , and the pairs range over all pairs including (for the element is , where and are both induced by the inclusion ). The custom vanKampenNormal is
which Mathlib defines as the subgroup of generated by the set of all conjugates ; equivalently, the smallest normal subgroup of containing .
The conclusion. Under all the hypotheses above, the theorem asserts the conjunction of the following two statements:
-
is surjective: for every there exists some with .
-
The kernel of equals as subgroups of :
This is an equality of subgroups (both inclusions): every with lies in the normal closure of , and every element of is sent by to the identity of .
Taken together, the two conjuncts say exactly that induces a group isomorphism , though the statement itself is phrased as "surjective" and "kernel equals " rather than as an isomorphism. Nothing is asserted about the case where any hypothesis fails, and no statement is made about base points other than the single common point .
Confirmed by the mission captain (proposal self-audit).