Proposition 1.36: every subgroup is for some covering space
ProvedHatcher.exists_cover_of_subgroupThroughout, 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).
Proposition 1.36. Suppose is path-connected, locally path-connected and semilocally simply-connected. Then for every subgroup there is a covering space such that for a suitably chosen basepoint .
Hatcher obtains as the quotient of the universal cover identifying when and .
Formalization Note The statement produces a PointedCover X x₀ (covering space with basepoint over ) which is moreover path-connected, as Hatcher's is; path-connectedness is what makes the covering space eligible for the classification theorem.
import Definitions.Def_Hatcher_Covering import Mathlib open Hatcher unitInterval universe u
namespace Hatcher
theorem exists_cover_of_subgroup {X : Type u} [TopologicalSpace X] [PathConnectedSpace X]
[LocallyPathConnectedSpace X] (hX : IsSemilocallySimplyConnected X) (x₀ : X)
(H : Subgroup (FundamentalGroup X x₀)) :
∃ C : PointedCover X x₀, PathConnectedSpace C.E ∧ C.subgroup = H := by sorry
end HatcherRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
Read-back of Hatcher.exists_cover_of_subgroup.
Setting and binders
X : Type u— a type in a fixed (arbitrary) universeu.[TopologicalSpace X]— a topology onX.[PathConnectedSpace X]— Mathlib's class:Xis nonempty and any two pointsx y : XareJoined, i.e. there exists a continuous pathPath x y(a continuous map from the unit intervalI = [0,1]withγ 0 = x,γ 1 = y). So this instance silently suppliesNonempty X.[LocallyPathConnectedSpace X]— Mathlib's class: for everyx, the neighbourhood filter𝓝 xhas a basis consisting of setsswiths ∈ 𝓝 xandIsPathConnected s(nonempty, and any two of its points joined by a path insides). This is the standard "locally path-connected" (neighbourhoods in the basis need not be open).hX : IsSemilocallySimplyConnected X— the bundle's definition:
Here U ∈ nhds x means U contains an open set containing x (not necessarily open itself); γ.Homotopic (Path.refl x) is Nonempty (γ.Homotopy (refl x)), a homotopy of paths relative to endpoints (Mathlib's Path.Homotopy is ContinuousMap.HomotopyRel … {0,1}), taking place in all of X. So: every point has a neighbourhood U such that every loop at x lying in U is null-homotopic in X, i.e. is trivial. This is Hatcher's definition of semilocally simply-connected.
x₀ : X— a basepoint, explicit.H : Subgroup (FundamentalGroup X x₀)— an arbitrary subgroup of . Mathlib'sFundamentalGroup X x₀isEnd (FundamentalGroupoid.mk x₀), the group of homotopy classes (rel endpoints) of loops atx₀; its multiplication isp * q = q.trans p(i.e.p * qtraversesqfirst, thenp; the opposite of Hatcher's concatenation-order convention). This does not affect which subsets are subgroups.
Hypotheses
Exactly the instance hypotheses above plus hX. Nothing else: no Hausdorffness, no compactness, no second-countability, no assumption on H (it may be ⊥, ⊤, non-normal, infinite index, etc.).
Conclusion
Unpacking PointedCover X x₀ (from the bundle): a structure consisting of
E : Type u— a total space in the same universeuasX;[topE : TopologicalSpace E]— a topology onE(made an instance);p : E → X— a function;isCoveringMap : IsCoveringMap p— Mathlib's covering-map predicate: for everyx : X,IsEvenlyCovered p x (p⁻¹{x}), i.e. the fibrep⁻¹{x}(as a subtype) carries the discrete topology and there is a setU ⊆ Xwithx ∈ U,Uopen,p⁻¹(U)open, and a homeomorphismHom : p⁻¹(U) ≃ₜ U × p⁻¹{x}whose first coordinate isp. Mathlib's docstring explicitly notes:pis not assumed surjective; fibres may be empty;Emay be empty.IsCoveringMap.continuousderivesContinuous p.e₀ : E— a point ofE;p_e₀ : p e₀ = x₀— it lies overx₀.
PathConnectedSpace C.E — the total space E is nonempty and path-connected.
C.subgroup is coverSubgroup C.p C.isCoveringMap.continuous C.p_e₀, which is (coverHom …).range, where coverHom p hp he = FundamentalGroup.mapOfEq ⟨p, hp⟩ he. By Mathlib's mapOfEq_apply, mapOfEq f h [γ] = ([f ∘ γ]).cast h.symm h.symm: push the loop γ at e₀ forward to the loop p ∘ γ at p e₀, and re-index the endpoints to x₀ via the equality p e₀ = x₀. So coverHom is exactly the induced homomorphism and C.subgroup is its image
So the theorem asserts, in words: for a path-connected, locally path-connected, semilocally simply-connected space with basepoint and any subgroup , there exists a covering map with path-connected (and living in universe u) and a point such that .
This is the existence half of Hatcher, Proposition 1.36 (and the surjectivity half of Theorem 1.38).
Remarks
- Not vacuous, not trivial. The hypotheses are satisfiable (e.g. , or any connected manifold or CW complex), and the conclusion for
H = ⊥is existence of a simply-connected (universal) cover, forH = ⊤it is satisfied byE = X,p = id. The conjunctPathConnectedSpace C.Eis what makes the statement non-trivial for intermediateH: without it one could not obviously cheat either (a disconnectedEwithe₀in a componentE'hasC.subgroup = p_*\pi_1(E',e_0), so nothing is gained), but the theorem does not rely on that; it demands path-connectedness outright, as the textbook does. - Universe.
E : Type uis forced to shareX's universe. Since the statement is existential, this restriction only makes it (formally) stronger than "there exists a covering in some universe"; Hatcher's construction ( = a quotient of the set of paths in from ) lives inType uanyway, so nothing is lost. - Surjectivity of
p. Not stated, but automatic here:Eis nonempty,Xis connected, and for a covering map in Mathlib's sense the set ofxwith nonempty fibre is open and so is its complement (fibres over an evenly-coveredUare all homeomorphic top⁻¹{x}); hencepis onto. - Basepoint dependence. The subgroup is attached to the pair
(E, e₀); the theorem only asserts that some basepoint in the fibre works, exactly as in Hatcher ("for a suitably chosen basepoint"). - No uniqueness. Nothing about uniqueness up to isomorphism is asserted here; that is
isPointedIsomorphic_iff. - Semilocal simple connectivity is stated via arbitrary (not necessarily open) neighbourhoods
U ∈ 𝓝 x. Since any suchUcontains an open neighbourhood, and loops in the smaller set are loops inU, this is equivalent to the open-neighbourhood version. Only loops based atxare constrained, matching Hatcher's trivial. - Group-law convention. Mathlib's product on
FundamentalGroupis reversed relative to Hatcher's; the set of subgroups is identical, soHranges over exactly the textbook's subgroups. - Nothing a textbook would include is missing except the customary remark that is then also locally path-connected (which is not stated but is not part of Hatcher's Prop. 1.36 either).
Confirmed by the mission captain (proposal self-audit).