Documentation

TauCeti.Geometry.Manifold.Flow.Basic

The maximal flow of a vector field #

This file presents Tau Ceti's maximal integral curves as a partial flow whose arguments are ordered as time followed by initial point. The domain and value are adapters for maximalIntegralCurveFlowDomain and maximalIntegralCurve, not independent constructions. The domain-aware group law records both the value equation and the condition that the composite time remains in the interval of existence.

For complete normed model spaces, the existing smooth-dependence theorem for maximal integral curves gives joint openness of the domain and joint smoothness of the flow, so flowing a C^n family of points for a C^n family of times is again C^n. At time zero, the derivative of the flow is the field in the time direction and the identity in the space directions, so flowing for a time τ vanishing at x has derivative w ↦ w + dτ_x(w) • v x at x. Along a trajectory, a function changes at the rate of its derivative in the direction of the vector field. The escape theorem says that a maximal trajectory approaching a finite right endpoint eventually leaves every compact set.

Main declarations #

References #

def TauCeti.flowDomain {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] (v : (x : M) → TangentSpace I x) :
Set (ℝ × M)

The domain of the maximal flow in (time, point) order. This is maximalIntegralCurveFlowDomain transported by Prod.swap.

Instances For
    noncomputable def TauCeti.flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] (v : (x : M) → TangentSpace I x) (t : ℝ) (x : M) :
    M

    The maximal flow of a vector field, total with the same junk values as maximalIntegralCurve.

    Instances For
      @[simp]
      theorem TauCeti.flowOf_apply {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] (v : (x : M) → TangentSpace I x) (t : ℝ) (x : M) :

      The maximal-flow adapter evaluates to the existing maximal integral curve.

      @[simp]
      theorem TauCeti.mem_flowDomain {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] {v : (x : M) → TangentSpace I x} {t : ℝ} {x : M} :

      Membership in the maximal-flow domain is membership in the maximal interval through the initial point.

      theorem TauCeti.mem_flowDomain_zero_of_mem {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] {v : (x : M) → TangentSpace I x} {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) :

      Time zero belongs to the maximal-flow domain of x as soon as some time does.

      theorem TauCeti.flowOf_zero {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] (v : (x : M) → TangentSpace I x) (x : M) :
      flowOf v 0 x = x

      The maximal flow fixes every point at time zero.

      theorem TauCeti.isMIntegralCurveOn_flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) (x : M) :
      IsMIntegralCurveOn (fun (t : ℝ) => flowOf v t x) v {t : ℝ | (t, x) ∈ flowDomain v}

      The trajectory t ↦ flowOf v t x is an integral curve on its maximal interval of existence.

      theorem TauCeti.mem_flowDomain_zero {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) (x : M) :

      Time zero belongs to the maximal-flow domain.

      theorem TauCeti.flowOf_eq_of_isMIntegralCurve {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {γ : ℝ → M} (hγ : IsMIntegralCurve γ v) (t : ℝ) :
      flowOf v t (γ 0) = γ t

      A global integral curve of a C¹ field is the maximal flow through its initial value. No completeness hypothesis is needed on the field or the model space.

      theorem TauCeti.curveVelocity_flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) :
      Manifold.curveVelocity I (fun (s : ℝ) => flowOf v s x) t = v (flowOf v t x)

      The velocity of a maximal-flow trajectory is the vector field at the current point, whenever the trajectory is in its domain.

      theorem TauCeti.mdifferentiableAt_flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) :
      (MDiffAt fun (s : ℝ) => flowOf v s x) t

      A maximal-flow trajectory is differentiable at every time in its domain.

      theorem TauCeti.mfderiv_flowOf_trajectory_apply {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) (a : ℝ) :
      ((mfderiv% fun (s : ℝ) => flowOf v s x) t) a = a • v (flowOf v t x)

      The derivative of a trajectory. At every time in its domain, the derivative of s ↦ flowOf v s x sends a to a • v (flowOf v t x).

      theorem TauCeti.mfderiv_flowOf_trajectory_zero_apply {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) (x : M) (a : ℝ) :
      ((mfderiv% fun (s : ℝ) => flowOf v s x) 0) a = a • v x

      The derivative of a trajectory at time zero. The derivative of s ↦ flowOf v s x at s = 0 sends a to a • v x.

      theorem TauCeti.isOpen_flowDomain {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) :

      On a complete normed model space, the domain of the maximal flow is jointly open in time and initial point.

      theorem TauCeti.contMDiffOn_flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] {n : ℕ∞} (hn : 1 ≤ n) [IsManifold I 1 M] [IsManifold I (↑n) M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent ↑n fun (y : M) => ⟨y, v y⟩) :
      ContMDiffOn ((modelWithCornersSelf ℝ ℝ).prod I) I (↑n) (fun (p : ℝ × M) => flowOf v p.1 p.2) (flowDomain v)

      On a complete normed model space, a C^n vector field has a jointly C^n maximal flow on its domain.

      theorem TauCeti.contMDiffAt_flowOf_comp {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] {n : ℕ∞} (hn : 1 ≤ n) [IsManifold I 1 M] [IsManifold I (↑n) M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent ↑n fun (y : M) => ⟨y, v y⟩) {E' : Type u_4} {H' : Type u_5} {N : Type u_6} [NormedAddCommGroup E'] [NormedSpace ℝ E'] [TopologicalSpace H'] {J : ModelWithCorners ℝ E' H'} [TopologicalSpace N] [ChartedSpace H' N] {τ : N → ℝ} {f : N → M} {z : N} (hτ : ContMDiffAt J (modelWithCornersSelf ℝ ℝ) (↑n) τ z) (hf : ContMDiffAt J I (↑n) f z) (hz : (τ z, f z) ∈ flowDomain v) :
      ContMDiffAt J I (↑n) (fun (y : N) => flowOf v (τ y) (f y)) z

      On a complete normed model space, flowing a C^n family of initial points for a C^n family of times is C^n, wherever the flow is defined.

      theorem TauCeti.mfderiv_flowOf_comp_apply {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {E' : Type u_4} {H' : Type u_5} {N : Type u_6} [NormedAddCommGroup E'] [NormedSpace ℝ E'] [TopologicalSpace H'] {J : ModelWithCorners ℝ E' H'} [TopologicalSpace N] [ChartedSpace H' N] {f : N → M} {p : ℝ × N} (hf : ContMDiffAt J I 1 f p.2) (hp : (p.1, f p.2) ∈ flowDomain v) (w : TangentSpace ((modelWithCornersSelf ℝ ℝ).prod J) p) :
      ((mfderiv% fun (q : ℝ × N) => flowOf v q.1 (f q.2)) p) w = w.1 • v (flowOf v p.1 (f p.2)) + (mfderiv% (flowOf v p.1) (f p.2)) ((mfderiv% f p.2) w.2)

      The differential of a flow out of a map. On a complete normed model space, at a point (t, s) where φₜ(f s) is defined, the differential of (t, s) ↦ φₜ(f s) sends a tangent vector (r, w) to r v + dφₜ(df w).

      theorem TauCeti.hasDerivAt_comp_flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {F : Type u_4} [NormedAddCommGroup F] [NormedSpace ℝ F] {g : M → F} {t : ℝ} {x : M} (hx : (t, x) ∈ flowDomain v) (hg : MDiffAt g (flowOf v t x)) :
      HasDerivAt (fun (s : ℝ) => g (flowOf v s x)) ((d% g (flowOf v t x)) (v (flowOf v t x))) t

      Derivative along a flow line. The derivative in time of a function g along the trajectory of v through x is the derivative of g in the direction of v.

      theorem TauCeti.mfderiv_flowOf_zero_apply {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) (x : M) (a : ℝ) (w : TangentSpace I x) :
      ((mfderiv% fun (y : ℝ × M) => flowOf v y.1 y.2) (0, x)) (a, w) = a • v x + w

      The derivative of the flow at time zero. At (0, x), the derivative of (t, y) ↦ flowOf v t y sends the time direction to the field at x and is the identity in the space direction.

      theorem TauCeti.hasMFDerivAt_flowOf_comp_of_eq_zero {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {x : M} {τ : M → ℝ} {dτ : TangentSpace I x →L[ℝ] ℝ} (hτ : HasMFDerivAt% τ x dτ) (hτx : τ x = 0) :
      HasMFDerivAt% (fun (z : M) => flowOf v (τ z) z) x (ContinuousLinearMap.id ℝ (TangentSpace I x) + dτ.smulRight (v x))

      Flowing for a time that vanishes at a point. If τ x = 0, the map z ↦ flowOf v (τ z) z has derivative w ↦ w + dτ_x(w) • v x at x.

      theorem TauCeti.flowOf_add {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {s t : ℝ} {x : M} (hs : (s, x) ∈ flowDomain v) (ht : (t, flowOf v s x) ∈ flowDomain v) :
      (s + t, x) ∈ flowDomain v ∧ flowOf v t (flowOf v s x) = flowOf v (s + t) x

      The domain-aware group law for the maximal flow. If time s is defined at x and time t is defined after flowing for s, then time s + t is defined at x and gives the same value.

      theorem TauCeti.neg_mem_flowDomain_flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) :

      The flow can be run backwards along a trajectory: if time t is defined at x, then time -t is defined at flowOf v t x.

      theorem TauCeti.flowOf_neg_flowOf {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) :
      flowOf v (-t) (flowOf v t x) = x

      Flowing for time -t undoes flowing for time t.

      theorem TauCeti.flowOf_natCast_mul_of_flowOf_eq {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) (hx : flowOf v t x = x) (k : ℕ) :
      (↑k * t, x) ∈ flowDomain v ∧ flowOf v (↑k * t) x = x

      If x returns to itself at time t, it does so at every natural multiple of t.

      theorem TauCeti.flowOf_flowOf_of_flowOf_eq {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {s t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) (hs : (s, x) ∈ flowDomain v) (hx : flowOf v s x = x) :
      (s, flowOf v t x) ∈ flowDomain v ∧ flowOf v s (flowOf v t x) = flowOf v t x

      If x returns to itself at time s, then so does every point flowOf v t x of its trajectory.

      theorem TauCeti.mfderiv_flowOf_apply_self {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {t : ℝ} {x : M} (ht : (t, x) ∈ flowDomain v) :
      (mfderiv% (flowOf v t) x) (v x) = v (flowOf v t x)

      The flow preserves its generating field. If time t is defined at x, the derivative of the time-t map of the flow carries v x to v (flowOf v t x).

      theorem TauCeti.eventually_flowOf_notMem {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [T2Space M] [BoundarylessManifold I M] [CompleteSpace E] [IsManifold I 1 M] {v : (x : M) → TangentSpace I x} (hv : ContMDiff I I.tangent 1 fun (y : M) => ⟨y, v y⟩) {x : M} {b : ℝ} (hb : IsLUB {t : ℝ | (t, x) ∈ flowDomain v} b) {K : Set M} (hK : IsCompact K) :
      ∀ᶠ (t : ℝ) in nhdsWithin b (Set.Iio b), flowOf v t x ∉ K

      At a finite right endpoint of a maximal interval, the trajectory eventually leaves every compact set.