Existence of the universal cover: a path-connected, locally path-connected, semilocally simply-connected space has a simply-connected covering space
ProvedHatcher.exists_simplyConnected_coverThroughout, a covering space of is a space with a map such that each has an open neighborhood whose preimage is a disjoint union of open sets each mapped homeomorphically onto by (Hatcher, p. 56; Mathlib's IsCoveringMap). Given basepoints , , we write for the induced homomorphism (Hatcher.coverHom) and for its image (Hatcher.coverSubgroup).
Hatcher, pp. 63–65. If is path-connected, locally path-connected and semilocally simply-connected, then has a simply-connected covering space .
Hatcher's construction takes with , topologized by the sets for path-connected open with trivial.
Formalization Note The covering space is a CoveringSpace X, whose total space lives in the same universe as ; Hatcher's construction does. Simple connectivity is SimplyConnectedSpace, which includes path-connectedness. This is the surjectivity of the Galois correspondence at the trivial subgroup.
import Definitions.Def_Hatcher_Covering import Mathlib open Hatcher unitInterval universe u
namespace Hatcher
theorem exists_simplyConnected_cover {X : Type u} [TopologicalSpace X] [PathConnectedSpace X]
[LocallyPathConnectedSpace X] (hX : IsSemilocallySimplyConnected X) :
∃ C : CoveringSpace X, SimplyConnectedSpace C.E := by sorry
end HatcherRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
Read-back of Hatcher.exists_simplyConnected_cover.
universe u
theorem exists_simplyConnected_cover {X : Type u} [TopologicalSpace X] [PathConnectedSpace X]
[LocallyPathConnectedSpace X] (hX : IsSemilocallySimplyConnected X) :
∃ C : CoveringSpace X, SimplyConnectedSpace C.E
Setting and binders
X : Type u— a type in an explicitly named universeu(notType*). This matters becauseCoveringSpace X(below) forces the total space to live in the same universeu.[TopologicalSpace X]— an arbitrary topology.[PathConnectedSpace X]— Mathlib:nonempty : Nonempty Xandjoined : ∀ x y, Joined x y(Joined x y := Nonempty (Path x y)). So is nonempty and any two points are joined by a continuous path.[LocallyPathConnectedSpace X]— Mathlib:∀ x, (𝓝 x).HasBasis (fun s => s ∈ 𝓝 x ∧ IsPathConnected s) id. For every and every neighbourhood of , there is a (not necessarily open) neighbourhood of that is path-connected (IsPathConnected s := ∃ a ∈ s, ∀ b ∈ s, JoinedIn s a b, i.e. nonempty and any two points joined by a path inside ). This is the standard "locally path-connected".hX : IsSemilocallySimplyConnected X— the bundle's definition:∀ x : X, ∃ U ∈ nhds x, ∀ γ : Path x x, (∀ t, γ t ∈ U) → γ.Homotopic (Path.refl x). Every has a neighbourhood (U ∈ nhds x: contains an open set containing ; itself need not be open) such that every loop based at with image in is homotopic rel endpoints, in (Path.Homotopic=HomotopyRel … {0,1}), to the constant loopPath.refl x. I.e. is trivial.
The conclusion uses the bundle's CoveringSpace X (declared in a section where X : Type u):
structure CoveringSpace where
E : Type u
[topE : TopologicalSpace E]
p : E → X
isCoveringMap : IsCoveringMap p
So a CoveringSpace X is a quadruple: a type E in the same universe u as X, a topology on E (registered as an instance via attribute [instance] CoveringSpace.topE), a function p : E → X, and a proof that p is a covering map in Mathlib's sense — every has an open neighbourhood with open and a homeomorphism over , with discrete. Surjectivity of p is not part of CoveringSpace (Mathlib allows empty fibres).
SimplyConnectedSpace C.E — Mathlib: Nonempty (FundamentalGroupoid C.E ≌ Discrete Unit), equivalently is nonempty, path-connected, and any two paths in with the same endpoints are homotopic rel endpoints (in particular for every ).
Hypotheses
- is a nonempty, path-connected topological space.
- is locally path-connected.
- is semilocally simply connected (every point has a neighbourhood in which loops at that point are null-homotopic in ).
Conclusion
In words: there exists a topological space (in the same universe as ) and a covering map such that is simply connected. This is the existence of a universal cover.
Remarks
- Match with Hatcher Prop. 1.36 (existence half). Hatcher: "Suppose is path-connected, locally path-connected, and semilocally simply-connected. Then has a simply-connected covering space." The hypotheses and conclusion coincide with the Lean statement. Hatcher's Prop. 1.36 continues with the classification of connected covers by subgroups; that part is not in this statement — only the existence of one simply-connected cover is asserted.
- No uniqueness / universality is claimed. The statement does not say the cover is unique up to isomorphism, nor that it covers every other connected cover (the "universal" property).
IsIsomorphic/IsPointedIsomorphicfrom the bundle are not mentioned. - Surjectivity of
pfollows but is not stated.SimplyConnectedSpace C.Eforces ; a Mathlib covering map is open and the set of points with empty fibre is open, so is clopen and nonempty in the connected space , hence is onto. So the missing surjectivity inCoveringSpacedoes not weaken the theorem here. In particular the "cheap" witness with (which is a Mathlib covering map of anything,IsCoveringMapOn.of_isEmpty) is ruled out because the empty space is not simply connected. - Trivialisation check. One could try
E := X,p := id(the identity is a covering map). That witness works only if is already simply connected, so the theorem is not trivially satisfiable in general (e.g. needs ). The statement is non-trivial and non-vacuous: the hypotheses are met by every connected manifold and CW complex. - Universe constraint. Because
CoveringSpace XfixesE : Type u, the theorem asserts existence of a universal cover in the same universe as . Hatcher's construction ( = homotopy classes of paths from a basepoint, a quotient of a subtype ofPath-like data inType u) lives inType u, so this is not a real restriction, but a reader should note that a proof cannot escape to a higher universe. LocallyPathConnectedSpaceneighbourhoods need not be open, andUinIsSemilocallySimplyConnectedneed not be open either; both are equivalent to their open-neighbourhood versions, so there is no discrepancy with textbook definitions.- Homotopies in
IsSemilocallySimplyConnectedare taken in , not in , exactly as Hatcher's "inclusion-induced map is trivial"; the stronger "locally simply connected" is not what is assumed, so the hypothesis is the correct (weaker) one. - The topology on
Eis bundled as a structure fieldtopE, not a separate typeclass parameter;SimplyConnectedSpace C.Euses that instance. - Nothing is said about the fibres' cardinality, deck transformations, or
IsNormalCover, even though those definitions exist in the bundle.
Confirmed by the mission captain (proposal self-audit).