Lemma 1.15: every loop is homotopic to a product of loops each in a single
ProvedHatcher.loop_homotopic_prod_of_coverThroughout, 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.
Lemma 1.15. Under the standing hypotheses, every loop in at is homotopic to a product of loops each of which is contained in a single : there is a finite list with a loop in at such that
as loops in (the regarded as loops in via the inclusions; gives the constant loop).
This is the main step in Hatcher's proof that for and is exactly the surjectivity half of van Kampen's theorem.
Formalization Note The list is a List of pairs with a Mathlib Path in the subspace ; the product is formed by Hatcher.loopProd, concatenating from the right with the constant loop as empty product. Since concatenation is associative up to homotopy, the bracketing is immaterial.
import Definitions.Def_Hatcher_VanKampen import Mathlib open Hatcher
namespace Hatcher
theorem loop_homotopic_prod_of_cover {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 β))
(f : Path x₀ x₀) :
∃ l : List (Σ α : ι, Path (basept A x₀ hx₀ α) (basept A x₀ hx₀ α)),
f.Homotopic (loopProd x₀ (l.map fun p => loopIn A x₀ hx₀ p.1 p.2)) := by sorry
end HatcherRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
Read-back: Hatcher.loop_homotopic_prod_of_cover
Setting and binders. Let be a type (in an arbitrary universe) equipped with a topology; no separation, compactness, or other axiom is assumed. Let be an arbitrary type (any universe, possibly empty, possibly infinite), and let assign to each index a subset . Let be a point. The theorem takes the following hypotheses, every one of which is assumed (whether or not it is used in the conclusion):
- for every , ;
- for every , is an open subset of ;
- for every , is path-connected in the following exact sense: there exists a point such that for every there is a continuous map with , , and for all (the distinguished point is not required to be ; the condition in particular forces );
- (equality of sets, i.e. the cover );
- for every ordered pair — including , in which case this just says is path-connected again — the intersection is path-connected in the same sense as above (some point of is joined to every point of by a path whose whole image lies in );
- is a loop in at : a continuous map with and .
Nothing here requires to be nonempty, finite, or to have any structure; nothing requires the to be distinct, and nothing relates the topology on to anything other than the subspace topology inherited from .
The custom notions, unfolded.
- For , the base point in , written here , is the point regarded as an element of the subspace (with the subspace topology), using to know . Under the inclusion it maps to .
- A loop in at is a continuous map (into the subspace, so continuity is with respect to the subspace topology) with .
- For such a , the loop pushed into , written , is the composite , i.e. viewed in . It is a loop in at whose image is contained in .
- For two paths from to and from to in , the concatenation is the path from to given by
- The constant loop is for all .
- For a finite list of loops in at (), the loop product is the right-nested concatenation ending in the constant loop:
so that, concretely, is traversed on , on , …, on , and the loop is constantly on . In particular (the empty list gives the constant loop), and , which is run at double speed on followed by standing still at on — not itself.
- Two loops in at are homotopic (relative to endpoints), written , when there exists a continuous map (product topology) with and for all , and such that for every one has and .
Conclusion. Under all of the hypotheses above, there exists a finite list
of pairs in which each is an index (indices may repeat, and may be in any order) and each is a loop in the subspace at , such that
i.e. is homotopic relative to endpoints, as a loop in at , to the right-nested concatenation of the pushed-in loops followed by the constant loop. This is a plain existence statement (, not ): no uniqueness, no bound on , and no condition on the or beyond their types is asserted.
Degenerate and edge cases made explicit.
- The list is allowed to be empty (); in that case the conclusion reads , i.e. is null-homotopic relative to endpoints. The statement does not exclude this witness.
- If is empty, then , , , hold vacuously, while says ; since is also given, the hypotheses are jointly unsatisfiable, and the theorem holds vacuously for empty .
- If is nonempty, already forces every and every to be nonempty (they contain ), so the nonemptiness content of and is automatic; their remaining content is the path-joining condition.
- and are hypotheses of the theorem but do not appear in the conclusion; the conclusion mentions only , , (through the base points ), and .
- The loops live in the subspaces ; the homotopy witnessing is a homotopy in , with no requirement that it stay inside any or any union of them.
Confirmed by the mission captain (proposal self-audit).