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)¶ Bases:
sage.structure.parent.Parent
,sage.structure.unique_representation.UniqueRepresentation
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)¶ Bases:
sage.algebras.lie_algebras.free_lie_algebra.FreeLieBasis_abstract
The free Lie algebra in the Hall basis.
The basis keys are objects of class
LieObject
, each of which is either aLieGenerator
(in degree \(1\)) or aGradedLieBracket
(in degree \(> 1\)).-
graded_basis
(k)¶ Return the basis for the
k
-th graded piece ofself
.EXAMPLES:
sage: L = LieAlgebra(QQ, 'x,y,z') sage: H = L.Hall() sage: H.graded_basis(2) ([x, y], [x, z], [y, z]) sage: H.graded_basis(4) ([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)¶ Bases:
sage.algebras.lie_algebras.free_lie_algebra.FreeLieBasis_abstract
The free Lie algebra in the Lyndon basis.
The basis keys are objects of class
LieObject
, each of which is either aLieGenerator
(in degree \(1\)) or aLyndonBracket
(in degree \(> 1\)).-
graded_basis
(k)¶ Return the basis for the
k
-th graded piece ofself
.EXAMPLES:
sage: L = LieAlgebra(QQ, 'x', 3) sage: Lyn = L.Lyndon() sage: Lyn.graded_basis(1) (x0, x1, x2) sage: Lyn.graded_basis(2) ([x0, x1], [x0, x2], [x1, x2]) sage: Lyn.graded_basis(4) ([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 ofself
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()[0].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
-
class
sage.algebras.lie_algebras.free_lie_algebra.
FreeLieAlgebraBases
(base)¶ Bases:
sage.categories.realizations.Category_realization_of_parent
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)¶ Bases:
sage.algebras.lie_algebras.lie_algebra.FinitelyGeneratedLieAlgebra
,sage.structure.indexed_generators.IndexedGenerators
,sage.misc.bindable_class.BindableClass
Abstract base class for all bases of a free Lie algebra.
-
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}
-
graded_basis
(k)¶ Return the basis for the
k
-th graded piece ofself
.EXAMPLES:
sage: H = LieAlgebra(QQ, 3, 'x').Hall() sage: H.graded_basis(2) ([x0, x1], [x0, x2], [x1, x2])
-
graded_dimension
(k)¶ Return the dimension of the
k
-th graded piece ofself
.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:
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] sage: H.graded_dimension(0) 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 inputw
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([1]) 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