Documentation

TauCeti.Analysis.Calculus.Morse.FlowExistence

Existence of the negative gradient flow #

The dynamical description of Morse theory reads its trajectory spaces off a flow: stable and unstable sets, and the Lyapunov theory of a decreasing function along trajectories, are statements about a Flow.IsNegativeGradient flow. This file produces such a flow for every function whose gradient is globally Lipschitz, by feeding -∇ f to TauCeti.flowOfLipschitz.

Global Lipschitz continuity of ∇ f is a sufficient hypothesis for the trajectories to exist for all time; it holds for instance whenever f is with a bounded second derivative, and in particular for the split quadratic model.

Throughout, ∇ f is Mathlib's gradient: a function defined for every f, taking the value 0 wherever f is not differentiable. What is constructed below is therefore the flow of the vector field -∇ f, and no differentiability of f is assumed for it, exactly as the predicate Flow.IsNegativeGradient it witnesses assumes none. Differentiability of f is what makes that field the gradient field of f, and it enters where the flow is used as a gradient flow rather than as the flow of a Lipschitz field: TauCeti.negativeGradientFlow_orbit_antitone records Lyapunov descent along any orbit on which f is differentiable.

Main declarations #

References #

noncomputable def TauCeti.negativeGradientFlow {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (f : E) {K : NNReal} (hf : LipschitzWith K (gradient f)) :

The negative gradient flow of a function whose gradient is globally Lipschitz.

This is the flow of the vector field -∇ f. For a differentiable f that field is the negative gradient field and this is the negative gradient flow in the usual sense; for an f that is not differentiable everywhere it is the flow of Mathlib's totalized gradient field, which is the object the hypothesis LipschitzWith K (∇ f) speaks about.

Equations
Instances For

    The negative gradient flow is a negative gradient flow: each of its orbits solves γ' = -∇f(γ).

    theorem TauCeti.eq_negativeGradientFlow {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {K : NNReal} (f : E) (hf : LipschitzWith K (gradient f)) {γ : E} ( : IsIntegralCurve γ fun (x : ) (y : E) => -gradient f y) (t : ) :
    γ t = (negativeGradientFlow f hf).toFun t (γ 0)

    Every global negative gradient trajectory is an orbit of the negative gradient flow.

    Independence of the Lipschitz bound. Two Lipschitz witnesses for ∇ f, with possibly different constants, produce the same negative gradient flow.

    theorem TauCeti.forall_negativeGradientFlow_eq_self_iff {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {K : NNReal} (f : E) (hf : LipschitzWith K (gradient f)) (x : E) :
    (∀ (t : ), (negativeGradientFlow f hf).toFun t x = x) gradient f x = 0

    The rest points of the negative gradient flow are the zeros of ∇ f, that is, the critical points of a differentiable f.

    theorem TauCeti.negativeGradientFlow_orbit_antitone {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] {K : NNReal} (f : E) (hf : LipschitzWith K (gradient f)) (x : E) (hf' : ∀ (t : ), DifferentiableAt f ((negativeGradientFlow f hf).toFun t x)) :
    Antitone fun (t : ) => f ((negativeGradientFlow f hf).toFun t x)

    Lyapunov descent along the negative gradient flow: a function decreases along any orbit on which it is differentiable. This is the point at which differentiability of f is needed, the construction of the flow itself only seeing the vector field -∇ f.