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:

Map

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=True to ensure forests are processed in reversed order.

Type:

Map

Example usage:

t = PlanarTree([[[]],[]])
kr.display(nck.antipode(t))
+ 2 + + +
coproduct(t: PlanarTree) TensorProductSum[source]

The coproduct \(\Delta\) of the NCK Hopf algebra.

Parameters:

t (PlanarTree) – planar tree

Return type:

TensorProductSum

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.

Parameters:
Return type:

Map

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.

Parameters:
  • f (Map) – f

  • exponent (int) – exponent

Return type:

Map

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