The Connes–Kreimer algebra #
ConnesKreimer R T is the commutative R-algebra with a basis indexed by the forests of T
(finite multisets of elements of T), multiplied by disjoint union, with the empty forest as
unit. It is the free commutative R-algebra on T. When T is a type of rooted trees, cutting
trees makes it the Connes–Kreimer Hopf algebra; the coproducts are in the sibling Coproduct/
files and the antipode in HopfAlgebra.lean.
Main definitions #
UnorderedTree.Forest T: forests ofT, as multisets.ConnesKreimer R T: the algebra.ConnesKreimer.single,ConnesKreimer.of',ConnesKreimer.ofTree: basis vectors.ConnesKreimer.coeff: the coefficient of a forest.ConnesKreimer.aeval: the algebra hom determined by its values on trees.ConnesKreimer.basisSingleOne,ConnesKreimer.linearLift: the forest basis and linear maps defined on it.ConnesKreimer.counit: the coefficient of the empty forest, as an algebra hom.
Implementation notes #
ConnesKreimer R T wraps AddMonoidAlgebra R (Forest T) in a one-field structure, as
Polynomial does. The bare carrier already has the group-like bialgebra structure
AddMonoidAlgebra.instBialgebra, and a def synonym would leak parent instance paths (an
SMul ℤ diamond). Consumers use the API of this file; toFinsuppAlgEquiv is the bridge to the
bare carrier.
[UPSTREAM] candidate.
References #
Forests of elements of T, as multisets; addition is disjoint union.
Equations
- UnorderedTree.Forest T = Multiset T
Instances For
The Connes–Kreimer algebra on T, the R-span of the forests of T with disjoint union
as product.
- ofFinsupp :: (
- toFinsupp : AddMonoidAlgebra R (UnorderedTree.Forest T)
The underlying forest-indexed
AddMonoidAlgebra. - )
Instances For
Structural operations #
Each operation is defined on the toFinsupp field; the toFinsupp_*
pushforward lemmas are all rfl and form the simp normal form.
Equations
- ConnesKreimer.instZero = { zero := { toFinsupp := 0 } }
Equations
- ConnesKreimer.instOne = { one := { toFinsupp := 1 } }
Equations
- ConnesKreimer.instAdd = { add := fun (p q : ConnesKreimer R T) => { toFinsupp := p.toFinsupp + q.toFinsupp } }
Equations
- ConnesKreimer.instMul = { mul := fun (p q : ConnesKreimer R T) => { toFinsupp := p.toFinsupp * q.toFinsupp } }
Equations
- ConnesKreimer.smulZeroClass = { smul := fun (s : S) (p : ConnesKreimer R T) => { toFinsupp := s • p.toFinsupp }, smul_zero := ⋯ }
Equations
- ConnesKreimer.instNatCast = { natCast := fun (n : ℕ) => { toFinsupp := ↑n } }
Equations
- ConnesKreimer.instPowNat = { pow := fun (p : ConnesKreimer R T) (n : ℕ) => { toFinsupp := p.toFinsupp ^ n } }
The instance stack #
Built by injective transport from the single bottom instCommSemiring.
Equations
- One or more equations did not get rendered due to their size.
Granular action instances (mirroring Polynomial): keeping these one
synthesis step away from the underlying carrier lets nested-tensor goals
(CK ⊗ (CK ⊗ CK)) resolve without deep pending chains.
Equations
- ConnesKreimer.distribSMul = { toSMulZeroClass := ConnesKreimer.smulZeroClass, smul_add := ⋯ }
Equations
- ConnesKreimer.distribMulAction = { toSMul := ConnesKreimer.smulZeroClass.toSMul, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯ }
Equations
- ConnesKreimer.instModule = { toDistribMulAction := ConnesKreimer.distribMulAction, add_smul := ⋯, zero_smul := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Global ring instance #
zsmul is the pulled-back structural operation and no parent-type path to
SMul ℤ exists, so the instance is safely global.
Equations
- ConnesKreimer.instNeg = { neg := fun (p : ConnesKreimer R T) => { toFinsupp := -p.toFinsupp } }
Equations
- ConnesKreimer.instSub = { sub := fun (p q : ConnesKreimer R T) => { toFinsupp := p.toFinsupp - q.toFinsupp } }
Equations
- ConnesKreimer.instIntCast = { intCast := fun (z : ℤ) => { toFinsupp := ↑z } }
Equations
- One or more equations did not get rendered due to their size.
The algebra equivalence to the bare carrier #
toFinsupp as an R-algebra equivalence, the bridge between the wrapper and the bare
AddMonoidAlgebra.
Equations
- ConnesKreimer.toFinsuppAlgEquiv = { toFun := ConnesKreimer.toFinsupp, invFun := ConnesKreimer.ofFinsupp, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Basis vectors #
single F r is the basis vector with coefficient r on the forest F.
Equations
- ConnesKreimer.single F r = { toFinsupp := AddMonoidAlgebra.single F r }
Instances For
To prove a property of every element it suffices to prove it at 0, under +, and on every
single.
of' F is the forest F as the basis vector single F 1.
Equations
Instances For
ofTree t is the forest with the single tree t.
Equations
Instances For
Disjoint union of forests is the product of the algebra.
A forest is the product of its trees.
Coefficients #
The coefficient of the forest F.
Instances For
Elements agreeing coefficientwise are equal.
The coefficient of F in the formal sum of a multiset of forests is its multiplicity.
In characteristic zero a multiset of forests is determined by its formal sum.
coeff bundled as a linear functional (Polynomial.lcoeff analogue).
Equations
- ConnesKreimer.lcoeff R F = { toFun := fun (p : ConnesKreimer R T) => p.coeff F, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The universal property #
ConnesKreimer R T is the free commutative algebra on T, as MvPolynomial T R is: a function
on trees extends uniquely to an algebra hom. The carrier is not literally MvPolynomial T R,
whose monomials T →₀ ℕ match Multiset T only under DecidableEq T.
aeval f is the algebra hom sending each tree t to f t, and so each forest to the
product of the values of its trees (MvPolynomial.aeval analogue).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Algebra homs out of ConnesKreimer agree if they agree on forests.
Algebra homs agree on a forest if they agree on each of its trees.
Algebra homs out of ConnesKreimer agree if they agree on trees.
rename f replaces each tree t of every forest by f t (MvPolynomial.rename
analogue).
Equations
- ConnesKreimer.rename f = ConnesKreimer.aeval fun (t : T) => ConnesKreimer.ofTree (f t)
Instances For
The forest basis and linear maps #
The forests, via of', as an R-basis (Polynomial.basisMonomials analogue).
Equations
- ConnesKreimer.basisSingleOne = (AddMonoidAlgebra.basis (UnorderedTree.Forest T) R).map ↑ConnesKreimer.toFinsuppAlgEquiv.symm
Instances For
Linear maps out of ConnesKreimer agree if they agree on forests.
linearLift f is the linear map sending each forest F to f F.
Equations
- ConnesKreimer.linearLift f = (ConnesKreimer.basisSingleOne.constr R) f
Instances For
The counit #
The counit takes the coefficient of the empty forest; it is the algebra hom sending every
tree to 0.
Equations
- ConnesKreimer.counit = ConnesKreimer.aeval fun (x : T) => 0
Instances For
counit (of' F) is 1 on the empty forest and 0 otherwise, stated with card to avoid
DecidableEq T.