# Free Lie Algebras¶

AUTHORS:

• Travis Scrimshaw (2013-05-03): Initial version

REFERENCES:

class sage.algebras.lie_algebras.free_lie_algebra.FreeLieAlgebra(R, names, index_set)

The free Lie algebra of a set $$X$$.

The free Lie algebra $$\mathfrak{g}_X$$ of a set $$X$$ is the Lie algebra with generators $$\{g_x\}_{x \in X}$$ where there are no other relations beyond the defining relations. This can be constructed as the free magmatic algebra $$M_X$$ quotiented by the ideal generated by $$\bigl( xx, xy + yx, x(yz) + y(zx) + z(xy) \bigr)$$.

EXAMPLES:

We first construct the free Lie algebra in the Hall basis:

sage: L = LieAlgebra(QQ, 'x,y,z')
sage: H = L.Hall()
sage: x,y,z = H.gens()
sage: h_elt = H([x, [y, z]]) + H([x - H([y, x]), H([x, z])]); h_elt
[x, [x, z]] + [y, [x, z]] - [z, [x, y]] + [[x, y], [x, z]]


We can also use the Lyndon basis and go between the two:

sage: Lyn = L.Lyndon()
sage: l_elt = Lyn([x, [y, z]]) + Lyn([x - Lyn([y, x]), Lyn([x, z])]); l_elt
[x, [x, z]] + [[x, y], [x, z]] + [x, [y, z]]
sage: Lyn(h_elt) == l_elt
True
sage: H(l_elt) == h_elt
True

class Hall(lie)

The free Lie algebra in the Hall basis.

The basis keys are objects of class LieObject, each of which is either a LieGenerator (in degree $$1$$) or a GradedLieBracket (in degree $$> 1$$).

Return the basis for the k-th graded piece of self.

EXAMPLES:

sage: L = LieAlgebra(QQ, 'x,y,z')
sage: H = L.Hall()
([x, y], [x, z], [y, z])
([x, [x, [x, y]]], [x, [x, [x, z]]],
[y, [x, [x, y]]], [y, [x, [x, z]]],
[y, [y, [x, y]]], [y, [y, [x, z]]],
[y, [y, [y, z]]], [z, [x, [x, y]]],
[z, [x, [x, z]]], [z, [y, [x, y]]],
[z, [y, [x, z]]], [z, [y, [y, z]]],
[z, [z, [x, y]]], [z, [z, [x, z]]],
[z, [z, [y, z]]], [[x, y], [x, z]],
[[x, y], [y, z]], [[x, z], [y, z]])

class Lyndon(lie)

The free Lie algebra in the Lyndon basis.

The basis keys are objects of class LieObject, each of which is either a LieGenerator (in degree $$1$$) or a LyndonBracket (in degree $$> 1$$).

Return the basis for the k-th graded piece of self.

EXAMPLES:

sage: L = LieAlgebra(QQ, 'x', 3)
sage: Lyn = L.Lyndon()
(x0, x1, x2)
([x0, x1], [x0, x2], [x1, x2])
([x0, [x0, [x0, x1]]],
[x0, [x0, [x0, x2]]],
[x0, [[x0, x1], x1]],
[x0, [x0, [x1, x2]]],
[x0, [[x0, x2], x1]],
[x0, [[x0, x2], x2]],
[[x0, x1], [x0, x2]],
[[[x0, x1], x1], x1],
[x0, [x1, [x1, x2]]],
[[x0, [x1, x2]], x1],
[x0, [[x1, x2], x2]],
[[[x0, x2], x1], x1],
[[x0, x2], [x1, x2]],
[[[x0, x2], x2], x1],
[[[x0, x2], x2], x2],
[x1, [x1, [x1, x2]]],
[x1, [[x1, x2], x2]],
[[[x1, x2], x2], x2])

pbw_basis(**kwds)

Return the Poincare-Birkhoff-Witt basis corresponding to self.

EXAMPLES:

sage: L = LieAlgebra(QQ, 'x,y,z', 3)
sage: Lyn = L.Lyndon()
sage: Lyn.pbw_basis()
The Poincare-Birkhoff-Witt basis of Free Algebra on 3 generators (x, y, z) over Rational Field

poincare_birkhoff_witt_basis(**kwds)

Return the Poincare-Birkhoff-Witt basis corresponding to self.

EXAMPLES:

sage: L = LieAlgebra(QQ, 'x,y,z', 3)
sage: Lyn = L.Lyndon()
sage: Lyn.pbw_basis()
The Poincare-Birkhoff-Witt basis of Free Algebra on 3 generators (x, y, z) over Rational Field

a_realization()

Return a particular realization of self (the Lyndon basis).

EXAMPLES:

sage: L.<x, y> = LieAlgebra(QQ)
sage: L.a_realization()
Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis

gen(i)

Return the i-th generator of self in the Lyndon basis.

EXAMPLES:

sage: L.<x, y> = LieAlgebra(QQ)
sage: L.gen(0)
x
sage: L.gen(1)
y
sage: L.gen(0).parent()
Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis

gens()

Return the generators of self in the Lyndon basis.

EXAMPLES:

sage: L.<x, y> = LieAlgebra(QQ)
sage: L.gens()
(x, y)
sage: L.gens().parent()
Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis

lie_algebra_generators()

Return the Lie algebra generators of self in the Lyndon basis.

EXAMPLES:

sage: L.<x, y> = LieAlgebra(QQ)
sage: L.lie_algebra_generators()
Finite family {'x': x, 'y': y}
sage: L.lie_algebra_generators()['x'].parent()
Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis

class sage.algebras.lie_algebras.free_lie_algebra.FreeLieAlgebraBases(base)

The category of bases of a free Lie algebra.

super_categories()

The super categories of self.

EXAMPLES:

sage: from sage.algebras.lie_algebras.free_lie_algebra import FreeLieAlgebraBases
sage: L.<x, y> = LieAlgebra(QQ)
sage: bases = FreeLieAlgebraBases(L)
sage: bases.super_categories()
[Category of lie algebras with basis over Rational Field,
Category of realizations of Free Lie algebra generated by (x, y) over Rational Field]

class sage.algebras.lie_algebras.free_lie_algebra.FreeLieBasis_abstract(lie, basis_name)

Abstract base class for all bases of a free Lie algebra.

Element
basis()

Return the basis of self.

EXAMPLES:

sage: L = LieAlgebra(QQ, 3, 'x')
sage: L.Hall().basis()
Disjoint union of Lazy family (graded basis(i))_{i in Positive integers}


Return the basis for the k-th graded piece of self.

EXAMPLES:

sage: H = LieAlgebra(QQ, 3, 'x').Hall()
([x0, x1], [x0, x2], [x1, x2])


Return the dimension of the k-th graded piece of self.

The $$k$$-th graded part of a free Lie algebra on $$n$$ generators has dimension

$\frac{1}{k} \sum_{d \mid k} \mu(d) n^{k/d},$

where $$\mu$$ is the Mobius function.

REFERENCES:

[MKO1998]

EXAMPLES:

sage: L = LieAlgebra(QQ, 'x', 3)
sage: H = L.Hall()
sage: [H.graded_dimension(i) for i in range(1, 11)]
[3, 3, 8, 18, 48, 116, 312, 810, 2184, 5880]
0

is_abelian()

Return True if this is an abelian Lie algebra.

EXAMPLES:

sage: L = LieAlgebra(QQ, 3, 'x')
sage: L.is_abelian()
False
sage: L = LieAlgebra(QQ, 1, 'x')
sage: L.is_abelian()
True

monomial(x)

Return the monomial indexed by x.

EXAMPLES:

sage: Lyn = LieAlgebra(QQ, 'x,y').Lyndon()
sage: x = Lyn.monomial('x'); x
x
sage: x.parent() is Lyn
True

sage.algebras.lie_algebras.free_lie_algebra.is_lyndon(w)

Modified form of Word(w).is_lyndon() which uses the default order (this will either be the natural integer order or lex order) and assumes the input w behaves like a nonempty list. This function here is designed for speed.

EXAMPLES:

sage: from sage.algebras.lie_algebras.free_lie_algebra import is_lyndon
sage: is_lyndon()
True
sage: is_lyndon([1,3,1])
False
sage: is_lyndon((2,2,3))
True
sage: all(is_lyndon(x) for x in LyndonWords(3, 5))
True
sage: all(is_lyndon(x) for x in LyndonWords(6, 4))
True