Global integral curves and the flow of a C^1 vector field on a compact manifold #
Category: 1-Mathlib (CSD-free; upstream target Mathlib.Geometry.Manifold.IntegralCurve).
Mathlib has local existence (exists_isMIntegralCurveAt_of_contMDiffAt), uniqueness
(isMIntegralCurve_eq_of_contMDiff), and the uniform-time principle
exists_isMIntegralCurve_of_isMIntegralCurveOn: if every point has a local integral curve on one
and the same Ioo (-ε) ε, every point has a global one. What it does not have is the uniform
ε itself. On a compact manifold it exists, and this module proves it:
- ★
exists_nhds_forall_exists_isMIntegralCurveOn_Ioo— uniform local existence time on a neighbourhood: around every point there is a neighbourhoodUand anε > 0such that everyx ∈ Uhas an integral curve onIoo (-ε) εwithγ 0 = x. This is Mathlib's local proof with the ball of Picard–Lindelöf kept (ContDiffAt.exists_forall_mem_closedBall_exists_eq_forall_mem_Ioo_hasDerivAtgives oneεfor a whole closed ball of chart initial points), and the confinement of the chart solutions to the chart's target made uniform by shrinking the ball. - ★★
exists_isMIntegralCurve_of_compactSpace— on a compact manifold everyC^1vector field has a global integral curve through every point (finite subcover, minimumε, Mathlib's uniform-time principle). - ★★
integralFlow hv— the flowℝ → M → M(indexed by the existence proofhv, well-defined by uniqueness), withintegralFlow hv 0 = id,integralFlow_add(the group law, from uniqueness applied tot ↦ φ (s + t) x), andisMIntegralCurve_integralFlow(each orbit is an integral curve);integralFlow_continuous_time(continuity int) is what uniqueness plus the curves' continuity gives; joint continuity in(t, x)is not stated (see scope).
Honest scope #
Against Mathlib's ODE API (checked 2026-09-17). The three flat lemmas are not duplicates of
Mathlib's IsPicardLindelof.of_contDiffAt_one,
IsPicardLindelof.exists_forall_mem_closedBall_eq_forall_mem_Icc_hasDerivWithinAt and
ContDiffAt.exists_forall_mem_closedBall_exists_eq_forall_mem_Ioo_hasDerivAt: each adds the
confinement of the solutions to a prescribed neighbourhood (the closed Lipschitz ball inside a
given s ∈ 𝓝 x₀, ∀ t, α t ∈ s), which Mathlib's statements do not provide and the manifold
transport needs (the chart solutions must stay in the chart's target). They are the natural
upstream strengthening of Mathlib's lemmas, not restatements of them; uniqueness and the
uniform-time principle are Mathlib's own (isMIntegralCurve_eq_of_contMDiff,
exists_isMIntegralCurve_of_isMIntegralCurveOn).
⚠️ The flow is not yet a Flow. Mathlib's Flow τ α needs joint continuity ℝ × M → M.
Continuity in t for fixed x is here. Continuity in x needs continuous dependence of the
integral curve on its initial point at manifold level; the flat Lipschitz dependence exists
(IsPicardLindelof.exists_forall_mem_closedBall_eq_hasDerivWithinAt_lipschitzOnWith) and gluing it
along the chart cover is the residue (Q29(a′), S–M). Nothing downstream consumes joint continuity
until Q29(d′), which needs the time-t maps as homeomorphisms — that is where (a′) is spent.
⚠️ C^1, and x₀'s chart. The field is assumed C^1 as a section of the tangent bundle, the
hypothesis Mathlib's local theorem takes; C^∞ fields qualify by ContMDiff.of_le. The
transport in exists_nhds_forall_exists_isMIntegralCurveOn_Ioo works in the chart at x₀ and
produces curves for initial points in a chart-neighbourhood of x₀; the neighbourhood is the
preimage of a closed ball, a neighbourhood of x₀ in M by continuousAt_extChartAt.
Provenance and references. The generator-layer plan §11 (Q29);
Mathlib/Geometry/Manifold/IntegralCurve/
(ExistUnique.lean, UniformTime.lean); Mathlib/Analysis/ODE/ExistUnique.lean
(ContDiffAt.exists_forall_mem_closedBall_exists_eq_forall_mem_Ioo_hasDerivAt).
Picard–Lindelöf with the confinement ball kept #
Picard–Lindelöf data for a C^1 field at x₀, with the Lipschitz ball inside a prescribed
neighbourhood s. Mathlib's IsPicardLindelof.of_contDiffAt_one with one extra intersection.
Picard–Lindelöf with the confinement of the solution made explicit
(ODE.FunSpace.compProj_mem_closedBall).
★ C^1 at x₀: a uniform existence time ε for all initial points in a closed ball, with
the solutions confined to a prescribed neighbourhood s of x₀, uniformly.
Uniform local existence time on a neighbourhood #
★ Uniform local existence time on a neighbourhood. For a C^1 vector field and a point
x₀, there are a neighbourhood U of x₀ and an ε > 0 such that every x ∈ U is the initial
point of an integral curve defined on Ioo (-ε) ε.
Mathlib's local theorem (exists_isMIntegralCurveAt_of_contMDiffAt) transported with the ball kept:
the flat Picard–Lindelöf statement gives one ε for every chart initial point in a closed ball
around φ x₀, and the chart solutions are confined, uniformly, to a ball inside
interior φ.target
(ContDiffAt.exists_forall_mem_closedBall_exists_eq_forall_mem_Ioo_hasDerivAt_mem),
so φ.symm ∘ f is an integral curve on the whole interval.
Global integral curves on a compact manifold #
★★ On a compact manifold every C^1 vector field has a global integral curve through every
point. Cover by the neighbourhoods of exists_nhds_forall_exists_isMIntegralCurveOn_Ioo, take a
finite subcover, the minimum of its εs is a uniform existence time, and Mathlib's
exists_isMIntegralCurve_of_isMIntegralCurveOn extends every local curve to a global one.
The flow #
★★ The flow of a C^1 vector field on a compact manifold: integralFlow hv t x is the
value at time t of the (unique) global integral curve through x at time 0.
Equations
- integralFlow hv t x = ⋯.choose t
Instances For
Each orbit of the flow is a global integral curve.
The flow is the unique global integral curve through x at 0.
★★ The group law φ (s + t) = φ s ∘ φ t: u ↦ φ (u + t) x is an integral curve through
φ t x at 0 (IsMIntegralCurve.comp_add), so by uniqueness it is u ↦ φ u (φ t x).