Documentation

BSeries.Numerics.RungeKutta

Runge-Kutta Elementary Weights #

This file defines Runge-Kutta tableaux and their elementary weights on rooted trees. The recursive stage weights are first defined for planar trees, then shown invariant under child permutations so that they descend to non-planar rooted trees.

Main definitions #

References #

structure BSeries.RungeKutta (ι : Type u) (R : Type v) :
Type (max u v)

A Runge-Kutta tableau with stage type ι and coefficients in R.

  • A : ιιR
  • b : ιR
Instances For

    A one-stage Runge-Kutta tableau with stage matrix entry a and weight 1.

    Equations
    Instances For

      Forward Euler as a one-stage Runge-Kutta tableau.

      Equations
      Instances For

        Backward Euler as a one-stage Runge-Kutta tableau.

        Equations
        Instances For
          def BSeries.RungeKutta.twoStageExplicit (R : Type v) [Zero R] (a21 b1 b2 : R) :

          A two-stage explicit Runge-Kutta tableau.

          Equations
          Instances For
            def BSeries.RungeKutta.threeStageExplicit (R : Type v) [Zero R] (a21 a31 a32 b1 b2 b3 : R) :

            A three-stage explicit Runge-Kutta tableau.

            Equations
            Instances For
              @[simp]
              theorem BSeries.RungeKutta.oneStage_A {R : Type v} [One R] (a : R) (i j : PUnit.{u_1 + 1}) :
              (oneStage R a).A i j = a
              @[simp]
              theorem BSeries.RungeKutta.oneStage_b {R : Type v} [One R] (a : R) (i : PUnit.{u_1 + 1}) :
              (oneStage R a).b i = 1
              def BSeries.RungeKutta.abscissa {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (i : ι) :
              R

              Row sum cᵢ = ∑ⱼ aᵢⱼ of the tableau.

              Equations
              Instances For
                @[simp]
                theorem BSeries.RungeKutta.twoStageExplicit_abscissa_zero {R : Type v} [CommSemiring R] (a21 b1 b2 : R) :
                (twoStageExplicit R a21 b1 b2).abscissa 0 = 0
                @[simp]
                theorem BSeries.RungeKutta.twoStageExplicit_abscissa_one {R : Type v} [CommSemiring R] (a21 b1 b2 : R) :
                (twoStageExplicit R a21 b1 b2).abscissa 1 = a21
                @[simp]
                theorem BSeries.RungeKutta.threeStageExplicit_abscissa_zero {R : Type v} [CommSemiring R] (a21 a31 a32 b1 b2 b3 : R) :
                (threeStageExplicit R a21 a31 a32 b1 b2 b3).abscissa 0 = 0
                @[simp]
                theorem BSeries.RungeKutta.threeStageExplicit_abscissa_one {R : Type v} [CommSemiring R] (a21 a31 a32 b1 b2 b3 : R) :
                (threeStageExplicit R a21 a31 a32 b1 b2 b3).abscissa 1 = a21
                @[simp]
                theorem BSeries.RungeKutta.threeStageExplicit_abscissa_two {R : Type v} [CommSemiring R] (a21 a31 a32 b1 b2 b3 : R) :
                (threeStageExplicit R a21 a31 a32 b1 b2 b3).abscissa 2 = a31 + a32
                def BSeries.RungeKutta.stageWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :
                HopfAlgebras.PTreeιR

                Recursive stage weight of a planar tree.

                Equations
                Instances For
                  def BSeries.RungeKutta.stageWeightList {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :

                  Product of child contributions in the recursive stage weight.

                  Equations
                  Instances For
                    @[simp]
                    @[simp]
                    theorem BSeries.RungeKutta.stageWeightList_nil {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (i : ι) :
                    @[simp]
                    theorem BSeries.RungeKutta.stageWeightList_cons {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (t : HopfAlgebras.PTree) (ts : List HopfAlgebras.PTree) (i : ι) :
                    rk.stageWeightList (t :: ts) i = (∑ j : ι, rk.A i j * rk.stageWeight t j) * rk.stageWeightList ts i
                    @[simp]
                    @[simp]
                    theorem BSeries.RungeKutta.stageWeight_chain3 {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (i : ι) :
                    rk.stageWeight HopfAlgebras.PTree.chain3 i = j : ι, rk.A i j * rk.abscissa j
                    @[simp]
                    def BSeries.RungeKutta.weight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (t : HopfAlgebras.PTree) :
                    R

                    Elementary weight of a planar rooted tree.

                    Equations
                    Instances For
                      def BSeries.RungeKutta.weightBullet {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :
                      R

                      Elementary weight of the one-node tree.

                      Equations
                      Instances For
                        @[simp]
                        theorem BSeries.RungeKutta.oneStage_weight {R : Type v} [CommSemiring R] (a : R) (t : HopfAlgebras.PTree) :
                        (oneStage R a).weight t = a ^ (t.order - 1)
                        @[simp]
                        theorem BSeries.RungeKutta.weight_chain3 {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :
                        rk.weight HopfAlgebras.PTree.chain3 = i : ι, rk.b i * j : ι, rk.A i j * rk.abscissa j
                        @[simp]
                        theorem BSeries.RungeKutta.weight_cherry {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :
                        rk.weight HopfAlgebras.PTree.cherry = i : ι, rk.b i * (rk.abscissa i * rk.abscissa i)
                        @[simp]
                        theorem BSeries.RungeKutta.twoStageExplicit_weightBullet {R : Type v} [CommSemiring R] (a21 b1 b2 : R) :
                        (twoStageExplicit R a21 b1 b2).weightBullet = b1 + b2
                        @[simp]
                        theorem BSeries.RungeKutta.threeStageExplicit_weightBullet {R : Type v} [CommSemiring R] (a21 a31 a32 b1 b2 b3 : R) :
                        (threeStageExplicit R a21 a31 a32 b1 b2 b3).weightBullet = b1 + b2 + b3
                        @[simp]
                        theorem BSeries.RungeKutta.threeStageExplicit_weight_chain2 {R : Type v} [CommSemiring R] (a21 a31 a32 b1 b2 b3 : R) :
                        (threeStageExplicit R a21 a31 a32 b1 b2 b3).weight HopfAlgebras.PTree.chain2 = b2 * a21 + b3 * (a31 + a32)
                        @[simp]
                        theorem BSeries.RungeKutta.threeStageExplicit_weight_chain3 {R : Type v} [CommSemiring R] (a21 a31 a32 b1 b2 b3 : R) :
                        (threeStageExplicit R a21 a31 a32 b1 b2 b3).weight HopfAlgebras.PTree.chain3 = b3 * (a32 * a21)
                        @[simp]
                        theorem BSeries.RungeKutta.threeStageExplicit_weight_cherry {R : Type v} [CommSemiring R] (a21 a31 a32 b1 b2 b3 : R) :
                        (threeStageExplicit R a21 a31 a32 b1 b2 b3).weight HopfAlgebras.PTree.cherry = b2 * (a21 * a21) + b3 * ((a31 + a32) * (a31 + a32))
                        def BSeries.RungeKutta.weightList {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (ts : List HopfAlgebras.PTree) :
                        R

                        Multiplicative elementary weight of a planar rooted forest.

                        Equations
                        Instances For
                          @[simp]
                          theorem BSeries.RungeKutta.weightList_nil {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :
                          @[simp]
                          theorem BSeries.RungeKutta.weightList_cons {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (t : HopfAlgebras.PTree) (ts : List HopfAlgebras.PTree) :
                          rk.weightList (t :: ts) = rk.weight t * rk.weightList ts
                          @[simp]
                          theorem BSeries.RungeKutta.weightList_append {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (ts us : List HopfAlgebras.PTree) :
                          rk.weightList (ts ++ us) = rk.weightList ts * rk.weightList us
                          theorem BSeries.RungeKutta.weightList_perm {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) {ts us : List HopfAlgebras.PTree} (h : ts.Perm us) :
                          rk.weightList ts = rk.weightList us
                          theorem BSeries.RungeKutta.stageWeightList_perm {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (i : ι) {ts us : List HopfAlgebras.PTree} (h : ts.Perm us) :
                          @[simp]
                          theorem BSeries.RungeKutta.stageWeightList_append {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (ts us : List HopfAlgebras.PTree) (i : ι) :
                          rk.stageWeightList (ts ++ us) i = rk.stageWeightList ts i * rk.stageWeightList us i
                          theorem BSeries.RungeKutta.stageWeight_perm {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (i : ι) {t u : HopfAlgebras.PTree} :
                          t.Perm urk.stageWeight t i = rk.stageWeight u i

                          Stage weights are invariant under the non-planar tree relation.

                          Stage-weight products are invariant under elementwise equivalent child lists.

                          theorem BSeries.RungeKutta.weight_perm {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) {t u : HopfAlgebras.PTree} :
                          t.Perm urk.weight t = rk.weight u

                          Elementary weights are invariant under the non-planar tree relation.

                          def BSeries.RungeKutta.treeStageWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (τ : HopfAlgebras.RootedTree) (i : ι) :
                          R

                          Recursive stage weight of a non-planar rooted tree.

                          Equations
                          Instances For
                            def BSeries.RungeKutta.forestStageWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (φ : HopfAlgebras.RootedForest) (i : ι) :
                            R

                            Product of child stage contributions over a non-planar rooted forest.

                            Equations
                            Instances For
                              @[simp]
                              theorem BSeries.RungeKutta.forestStageWeight_zero {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (i : ι) :
                              @[simp]
                              theorem BSeries.RungeKutta.forestStageWeight_add {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (φ ψ : HopfAlgebras.RootedForest) (i : ι) :

                              Elementary weight of a non-planar rooted tree.

                              Equations
                              Instances For
                                theorem BSeries.RungeKutta.treeWeight_graft {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (φ : HopfAlgebras.RootedForest) :
                                rk.treeWeight φ.graft = i : ι, rk.b i * rk.forestStageWeight φ i
                                theorem BSeries.RungeKutta.treeWeight_branches {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (τ : HopfAlgebras.RootedTree) :
                                rk.treeWeight τ = i : ι, rk.b i * rk.forestStageWeight τ.branches i

                                Multiplicative elementary weight of a non-planar rooted forest.

                                Equations
                                Instances For
                                  @[simp]
                                  theorem BSeries.RungeKutta.forestWeight_zero {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :
                                  @[simp]
                                  theorem BSeries.RungeKutta.forestWeight_add {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (φ ψ : HopfAlgebras.RootedForest) :
                                  rk.forestWeight (φ + ψ) = rk.forestWeight φ * rk.forestWeight ψ
                                  def BSeries.RungeKutta.series {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :

                                  B-series coefficient family induced by a Runge-Kutta tableau.

                                  Equations
                                  Instances For
                                    def BSeries.RungeKutta.AgreeUpToOrder {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) (n : ) :

                                    Two Runge-Kutta tableaux have matching B-series coefficients through order n.

                                    Equations
                                    Instances For
                                      theorem BSeries.RungeKutta.agreeUpToOrder_refl {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) (n : ) :
                                      theorem BSeries.RungeKutta.AgreeUpToOrder.symm {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {n : } (h : rk.AgreeUpToOrder rk' n) :
                                      theorem BSeries.RungeKutta.AgreeUpToOrder.trans {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ η : Type u} [Fintype κ] [Fintype η] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {rk'' : RungeKutta η R} {n : } (h : rk.AgreeUpToOrder rk' n) (h' : rk'.AgreeUpToOrder rk'' n) :
                                      rk.AgreeUpToOrder rk'' n
                                      theorem BSeries.RungeKutta.AgreeUpToOrder.mono {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {m n : } (h : rk.AgreeUpToOrder rk' n) (hmn : m n) :
                                      theorem BSeries.RungeKutta.agreeUpToOrder_iff_treeWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) (n : ) :
                                      rk.AgreeUpToOrder rk' n ∀ (τ : HopfAlgebras.RootedTree), τ.order nrk.treeWeight τ = rk'.treeWeight τ
                                      theorem BSeries.RungeKutta.agreeUpToOrder_iff_weight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) (n : ) :
                                      rk.AgreeUpToOrder rk' n ∀ (t : HopfAlgebras.PTree), t.order nrk.weight t = rk'.weight t
                                      theorem BSeries.RungeKutta.agreeUpToOrder_iff_forestCoeff {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) (n : ) :
                                      theorem BSeries.RungeKutta.agreeUpToOrder_iff_forestWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) (n : ) :
                                      rk.AgreeUpToOrder rk' n ∀ (φ : HopfAlgebras.RootedForest), φ.order nrk.forestWeight φ = rk'.forestWeight φ
                                      theorem BSeries.RungeKutta.AgreeUpToOrder.treeWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {n : } (h : rk.AgreeUpToOrder rk' n) {τ : HopfAlgebras.RootedTree} ( : τ.order n) :
                                      rk.treeWeight τ = rk'.treeWeight τ
                                      theorem BSeries.RungeKutta.AgreeUpToOrder.weight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {n : } (h : rk.AgreeUpToOrder rk' n) {t : HopfAlgebras.PTree} (ht : t.order n) :
                                      rk.weight t = rk'.weight t
                                      theorem BSeries.RungeKutta.AgreeUpToOrder.forestWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {n : } (h : rk.AgreeUpToOrder rk' n) {φ : HopfAlgebras.RootedForest} ( : φ.order n) :
                                      theorem BSeries.RungeKutta.agreeUpToOrder_succ_iff_treeWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) (n : ) :
                                      rk.AgreeUpToOrder rk' (n + 1) rk.AgreeUpToOrder rk' n ∀ (τ : HopfAlgebras.RootedTree), τ.order = n + 1rk.treeWeight τ = rk'.treeWeight τ
                                      theorem BSeries.RungeKutta.agreeUpToOrder_succ_iff_weight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) (n : ) :
                                      rk.AgreeUpToOrder rk' (n + 1) rk.AgreeUpToOrder rk' n ∀ (t : HopfAlgebras.PTree), t.order = n + 1rk.weight t = rk'.weight t
                                      theorem BSeries.RungeKutta.agreeUpToOrder_all_iff_series_eq {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) :
                                      (∀ (n : ), rk.AgreeUpToOrder rk' n) rk.series = rk'.series
                                      theorem BSeries.RungeKutta.agreeUpToOrder_all_iff_treeWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) :
                                      (∀ (n : ), rk.AgreeUpToOrder rk' n) ∀ (τ : HopfAlgebras.RootedTree), rk.treeWeight τ = rk'.treeWeight τ
                                      theorem BSeries.RungeKutta.agreeUpToOrder_all_iff_weight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) :
                                      (∀ (n : ), rk.AgreeUpToOrder rk' n) ∀ (t : HopfAlgebras.PTree), rk.weight t = rk'.weight t
                                      theorem BSeries.RungeKutta.agreeUpToOrder_all_iff_forestWeight {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] {κ : Type u} [Fintype κ] (rk : RungeKutta ι R) (rk' : RungeKutta κ R) :
                                      (∀ (n : ), rk.AgreeUpToOrder rk' n) ∀ (φ : HopfAlgebras.RootedForest), rk.forestWeight φ = rk'.forestWeight φ
                                      def BSeries.RungeKutta.HasOrderOne {ι : Type u} {R : Type v} [Fintype ι] [CommSemiring R] (rk : RungeKutta ι R) :

                                      First order condition for a Runge-Kutta tableau.

                                      Equations
                                      Instances For
                                        theorem BSeries.RungeKutta.twoStageExplicit_hasOrderOne {R : Type v} [CommSemiring R] {a21 b1 b2 : R} (hsum : b1 + b2 = 1) :

                                        Heun's explicit trapezoidal tableau.

                                        Equations
                                        Instances For

                                          Kutta's classical three-stage third-order tableau.

                                          Equations
                                          Instances For
                                            def BSeries.RungeKutta.HasOrder {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :

                                            A Runge-Kutta tableau has order n when its induced B-series has order n.

                                            Equations
                                            Instances For
                                              theorem BSeries.RungeKutta.hasOrder_iff_treeWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              theorem BSeries.RungeKutta.hasOrder_iff_weight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              rk.HasOrder n ∀ (t : HopfAlgebras.PTree), t.order nrk.weight t = (↑t.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_iff_forestCoeff {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              theorem BSeries.RungeKutta.hasOrder_iff_forestWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              theorem BSeries.RungeKutta.twoStageExplicit_hasOrder_one {R : Type v} [Field R] {a21 b1 b2 : R} (hsum : b1 + b2 = 1) :
                                              (twoStageExplicit R a21 b1 b2).HasOrder 1
                                              theorem BSeries.RungeKutta.twoStageExplicit_hasOrder_two {R : Type v} [Field R] {a21 b1 b2 : R} (hsum : b1 + b2 = 1) (hprod : b2 * a21 = 2⁻¹) :
                                              (twoStageExplicit R a21 b1 b2).HasOrder 2
                                              theorem BSeries.RungeKutta.HasOrder.treeWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) {τ : HopfAlgebras.RootedTree} ( : τ.order n) :
                                              theorem BSeries.RungeKutta.HasOrder.weight {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) {t : HopfAlgebras.PTree} (ht : t.order n) :
                                              theorem BSeries.RungeKutta.HasOrder.forestCoeff {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) {φ : HopfAlgebras.RootedForest} ( : φ.order n) :
                                              theorem BSeries.RungeKutta.HasOrder.forestWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) {φ : HopfAlgebras.RootedForest} ( : φ.order n) :
                                              theorem BSeries.RungeKutta.HasOrder.of_agreeUpToOrder {ι : Type u} {R : Type v} [Fintype ι] [Field R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {n : } (h : rk.AgreeUpToOrder rk' n) (hrk : rk.HasOrder n) :
                                              rk'.HasOrder n
                                              theorem BSeries.RungeKutta.hasOrder_congr {ι : Type u} {R : Type v} [Fintype ι] [Field R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} {n : } (h : rk.AgreeUpToOrder rk' n) :
                                              rk.HasOrder n rk'.HasOrder n
                                              theorem BSeries.RungeKutta.hasOrder_all_congr {ι : Type u} {R : Type v} [Fintype ι] [Field R] {κ : Type u} [Fintype κ] {rk : RungeKutta ι R} {rk' : RungeKutta κ R} (h : ∀ (n : ), rk.AgreeUpToOrder rk' n) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (n : ), rk'.HasOrder n
                                              theorem BSeries.RungeKutta.HasOrder.treeWeight_graft {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) {φ : HopfAlgebras.RootedForest} ( : 1 + φ.order n) :
                                              i : ι, rk.b i * rk.forestStageWeight φ i = (↑(1 + φ.order))⁻¹ * (↑φ.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.HasOrder.treeWeight_branches {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) {τ : HopfAlgebras.RootedTree} ( : τ.order n) :
                                              i : ι, rk.b i * rk.forestStageWeight τ.branches i = (↑τ.order)⁻¹ * (↑τ.branches.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.HasOrder.treeWeight_butcherProduct {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) {φ : HopfAlgebras.RootedForest} {τ : HopfAlgebras.RootedTree} (horder : φ.order + τ.order n) :
                                              i : ι, rk.b i * (rk.forestStageWeight φ i * rk.treeStageWeight τ i) = (↑(φ.order + τ.order))⁻¹ * (↑(φ + τ.branches).treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_iff_treeWeight_butcherProduct {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              rk.HasOrder n ∀ (φ : HopfAlgebras.RootedForest) (τ : HopfAlgebras.RootedTree), φ.order + τ.order ni : ι, rk.b i * (rk.forestStageWeight φ i * rk.treeStageWeight τ i) = (↑(φ.order + τ.order))⁻¹ * (↑(φ + τ.branches).treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_iff_treeWeight_graft {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              rk.HasOrder n ∀ (φ : HopfAlgebras.RootedForest), 1 + φ.order ni : ι, rk.b i * rk.forestStageWeight φ i = (↑(1 + φ.order))⁻¹ * (↑φ.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_zero {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              theorem BSeries.RungeKutta.series_eq_exact_of_hasOrder_all {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} (h : ∀ (n : ), rk.HasOrder n) :
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_series_eq_exact {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) rk.series = Series.exact R
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_coeff {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (ξ : HopfAlgebras.TreeIndex), rk.series.coeff ξ = (Series.exact R).coeff ξ
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_treeWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (τ : HopfAlgebras.RootedTree), rk.treeWeight τ = (↑τ.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_weight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (t : HopfAlgebras.PTree), rk.weight t = (↑t.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_forestWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (φ : HopfAlgebras.RootedForest), rk.forestWeight φ = (↑φ.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_treeWeight_graft {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (φ : HopfAlgebras.RootedForest), i : ι, rk.b i * rk.forestStageWeight φ i = (↑(1 + φ.order))⁻¹ * (↑φ.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_treeWeight_branches {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (τ : HopfAlgebras.RootedTree), i : ι, rk.b i * rk.forestStageWeight τ.branches i = (↑τ.order)⁻¹ * (↑τ.branches.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_all_iff_treeWeight_butcherProduct {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) :
                                              (∀ (n : ), rk.HasOrder n) ∀ (φ : HopfAlgebras.RootedForest) (τ : HopfAlgebras.RootedTree), i : ι, rk.b i * (rk.forestStageWeight φ i * rk.treeStageWeight τ i) = (↑(φ.order + τ.order))⁻¹ * (↑(φ + τ.branches).treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.HasOrder.mono {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {m n : } (h : rk.HasOrder n) (hmn : m n) :
                                              theorem BSeries.RungeKutta.oneStage_hasOrder_iff {R : Type v} [Field R] [CharZero R] (a : R) (n : ) :
                                              (oneStage R a).HasOrder n n 1 n = 2 a = 2⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_succ_iff_treeWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              rk.HasOrder (n + 1) rk.HasOrder n ∀ (τ : HopfAlgebras.RootedTree), τ.order = n + 1rk.treeWeight τ = (↑τ.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_succ_iff_weight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              rk.HasOrder (n + 1) rk.HasOrder n ∀ (t : HopfAlgebras.PTree), t.order = n + 1rk.weight t = (↑t.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.hasOrder_succ_iff_forestWeight {ι : Type u} {R : Type v} [Fintype ι] [Field R] (rk : RungeKutta ι R) (n : ) :
                                              rk.HasOrder (n + 1) rk.HasOrder n ∀ (φ : HopfAlgebras.RootedForest), φ.order = n + 1rk.forestWeight φ = (↑φ.treeFactorial)⁻¹
                                              theorem BSeries.RungeKutta.HasOrder.hasOrderOne {ι : Type u} {R : Type v} [Fintype ι] [Field R] {rk : RungeKutta ι R} {n : } (h : rk.HasOrder n) (hn : 1 n) :