Path homotopy helpers #
Small path and path-homotopy quotient lemmas used by the universal-cover construction. The quotient subpath identities are adapted from Kim Morrison's Mathlib universal-cover drafts, especially #31576 and #38292, following the earlier Tau Ceti work in #42.
Restrict a path whose image lies in a subset to a path in the corresponding subtype.
The source and target are the given subtype endpoints, and coercing the restricted path back to
X recovers the original path pointwise.
Equations
- γ.codRestrict hmem = { toFun := Set.codRestrict (⇑γ) s hmem, continuous_toFun := ⋯, source' := ⋯, target' := ⋯ }
Instances For
The underlying point of γ.codRestrict hmem at time t is just γ t, viewed in X.
Mapping γ.codRestrict hmem back along the subtype inclusion recovers γ.
If the extended path stays inside U throughout [t₀, t₁], then the truncated subpath has
range in U.
The family of initial segments of γ : Path a b: at parameter t : I, the path
s ↦ γ.extend (min s t) from a to γ t (initialSegmentFamily_apply). At t = 0 this is
the constant path at a (initialSegmentFamily_zero); at t = 1 it is γ itself, up to a
trivial right-endpoint cast (initialSegmentFamily_one). The property consumers actually need
is joint continuity in (t, s), recorded as continuous_initialSegmentFamily_uncurry.
Equations
- γ.initialSegmentFamily t = (γ.truncate 0 ↑t).cast ⋯ ⋯
Instances For
The quotient topology on path-homotopy classes. This instance is load-bearing:
Path.Homotopic.Quotient is a def over Quotient, and instance search does not unfold it to
find the generic TopologicalSpace (Quotient _).
Equations
- Path.Homotopic.Quotient.instTopologicalSpace x₀ x = { IsOpen := Path.Homotopic.Quotient.instTopologicalSpace._aux_1 x₀ x, isOpen_univ := ⋯, isOpen_inter := ⋯, isOpen_sUnion := ⋯ }
A set of path-homotopy classes is open exactly when its preimage under quotient construction is open.
In the path-homotopy quotient, concatenating adjacent subpaths of p gives the larger
subpath from the first endpoint to the last endpoint.
A degenerate subpath represents the reflexivity class at its endpoint.
The full [0,1] subpath represents the original path, up to the endpoint casts inserted by
Path.subpath.
Composing on the left with a null-homotopic loop does not change the homotopy class.
Composing on the right with a null-homotopic loop does not change the homotopy class.
Right cancellation in the fundamental groupoid: if γ.trans e and δ.trans e are homotopic,
then γ and δ are homotopic. This is the path-homotopy analogue of a * c = b * c → a = b.
Left cancellation in the fundamental groupoid: if e.trans γ and e.trans δ are homotopic,
then γ and δ are homotopic. This is the path-homotopy analogue of c * a = c * b → a = b.
The image of a based loop under a null-homotopic continuous map is null-homotopic in the target: a map homotopic to a constant collapses every loop to the constant loop.
Casting the reflexivity class at x along h : y = x gives the reflexivity class at y.
If trans γ (symm γ') = refl, then γ = γ'.
This is the quotient analogue of eq_of_div_eq_one : a / b = 1 → a = b.