Path homotopy helpers #
Small path and path-homotopy lemmas, mostly for 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.
Path.exists_homotopy_forall_mem_of_isSimplyConnected is not from that source: it records that
SimplyConnectedSpace.paths_homotopic, applied in a subspace ↥V, yields a homotopy in the
ambient space whose intermediate paths all stay in V. Analytic continuation consumes it in
Analysis/Complex/Conformal/GlobalBranch.lean.
Path.homotopic_of_continuous_square is likewise adapted from Kim Morrison's
#38292. It is used by
AlgebraicTopology/UniversalCover/BasedPath.lean, where it previously lived privately, and by
AlgebraicTopology/Sphere/Puncture.lean. The lemma
Path.Homotopic.refl_of_forall_mem_of_nullhomotopic is not from #38292; it was factored out of
AlgebraicTopology/SemilocallySimplyConnected/Basic.lean.
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 γ.
Mapping a constant path gives the constant path at the image point.
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
Every point on a path lies in the path component of its source.
A path whose source lies in a path component remains in that path component.
Two paths with the same endpoints in a simply connected set are homotopic inside it. For
p and q running in V between the same two points of V, there is a homotopy from p to q
every intermediate path of which again lies in V.
The homotopy is stated in the ambient space rather than in ↥V, with membership in V as a
separate conclusion: that is the form consumers want, and it spares them transporting along the
subtype.
A square with prescribed edges is a path homotopy. A continuous map on I × I that
restricts to p at t = 0 and to q at t = 1, and is constant along each of the edges s = 0
and s = 1, exhibits p and q as homotopic paths.
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.
A loop that stays in a set whose inclusion is null-homotopic is itself null-homotopic in the ambient space.
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.