Documentation

BSeries.Numerics.CommutatorFree

Commutator-Free Lie Group Methods #

This file defines the algebraic skeleton of commutator-free Lie group methods. Such methods advance by composing exponentials of linear combinations of stage generators, avoiding explicit commutators in the method format.

Main definitions #

References #

@[reducible, inline]
abbrev BSeries.StageCombination (ι : Type u) (R : Type v) :
Type (max u v)

Coefficients of a linear combination of stage generators.

Equations
Instances For
    def BSeries.StageCombination.eval {ι : Type u} {R : Type v} {E : Type w} [Fintype ι] [Semiring R] [AddCommMonoid E] [Module R E] (c : StageCombination ι R) (K : ιE) :
    E

    Evaluate a stage linear combination on stage generator data.

    Equations
    Instances For
      theorem BSeries.StageCombination.eval_congr {ι : Type u} {R : Type v} {E : Type w} [Fintype ι] [Semiring R] [AddCommMonoid E] [Module R E] {c d : StageCombination ι R} {K L : ιE} (hc : ∀ (i : ι), c i = d i) (hK : ∀ (i : ι), K i = L i) :
      c.eval K = d.eval L
      theorem BSeries.StageCombination.eval_congr_coeff {ι : Type u} {R : Type v} {E : Type w} [Fintype ι] [Semiring R] [AddCommMonoid E] [Module R E] {c d : StageCombination ι R} (K : ιE) (hc : ∀ (i : ι), c i = d i) :
      c.eval K = d.eval K
      theorem BSeries.StageCombination.eval_congr_data {ι : Type u} {R : Type v} {E : Type w} [Fintype ι] [Semiring R] [AddCommMonoid E] [Module R E] (c : StageCombination ι R) {K L : ιE} (hK : ∀ (i : ι), K i = L i) :
      c.eval K = c.eval L
      @[simp]
      theorem BSeries.StageCombination.eval_zero_coeff {ι : Type u} {R : Type v} {E : Type w} [Fintype ι] [Semiring R] [AddCommMonoid E] [Module R E] (K : ιE) :
      eval (fun (x : ι) => 0) K = 0
      @[simp]
      theorem BSeries.StageCombination.eval_zero_data {ι : Type u} {R : Type v} {E : Type w} [Fintype ι] [Semiring R] [AddCommMonoid E] [Module R E] (c : StageCombination ι R) :
      (c.eval fun (x : ι) => 0) = 0
      structure BSeries.ExponentialAction (A : Type u) (M : Type v) [Zero A] :
      Type (max u v)

      An abstract exponential action generated by elements of A.

      • act : AMM
      • act_zero (y : M) : self.act 0 y = y
      Instances For
        def BSeries.ExponentialAction.applyList {A : Type u} {M : Type v} [Zero A] (Φ : ExponentialAction A M) :
        List AMM

        Compose exponentials in list order.

        Equations
        Instances For
          @[simp]
          theorem BSeries.ExponentialAction.applyList_nil {A : Type u} {M : Type v} [Zero A] (Φ : ExponentialAction A M) (y : M) :
          Φ.applyList [] y = y
          @[simp]
          theorem BSeries.ExponentialAction.applyList_cons {A : Type u} {M : Type v} [Zero A] (Φ : ExponentialAction A M) (a : A) (as : List A) (y : M) :
          Φ.applyList (a :: as) y = Φ.applyList as (Φ.act a y)
          @[simp]
          theorem BSeries.ExponentialAction.applyList_singleton {A : Type u} {M : Type v} [Zero A] (Φ : ExponentialAction A M) (a : A) (y : M) :
          Φ.applyList [a] y = Φ.act a y
          theorem BSeries.ExponentialAction.applyList_congr {A : Type u} {M : Type v} [Zero A] {Φ : ExponentialAction A M} {as bs : List A} :
          as = bs∀ (y : M), Φ.applyList as y = Φ.applyList bs y
          @[simp]
          theorem BSeries.ExponentialAction.applyList_zero_singleton {A : Type u} {M : Type v} [Zero A] (Φ : ExponentialAction A M) (y : M) :
          Φ.applyList [0] y = y
          structure BSeries.CommutatorFreeMethod (ι : Type u) (R : Type v) :
          Type (max u v)

          A commutator-free method represented by lists of stage-generator combinations.

          Instances For

            The method with no exponential evaluations.

            Equations
            Instances For

              A one-stage, one-exponential method with coefficient 1.

              Equations
              Instances For
                def BSeries.CommutatorFreeMethod.stageGenerators {ι : Type u} {R : Type v} {A : Type w} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) (K : ιA) (i : ι) :

                Stage generators produced by evaluating the stage exponential combinations.

                Equations
                Instances For
                  def BSeries.CommutatorFreeMethod.stepGenerators {ι : Type u} {R : Type v} {A : Type w} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) (K : ιA) :

                  Step generators produced by evaluating the output exponential combinations.

                  Equations
                  Instances For
                    def BSeries.CommutatorFreeMethod.stagePoint {ι : Type u} {R : Type v} {A : Type w} {M : Type x} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) (Φ : ExponentialAction A M) (K : ιA) (i : ι) (y : M) :
                    M

                    A stage point obtained by composing the stage exponentials.

                    Equations
                    Instances For
                      def BSeries.CommutatorFreeMethod.step {ι : Type u} {R : Type v} {A : Type w} {M : Type x} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) (Φ : ExponentialAction A M) (K : ιA) (y : M) :
                      M

                      One commutator-free step from precomputed stage generators.

                      Equations
                      Instances For
                        @[simp]
                        theorem BSeries.CommutatorFreeMethod.identity_stageGenerators {ι : Type u} {R : Type v} {A : Type w} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (K : ιA) (i : ι) :
                        @[simp]
                        theorem BSeries.CommutatorFreeMethod.identity_stepGenerators {ι : Type u} {R : Type v} {A : Type w} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (K : ιA) :
                        @[simp]
                        theorem BSeries.CommutatorFreeMethod.identity_stagePoint {ι : Type u} {R : Type v} {A : Type w} {M : Type x} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (Φ : ExponentialAction A M) (K : ιA) (i : ι) (y : M) :
                        (identity ι R).stagePoint Φ K i y = y
                        @[simp]
                        theorem BSeries.CommutatorFreeMethod.identity_step {ι : Type u} {R : Type v} {A : Type w} {M : Type x} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (Φ : ExponentialAction A M) (K : ιA) (y : M) :
                        (identity ι R).step Φ K y = y
                        theorem BSeries.CommutatorFreeMethod.stageGenerators_congr_data {ι : Type u} {R : Type v} {A : Type w} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) {K L : ιA} (hK : ∀ (i : ι), K i = L i) (i : ι) :
                        theorem BSeries.CommutatorFreeMethod.stepGenerators_congr_data {ι : Type u} {R : Type v} {A : Type w} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) {K L : ιA} (hK : ∀ (i : ι), K i = L i) :
                        theorem BSeries.CommutatorFreeMethod.stagePoint_congr_data {ι : Type u} {R : Type v} {A : Type w} {M : Type x} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) (Φ : ExponentialAction A M) {K L : ιA} (hK : ∀ (i : ι), K i = L i) (i : ι) (y : M) :
                        cf.stagePoint Φ K i y = cf.stagePoint Φ L i y
                        theorem BSeries.CommutatorFreeMethod.step_congr_data {ι : Type u} {R : Type v} {A : Type w} {M : Type x} [Fintype ι] [Semiring R] [AddCommMonoid A] [Module R A] (cf : CommutatorFreeMethod ι R) (Φ : ExponentialAction A M) {K L : ιA} (hK : ∀ (i : ι), K i = L i) (y : M) :
                        cf.step Φ K y = cf.step Φ L y
                        @[simp]
                        @[simp]
                        theorem BSeries.CommutatorFreeMethod.singleExponential_step {R : Type v} {A : Type w} {M : Type x} [Semiring R] [AddCommMonoid A] [Module R A] (Φ : ExponentialAction A M) (K : PUnit.{u_1 + 1}A) (y : M) :
                        (singleExponential R).step Φ K y = Φ.act (K PUnit.unit) y