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:
Parent,UniqueRepresentationThe free Lie algebra of a set
.The free Lie algebra
of a set is the Lie algebra with generators where there are no other relations beyond the defining relations. This can be constructed as the free magmatic algebra quotiented by the ideal generated by .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:
FreeLieBasis_abstractThe free Lie algebra in the Hall basis.
The basis keys are objects of class
LieObject, each of which is either aLieGenerator(in degree ) or aGradedLieBracket(in degree ).- 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:
FreeLieBasis_abstractThe free Lie algebra in the Lyndon basis.
The basis keys are objects of class
LieObject, each of which is either aLieGenerator(in degree ) or aLyndonBracket(in degree ).- 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 ofselfin 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
selfin 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
selfin 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)#
Bases:
Category_realization_of_parentThe 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:
FinitelyGeneratedLieAlgebra,IndexedGenerators,BindableClassAbstract base class for all bases of a free Lie algebra.
- Element#
alias of
FreeLieAlgebraElement
- 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
-th graded part of a free Lie algebra on generators has dimensionwhere
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
Trueif 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 inputwbehaves 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