Documentation

BSeries.Substitution

The substitution law and backward error analysis #

The substitution law of B-series (Chartier–Hairer–Vilmart): a coefficient system b on trees (a "vector field series") substitutes into a B-series a by summing over all partitions of each tree into subtree blocks — b evaluated on the blocks, a on the tree obtained by contracting each block to a vertex:

(b ⋆ a)(τ) = ∑_{p ∈ partitions τ} b(root block)·∏ b(blocks)·a(τ/p).

Partitions of a planar tree correspond to subsets of its edges (the kept edges span the blocks); partitionTriples enumerates them recursively as triples (root block, other blocks, skeleton), choosing for each edge whether to keep it (child block merges into the parent block) or cut it (child block separates, contributing a vertex to the skeleton).

Backward error analysis is the inversion of substitution along a fixed unital series e (in applications, the exact flow): every consistent a is b ⋆ e for a unique modified series b (modifiedCoeff, substCoeff_modifiedCoeff, modifiedCoeff_unique) — the numerical method a is the e-flow of the modified vector field b. The inversion is by strong induction on the tree order, using that every non-trivial partition has all blocks of strictly smaller order (partitionTriples_tail_order_lt).

Partitions of a planar tree #

All edge-subset partitions of a tree, as triples (root block, other blocks, skeleton). The first triple is always the trivial partition (no edge cut).

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Process the children of a vertex: for each child and each partition of it, either keep the connecting edge (the child's root block becomes a branch of the parent's block, the child's skeleton root merges into the parent's skeleton vertex) or cut it (the child's root block becomes a separate block, its skeleton hangs off the parent's skeleton vertex). Returns (root-block branches, other blocks, skeleton branches).

    Equations
    Instances For

      Structural lemmas #

      The head of the partition list is the trivial partition.

      Every tree's partition list is nonempty, headed by the trivial partition.

      Partitions preserve total order: the blocks partition the vertices.

      Non-trivial partitions have small blocks #

      Exactly one partition — the trivial one — has no separated blocks.

      Every non-trivial partition separates at least one block.

      In a non-trivial partition, the root block is strictly smaller.

      In a non-trivial partition, every separated block is strictly smaller.

      The substitution law #

      The substitution law: substitute the vector-field series b into the B-series a by summing over all partitions — b on the blocks, a on the contracted skeleton.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Backward error analysis: the modified vector field #

        @[irreducible]
        noncomputable def BSeries.modifiedCoeff {R : Type v} [CommRing R] (a e : HopfAlgebras.PTreeR) (t : HopfAlgebras.PTree) :
        R

        The modified vector-field series of a relative to a unital series e: the unique b with b ⋆ e = a, constructed by strong recursion on the tree order — on each tree, subtract the contributions of all non-trivial partitions, whose blocks are strictly smaller.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          The defining equation of the modified series, attach-free.

          Backward error analysis, existence: the modified series substitutes along e to give back a — the numerical method is the e-flow of the modified vector field.

          theorem BSeries.modifiedCoeff_unique {R : Type v} [CommRing R] {a e b : HopfAlgebras.PTreeR} (he : e (HopfAlgebras.PTree.node []) = 1) (hb : ∀ (t : HopfAlgebras.PTree), substCoeff b e t = a t) (t : HopfAlgebras.PTree) :
          b t = modifiedCoeff a e t

          Backward error analysis, uniqueness: the modified series is the only solution of b ⋆ e = a.