Homotopy lifting property (c) for covering spaces
ProvedHatcher.homotopy_lifting_propertyLet be a covering space and let be any topological space. Given a continuous map (with ) and a continuous map lifting the restriction of to , i.e.
there is a unique continuous map lifting and restricting to the given on :
Uniqueness means: any continuous with and for all equals .
This is statement (c) in Hatcher's proof of Theorem 1.7 (restated later as Proposition 1.30). It is the general lifting principle from which the path lifting property (a) ( a point) and the lifting of homotopies of paths (b) () are deduced.
Formalization Note is an arbitrary topological space, with no separation or connectedness hypotheses, exactly as in Hatcher. The covering hypothesis is Mathlib's IsCoveringMap; the domain is written Y × I in Hatcher's coordinate order.
import Definitions.Def_Hatcher_Circle import Mathlib open unitInterval Hatcher
namespace Hatcher
theorem homotopy_lifting_property {E X Y : Type*} [TopologicalSpace E] [TopologicalSpace X]
[TopologicalSpace Y] {p : E → X} (hp : IsCoveringMap p)
(F : C(Y × I, X)) (F₀ : C(Y, E)) (hF₀ : ∀ y, p (F₀ y) = F (y, 0)) :
∃! F' : C(Y × I, E), p ∘ F' = F ∧ ∀ y, F' (y, 0) = F₀ y := by sorry
end HatcherRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
Read-back of Hatcher.homotopy_lifting_property.
The statement is universally quantified over three arbitrary topological spaces , , (each may live in its own universe; no separation, connectedness, local connectedness, compactness, or nonemptiness assumptions are made on any of them), together with an arbitrary function and the following data and hypotheses:
- Hypothesis on . is a covering map in Mathlib's sense: for every point , the point is "evenly covered" by with fibre . Unfolded, this means that for every : the subspace carries the discrete topology, and there exists an open set with such that is open in and there is a homeomorphism
whose first coordinate agrees with , i.e. for all . Note what this does not include: is not assumed surjective (a fibre may be empty, in which case the condition just says has an open neighbourhood disjoint from ); the fibres over different points need not be homeomorphic to one another; continuity of is not a separate hypothesis (it is a consequence of the definition). The covering-map hypothesis is the only assumption on .
-
The map . is a continuous map , where is the closed unit interval with its subspace topology and carries the product topology. The order of the coordinates is fixed: the first coordinate is the point , the second is the parameter , so is evaluated as .
-
The map . is a continuous map .
-
Compatibility hypothesis. For every ,
Conclusion. There exists a unique continuous map such that both of the following hold:
- as functions , i.e. for all and all ; and
- for every .
The uniqueness clause ranges exactly over continuous maps : it asserts that if is any continuous map satisfying and for all , then (equality of continuous maps, i.e. for all ). Nothing is asserted about non-continuous functions satisfying the two conditions, and no property of beyond continuity and conditions 1–2 is claimed (in particular nothing about how depends on the data).
Degenerate cases silently included. If is empty, the hypotheses hold vacuously and the conclusion asserts the existence and uniqueness of the (unique) map from the empty space, so the statement is trivially true in that case. If is empty, then is automatically a covering map for any , and the existence of forces to be empty. If is a single point, or is a homeomorphism, the statement is still asserted with the same content. No hypothesis excludes from having empty fibres over points of that are hit by ; the theorem asserts the conclusion for all such situations regardless.
This declaration does not use any of the custom definitions from the bundle (circleCover, omegaLoopN, omegaLoop, omegaClass); it refers only to Mathlib notions.
Confirmed by the mission captain (proposal self-audit).