NCK Hopf Algebra
The kauri.nck sub-package implements the noncommutative Connes-Kreimer (NCK)
Hopf algebra []
\((H, \Delta_{NCK}, \mu, \varepsilon_{NCK}, \emptyset, S_{NCK})\), defined as follows.
\(H\) is the set of all planar (ordered) rooted trees, where sibling order matters.
The unit \(\emptyset\) is the empty ordered forest.
The counit map is defined by \(\varepsilon_{NCK}(\emptyset) = 1\), \(\varepsilon_{NCK}(t) = 0\) for all \(\emptyset \neq t \in H\).
Multiplication \(\mu : H \otimes H \to H\) is defined as the noncommutative (ordered) concatenation of forests.
Comultiplication \(\Delta_{NCK} : H \to H \otimes H\) is defined as
\[\Delta_{NCK}(t) = t \otimes \emptyset + \emptyset \otimes t + \sum_{s \subset t} [t \setminus s] \otimes s\]where the sum runs over all proper rooted subtrees \(s\) of \(t\), and \([t \setminus s]\) is the ordered forest remaining after erasing \(s\) from \(t\), preserving sibling order.
The antipode \(S_{NCK}\) is defined by \(S_{NCK}(\bullet) = -\bullet\) and
\[S_{NCK}(t) = -t - \sum_{s \subset t} S_{NCK}([t \setminus s]) \, s.\]
Note
Unlike the non-planar BCK algebra, the NCK algebra is neither commutative nor cocommutative, so the antipode is not an involution (\(S^2 \neq \mathrm{id}\) in general).
Example: NCK coproduct
import kauri as kr
import kauri.nck as nck
t = kr.PlanarTree([[],[[]]])
kr.display(nck.coproduct(t))
- counit = <kauri.maps.Map object>
The counit \(\varepsilon\) of the NCK Hopf algebra.
- Type:
Example usage:
print(nck.counit(PlanarTree(None))) # Returns 1 print(nck.counit(PlanarTree([]))) # Returns 0
1 0
- antipode = <kauri.maps.Map object>
The antipode \(S\) of the NCK Hopf algebra.
Since the NCK algebra is noncommutative, the antipode is an anti-homomorphism: \(S(t_1 t_2) = S(t_2) S(t_1)\). This map uses
anti=Trueto ensure forests are processed in reversed order.- Type:
Example usage:
t = PlanarTree([[[]],[]]) kr.display(nck.antipode(t))
- coproduct(t: PlanarTree) TensorProductSum[source]
The coproduct \(\Delta\) of the NCK Hopf algebra.
- Parameters:
t (PlanarTree) – planar tree
- Return type:
Example usage:
t = PlanarTree([[[]],[]]) kr.display(nck.coproduct(t))
- map_product(f: Map, g: Map) Map[source]
Returns the convolution product of scalar-valued maps in the NCK Hopf algebra, defined by
\[(f \cdot g)(t) := \mu \circ (f \otimes g) \circ \Delta(t)\]Note
Both maps must be scalar-valued (returning numbers, not trees/forests). Because the planar forest algebra is noncommutative, the convolution product of algebra homomorphisms is not itself a homomorphism, so iterated convolution products of tree-valued maps will not associate correctly. This limitation does not affect scalar-valued maps or the non-planar (commutative) BCK algebra.
Example usage:
f = Map(lambda x: 1 if x.list_repr is None else 0) g = nck.map_product(f, f) print(g(PlanarTree([[]])))
0
- map_power(f: Map, exponent: int) Map[source]
Returns the convolution power of a map in the NCK Hopf algebra.
Note
The map should be scalar-valued for iterated powers (exponent > 1 or < 0). See
map_product()for details on the noncommutative limitation.Example usage:
f = Map(lambda x: 1 if x.list_repr is None else x.nodes()) f_sq = nck.map_power(f, 2) print(f_sq(PlanarTree([[]])))
5