The Grossman–Larson product #
This file defines the Grossman–Larson product on the free module of forests of nonplanar rooted
trees. The product F ⋆ G sums, over the splits G = G₁ + G₂, the forests obtained by grafting
the trees of G₂ onto vertices of F in all ways, with the trees of G₁ placed alongside.
Grossman and Larson introduce the product; the closed form used here is Foissy's Theorem 5.1,
through the Guin–Oudom extension of the grafting product.
The module of forests is ConnesKreimer R (UnorderedTree α), which Oudom and Guin read as the
symmetric algebra on the trees: its own product is the disjoint union of forests. The insertion
x ∘ y and the product x ⋆ y are bilinear maps on it, and the algebra GrossmanLarson R α is
that module with ⋆ as its multiplication.
Main definitions #
UnorderedTree.productMultiset F G: the forests in the productF ⋆ G, with multiplicity.GrossmanLarson.insertion: the Guin–Oudom extensionx ∘ yof the grafting product, grafting every tree ofyonto a vertex ofx.GrossmanLarson.product: the Grossman–Larson productx ⋆ y.GrossmanLarson R α: the forests with the product⋆.GrossmanLarson.ι: the pre-Lie algebra of trees as the one-tree forests.
Main results #
GrossmanLarson.insertion_one_left,GrossmanLarson.insertion_of'_add,GrossmanLarson.counit_insertion: Oudom and Guin's rules1 ∘ x = ε(x),AB ∘ C = Σ (A ∘ C₍₁₎)(B ∘ C₍₂₎)andε(x ∘ y) = ε(x) ε(y), on basis forests for the second.GrossmanLarson.product_of':x ⋆ G = Σ_{G = G₁ + G₂} (x ∘ G₂) G₁.GrossmanLarson.counit_product: the counit is multiplicative for⋆.GrossmanLarson.instNonAssocSemiring: the empty forest is a two-sided unit; associativity and theSemiringandAlgebrainstances are inGrossmanLarson/Algebra.lean.GrossmanLarson.toConnesKreimer_ι_mul,GrossmanLarson.toConnesKreimer_ι_mul_ι: on one-tree forests,∘is the grafting product andx ⋆ y = x y + x ∘ y.
Implementation notes #
GrossmanLarson R α is a one-field structure over the Connes–Kreimer module, as WithConv is
over a module of linear maps: the forests already carry the disjoint-union product, and the
structure keeps the two multiplications on different types. insertion and product are stated
on the underlying module, where the disjoint-union product is available to state their rules.
The insertion x ∘ y grafts every tree of y onto the original x. It is not iterated one-tree
insertion, which would also graft later trees onto earlier ones.
References #
Insertion and the product on the module of forests #
The Guin–Oudom extension x ∘ y of the grafting product sums, on basis forests, the
graftings of every tree of G onto a vertex of F.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Inserting no trees leaves the host unchanged.
The empty forest has no vertices to graft onto: 1 ∘ x = ε(x).
On two trees the insertion is the grafting product.
Grafting into a disjoint union splits the guests between the two parts:
AB ∘ C = Σ (A ∘ C₍₁₎)(B ∘ C₍₂₎).
The counit is multiplicative for the insertion.
The Grossman–Larson product x ⋆ y, on basis forests the sum over productMultiset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
x ⋆ G = Σ_{G = G₁ + G₂} (x ∘ G₂) G₁, the product of Oudom and Guin on a basis forest G.
The counit is multiplicative for the Grossman–Larson product.
Two trees multiply to their disjoint union plus their graftings, T ⋆ S = T S + T ∘ S.
The Grossman–Larson algebra #
The forests of nonplanar rooted trees labelled by α, with the Grossman–Larson product.
- ofConnesKreimer :: (
- toConnesKreimer : ConnesKreimer R (UnorderedTree α)
The underlying element of the module of forests.
- )
Instances For
Equations
- GrossmanLarson.instZero = { zero := { toConnesKreimer := 0 } }
Equations
- GrossmanLarson.instAdd = { add := fun (x y : GrossmanLarson R α) => { toConnesKreimer := x.toConnesKreimer + y.toConnesKreimer } }
Equations
- GrossmanLarson.instSMul = { smul := fun (s : S) (x : GrossmanLarson R α) => { toConnesKreimer := s • x.toConnesKreimer } }
Equations
- One or more equations did not get rendered due to their size.
toConnesKreimer as an additive equivalence.
Equations
- GrossmanLarson.addEquiv = { toFun := GrossmanLarson.toConnesKreimer, invFun := GrossmanLarson.ofConnesKreimer, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }
Instances For
Equations
- GrossmanLarson.instModule = { toSMul := GrossmanLarson.instSMul, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
toConnesKreimer as a linear equivalence.
Equations
- GrossmanLarson.linearEquiv = { toFun := GrossmanLarson.addEquiv.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := GrossmanLarson.addEquiv.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Equations
- GrossmanLarson.instOne = { one := { toConnesKreimer := 1 } }
Equations
- GrossmanLarson.instMul = { mul := fun (x y : GrossmanLarson R α) => { toConnesKreimer := (GrossmanLarson.product x.toConnesKreimer) y.toConnesKreimer } }
Equations
- One or more equations did not get rendered due to their size.
The basis #
of F is the basis vector of the forest F.
Equations
- GrossmanLarson.of F = { toConnesKreimer := ConnesKreimer.of' F }
Instances For
Linear maps off GrossmanLarson R α agree if they agree on the basis.
Trees as one-tree forests #
ι sends each tree to its one-tree forest.
Equations
- GrossmanLarson.ι = ↑GrossmanLarson.linearEquiv.symm ∘ₗ Finsupp.linearCombination R ConnesKreimer.ofTree ∘ₗ ↑ChapotonLivernet.coeffLinearEquiv
Instances For
The grafting product of trees is the insertion of their one-tree forests.
The product of one-tree forests is their disjoint union plus their insertion,
x ⋆ y = x y + x ∘ y.