Documentation

RoughPaths.Word.Solver

Log-ODE Solvers #

This file adds the algebraic skeleton of log-ODE solvers for rough differential equations. The actual ODE solve is represented by an abstract time-one flow map, so the definitions do not assume an analytic existence theorem.

Main definitions #

References #

Branched (forest-indexed) analogues live downstream in LeanBSeries.

structure RoughPaths.VectorFieldFlow (E : Type u) [Zero E] :

An abstract time-one flow map for vector fields.

  • timeOne : (EE)EE
  • timeOne_zero (y : E) : self.timeOne (fun (x : E) => 0) y = y
Instances For
    def RoughPaths.VectorFieldFlow.step {E : Type u} [Zero E] (Φ : VectorFieldFlow E) (F : EE) (y : E) :
    E

    Apply the time-one flow of a vector field.

    Equations
    Instances For
      @[simp]
      theorem RoughPaths.VectorFieldFlow.step_zero {E : Type u} [Zero E] (Φ : VectorFieldFlow E) (y : E) :
      Φ.step (fun (x : E) => 0) y = y
      @[reducible, inline]
      abbrev RoughPaths.OneStepMap (T : Type u) (E : Type v) :
      Type (max u v)

      A one-step method on a time domain T and state space E.

      Equations
      Instances For
        def RoughPaths.OneStepMap.solveAlong {T : Type u} {E : Type v} (step : OneStepMap T E) :
        List TEE

        Compose one-step updates along consecutive points of a mesh.

        Equations
        Instances For
          @[simp]
          theorem RoughPaths.OneStepMap.solveAlong_nil {T : Type u} {E : Type v} (step : OneStepMap T E) (y : E) :
          step.solveAlong [] y = y
          @[simp]
          theorem RoughPaths.OneStepMap.solveAlong_singleton {T : Type u} {E : Type v} (step : OneStepMap T E) (t : T) (y : E) :
          step.solveAlong [t] y = y
          @[simp]
          theorem RoughPaths.OneStepMap.solveAlong_cons_cons {T : Type u} {E : Type v} (step : OneStepMap T E) (s t : T) (mesh : List T) (y : E) :
          step.solveAlong (s :: t :: mesh) y = step.solveAlong (t :: mesh) (step s t y)
          theorem RoughPaths.OneStepMap.solveAlong_congr {T : Type u} {E : Type v} {step step' : OneStepMap T E} (h : ∀ (s t : T) (y : E), step s t y = step' s t y) (mesh : List T) (y : E) :
          step.solveAlong mesh y = step'.solveAlong mesh y
          @[simp]
          theorem RoughPaths.OneStepMap.solveAlong_id {T : Type u} {E : Type v} (mesh : List T) (y : E) :
          solveAlong (fun (x x_1 : T) (y : E) => y) mesh y = y
          noncomputable def RoughPaths.IteratedVectorFields.logODEStep {α : Type u} {R : Type v} {E : Type w} {T : Type z} [Fintype α] [DecidableEq α] [Field R] [AddCommMonoid E] [Module R E] (Φ : VectorFieldFlow E) (V : IteratedVectorFields α E) (X : AlgebraicRoughPath T α R) (n : ) (s t : T) (y : E) :
          E

          One geometric log-ODE step over a rough path increment.

          Equations
          Instances For
            @[simp]
            theorem RoughPaths.IteratedVectorFields.logODEStep_self {α : Type u} {R : Type v} {E : Type w} {T : Type z} [Fintype α] [DecidableEq α] [Field R] [AddCommMonoid E] [Module R E] (Φ : VectorFieldFlow E) (V : IteratedVectorFields α E) (X : AlgebraicRoughPath T α R) (n : ) (t : T) (y : E) :
            logODEStep Φ V X n t t y = y
            @[simp]
            theorem RoughPaths.IteratedVectorFields.logODEStep_zero {α : Type u} {R : Type v} {E : Type w} {T : Type z} [Fintype α] [DecidableEq α] [Field R] [AddCommMonoid E] [Module R E] (Φ : VectorFieldFlow E) (V : IteratedVectorFields α E) (X : AlgebraicRoughPath T α R) (s t : T) (y : E) :
            logODEStep Φ V X 0 s t y = y
            @[simp]
            theorem RoughPaths.IteratedVectorFields.logODEStep_comapTime {α : Type u} {R : Type v} {E : Type w} {T : Type z} [Fintype α] [DecidableEq α] [Field R] [AddCommMonoid E] [Module R E] {S : Type y} (f : ST) (Φ : VectorFieldFlow E) (V : IteratedVectorFields α E) (X : AlgebraicRoughPath T α R) (n : ) (s t : S) (y : E) :
            logODEStep Φ V (AlgebraicRoughPath.comapTime f X) n s t y = logODEStep Φ V X n (f s) (f t) y
            theorem RoughPaths.IteratedVectorFields.logODEStep_eq_of_agreeUpToDegree {α : Type u} {R : Type v} {E : Type w} {T : Type z} [Fintype α] [DecidableEq α] [Field R] [AddCommMonoid E] [Module R E] (Φ : VectorFieldFlow E) (V : IteratedVectorFields α E) {X Y : AlgebraicRoughPath T α R} {n : } (h : X.AgreeUpToDegree Y n) (s t : T) (y : E) :
            logODEStep Φ V X n s t y = logODEStep Φ V Y n s t y
            noncomputable def RoughPaths.IteratedVectorFields.logODESolver {α : Type u} {R : Type v} {E : Type w} {T : Type z} [Fintype α] [DecidableEq α] [Field R] [AddCommMonoid E] [Module R E] (Φ : VectorFieldFlow E) (V : IteratedVectorFields α E) (X : AlgebraicRoughPath T α R) (n : ) (mesh : List T) (y : E) :
            E

            The geometric log-ODE solver along a time mesh.

            Equations
            Instances For
              theorem RoughPaths.IteratedVectorFields.logODESolver_eq_of_agreeUpToDegree {α : Type u} {R : Type v} {E : Type w} {T : Type z} [Fintype α] [DecidableEq α] [Field R] [AddCommMonoid E] [Module R E] (Φ : VectorFieldFlow E) (V : IteratedVectorFields α E) {X Y : AlgebraicRoughPath T α R} {n : } (h : X.AgreeUpToDegree Y n) (mesh : List T) (y : E) :
              logODESolver Φ V X n mesh y = logODESolver Φ V Y n mesh y