Documentation

Frourio.Analysis.MinimizingMovement

Minimizing Movement (JKO-type scheme) #

This file implements the minimizing movement scheme (JKO scheme) for gradient flows in general metric spaces, without dependency on measure theory.

Main definitions #

Main results #

def Frourio.distSquared {X : Type u_1} [PseudoMetricSpace X] (x y : X) :

Squared distance function for convenience.

Equations
Instances For
    noncomputable def Frourio.MmFunctional {X : Type u_1} [PseudoMetricSpace X] (τ : ) (F : X) (xPrev x : X) :

    The functional to minimize in the minimizing movement scheme. MmFunctional τ F xPrev x = F(x) + (1/(2τ)) * d²(x, xPrev)

    Equations
    Instances For
      def Frourio.IsMinimizer {Y : Type u_2} (f : Y) (x : Y) :

      A point is a minimizer if it achieves the minimum value of the functional.

      Equations
      Instances For
        def Frourio.MmStep {X : Type u_1} [PseudoMetricSpace X] (τ : ) (F : X) (xPrev x : X) :

        A single step of the minimizing movement scheme.

        Equations
        Instances For
          def Frourio.MmProper {X : Type u_1} (F : X) :

          The functional F is proper if it takes finite values somewhere.

          Equations
          Instances For
            def Frourio.MmCoercive {X : Type u_1} [PseudoMetricSpace X] [Nonempty X] (F : X) :

            The functional F is coercive if it grows to infinity at infinity.

            Equations
            Instances For

              The functional F has compact sublevels if its sublevel sets are relatively compact.

              Equations
              Instances For
                structure Frourio.MmCurve {X : Type u_1} [PseudoMetricSpace X] (τ : ) (F : X) (x0 : X) :
                Type u_1

                Discrete curve obtained from the minimizing movement scheme.

                • points : X

                  The discrete points at times nτ

                • init : self.points 0 = x0

                  Initial condition

                • step (n : ) : MmStep τ F (self.points n) (self.points (n + 1))

                  Each point is obtained by minimizing movement

                Instances For
                  noncomputable def Frourio.MmCurve.interpolate {X : Type u_1} [PseudoMetricSpace X] {τ : } {F : X} {x0 : X} (curve : MmCurve τ F x0) (t : ) :
                  X

                  Linear interpolation between discrete points for continuous extension.

                  Equations
                  Instances For
                    theorem Frourio.mm_energy_decrease {X : Type u_1} [PseudoMetricSpace X] {τ : } ( : 0 < τ) {F : X} {xPrev x : X} (h : MmStep τ F xPrev x) :
                    F x F xPrev

                    Energy decrease along the minimizing movement scheme.

                    theorem Frourio.mm_distance_estimate {X : Type u_1} [PseudoMetricSpace X] {τ : } ( : 0 < τ) {F : X} {xPrev x : X} (h : MmStep τ F xPrev x) :
                    distSquared x xPrev 2 * τ * (F xPrev - F x)

                    A priori estimate on distance for the minimizing movement scheme.

                    theorem Frourio.sublevel_closed_of_lsc {X : Type u_1} [PseudoMetricSpace X] {F : X} (hF : LowerSemicontinuous F) (c : ) :
                    IsClosed {x : X | F x c}

                    Helper: sublevel sets are closed for lower semicontinuous functions.

                    theorem Frourio.lsc_bddBelow_on_compact {X : Type u_1} [PseudoMetricSpace X] {f : X} {K : Set X} (hK_compact : IsCompact K) (_hK_nonempty : K.Nonempty) (hf_lsc : LowerSemicontinuous f) :
                    BddBelow (f '' K)

                    Helper: A lower semicontinuous function on a compact set is bounded below.

                    theorem Frourio.exists_approx_min_on_compact {X : Type u_1} [PseudoMetricSpace X] {f : X} {K : Set X} (hK_compact : IsCompact K) (hK_nonempty : K.Nonempty) (hf_lsc : LowerSemicontinuous f) (ε : ) :
                    ε > 0xK, f x < sInf (f '' K) + ε

                    Helper: For the infimum m of f on K, we can find points arbitrarily close to m.

                    theorem Frourio.lsc_attains_min_on_compact {X : Type u_1} [PseudoMetricSpace X] {f : X} {K : Set X} (hK_compact : IsCompact K) (hK_nonempty : K.Nonempty) (hf_lsc : LowerSemicontinuous f) :
                    xK, yK, f x f y

                    A lower semicontinuous real-valued function on a non-empty compact set attains its infimum. This is a special case of the Weierstrass extreme value theorem.

                    theorem Frourio.mm_step_exists {X : Type u_1} [PseudoMetricSpace X] {τ : } ( : 0 < τ) {F : X} {xPrev : X} (hF_lsc : LowerSemicontinuous F) (hF_proper : MmProper F) (hF_compact : MmCompactSublevels F) :
                    ∃ (x : X), MmStep τ F xPrev x

                    Existence of minimizers for the minimizing movement step.

                    theorem Frourio.mm_curve_energy_dissipation {X : Type u_1} [PseudoMetricSpace X] {τ : } ( : 0 < τ) {F : X} {x0 : X} (curve : MmCurve τ F x0) (n : ) :
                    F (curve.points n) F x0

                    Energy dissipation inequality for a discrete curve.

                    theorem Frourio.mm_curve_distance_sum {X : Type u_1} [PseudoMetricSpace X] {τ : } ( : 0 < τ) {F : X} {x0 : X} (curve : MmCurve τ F x0) (N : ) :
                    nFinset.range N, distSquared (curve.points (n + 1)) (curve.points n) 2 * τ * (F x0 - F (curve.points N))

                    Sum of squared distances is bounded by initial energy difference.