Free Zinbiel Algebras

AUTHORS:

  • Travis Scrimshaw (2015-09): initial version
class sage.algebras.free_zinbiel_algebra.FreeZinbielAlgebra(R, n, names)

Bases: sage.combinat.free_module.CombinatorialFreeModule

The free Zinbiel algebra on \(n\) generators.

Let \(R\) be a ring. A Zinbiel algebra is a non-associative algebra with multiplication \(\circ\) that satisfies

\[a \circ (b \circ c) = a \circ (b \circ c) + a \circ (c \circ b).\]

Zinbiel algebras were first introduced by Loday as the Koszul dual to Leibniz algebras (hence the name coined by Lemaire).

Zinbiel algebras are divided power algebras, in that for

\[x^{\circ n} = \bigl(x \circ (x \circ \cdots \circ( x \circ x) \cdots ) \bigr)\]

we have

\[x^{\circ m} \circ x^{\circ n} = \binom{n+m-1}{m} x^{n+m}\]

and

\[\underbrace{\bigl( ( x \circ \cdots \circ x \circ (x \circ x) \cdots ) \bigr)}_{n+1 \text{ times}} = n! x^n.\]

Note

This implies that Zinbiel algebras are not power associative.

To every Zinbiel algebra, we can construct a corresponding commutative associative algebra by using the symmetrized product:

\[a * b = a \circ b + b \circ a.\]

The free Zinbiel algebra on \(n\) generators is isomorphic as \(R\)-modules to the reduced tensor algebra \(\bar{T}(R^n)\) with the product

\[(x_0 x_1 \cdots x_p) \circ (x_{p+1} x_{p+2} \cdots x_{p+q}) = \sum_{\sigma \in S_{p,q}} x_0 (x_{\sigma(1)} x_{\sigma(2)} \cdots x_{\sigma(p+q)},\]

where \(S_{p,q}\) is the set of \((p,q)\)-shuffles.

The free Zinbiel algebra is free as a divided power algebra. Moreover, the corresponding commutative algebra is isomorphic to the (non-unital) shuffle algebra.

INPUT:

  • R – a ring
  • n – (optional) the number of generators
  • names – the generator names

Warning

Currently the basis is indexed by all words over the variables, incuding the empty word. This is a slight abuse as it is suppose to be the indexed by all non-empty words.

EXAMPLES:

We create the free Zinbiel algebra and check the defining relation:

sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ)
sage: (x*y)*z
Z[xyz] + Z[xzy]
sage: x*(y*z) + x*(z*y)
Z[xyz] + Z[xzy]

We see that the Zinbiel algebra is not associative, nor even power associative:

sage: x*(y*z)
Z[xyz]
sage: x*(x*x)
Z[xxx]
sage: (x*x)*x
2*Z[xxx]

We verify that it is a divided powers algebra:

sage: (x*(x*x)) * (x*(x*(x*x)))
15*Z[xxxxxxx]
sage: binomial(3+4-1,4)
15
sage: (x*(x*(x*x))) * (x*(x*x))
20*Z[xxxxxxx]
sage: binomial(3+4-1,3)
20
sage: ((x*x)*x)*x
6*Z[xxxx]
sage: (((x*x)*x)*x)*x
24*Z[xxxxx]

REFERENCES:

[Loday95]Jean-Louis Loday. Cup-product for Leibniz cohomology and dual Leibniz algebras. Math. Scand., pp. 189–196 (1995). http://www.math.uiuc.edu/K-theory/0015/cup_product.pdf
[LV12]Jean-Louis Loday and Bruno Vallette. Algebraic Operads. Springer-Verlag Berlin Heidelberg (2012). doi:10.1007/978-3-642-30362-3.
algebra_generators()

Return the algebra generators of self.

EXAMPLES:

sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ)
sage: list(Z.algebra_generators())
[Z[x], Z[y], Z[z]]
gens()

Return the generators of self.

EXAMPLES:

sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ)
sage: Z.gens()
(Z[x], Z[y], Z[z])
product_on_basis(x, y)

Return the product of the basis elements indexed by x and y.

EXAMPLES:

sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ)
sage: (x*y)*z  # indirect doctest
Z[xyz] + Z[xzy]