Finite Dimensional Lie Algebras With Basis¶
AUTHORS:
- Travis Scrimshaw (07-15-2013): Initial implementation
-
class
sage.categories.finite_dimensional_lie_algebras_with_basis.FiniteDimensionalLieAlgebrasWithBasis(base_category)¶ Bases:
sage.categories.category_with_axiom.CategoryWithAxiom_over_base_ringCategory of finite dimensional Lie algebras with a basis.
Todo
Many of these tests should use non-abelian Lie algebras and need to be added after trac ticket #16820.
-
class
ElementMethods¶ -
adjoint_matrix()¶ Return the matrix of the adjoint action of
self.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.an_element().adjoint_matrix() [0 0 0] [0 0 0] [0 0 0]
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: x.adjoint_matrix() [0 0] [1 0] sage: y.adjoint_matrix() [-1 0] [ 0 0]
-
to_vector()¶ Return the vector in
g.module()corresponding to the elementselfofg(wheregis the parent ofself).Implement this if you implement
g.module(). Seesage.categories.lie_algebras.LieAlgebras.module()for how this is to be done.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.an_element().to_vector() (0, 0, 0) sage: D = DescentAlgebra(QQ, 4).D() sage: L = LieAlgebra(associative=D) sage: L.an_element().to_vector() (1, 1, 1, 1, 1, 1, 1, 1)
-
-
Nilpotent¶
-
class
ParentMethods¶ -
as_finite_dimensional_algebra()¶ Return
selfas aFiniteDimensionalAlgebra.EXAMPLES:
sage: L = lie_algebras.cross_product(QQ) sage: x,y,z = L.basis() sage: F = L.as_finite_dimensional_algebra() sage: X,Y,Z = F.basis() sage: x.bracket(y) Z sage: X * Y Z
-
center()¶ Return the center of
self.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: Z = L.center(); Z An example of a finite dimensional Lie algebra with basis: the 3-dimensional abelian Lie algebra over Rational Field sage: Z.basis_matrix() [1 0 0] [0 1 0] [0 0 1]
-
centralizer(S)¶ Return the centralizer of
Sinself.INPUT:
S– a subalgebra ofselfor a list of elements that represent generators for a subalgebra
See also
EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a,b,c = L.lie_algebra_generators() sage: S = L.centralizer([a + b, 2*a + c]); S An example of a finite dimensional Lie algebra with basis: the 3-dimensional abelian Lie algebra over Rational Field sage: S.basis_matrix() [1 0 0] [0 1 0] [0 0 1]
-
centralizer_basis(S)¶ Return a basis of the centralizer of
Sinself.INPUT:
S– a subalgebra ofselfor a list of elements that represent generators for a subalgebra
See also
EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a,b,c = L.lie_algebra_generators() sage: L.centralizer_basis([a + b, 2*a + c]) [(1, 0, 0), (0, 1, 0), (0, 0, 1)] sage: H = lie_algebras.Heisenberg(QQ, 2) sage: H.centralizer_basis(H) [z] sage: D = DescentAlgebra(QQ, 4).D() sage: L = LieAlgebra(associative=D) sage: L.centralizer_basis(L) [D{}, D{1} + D{1, 2} + D{2, 3} + D{3}, D{1, 2, 3} + D{1, 3} + D{2}] sage: D.center_basis() (D{}, D{1} + D{1, 2} + D{2, 3} + D{3}, D{1, 2, 3} + D{1, 3} + D{2})
-
chevalley_eilenberg_complex(M=None, dual=False, sparse=True, ncpus=None)¶ Return the Chevalley-Eilenberg complex of
self.Let \(\mathfrak{g}\) be a Lie algebra and \(M\) be a right \(\mathfrak{g}\)-module. The Chevalley-Eilenberg complex is the chain complex on
\[C_{\bullet}(\mathfrak{g}, M) = M \otimes \bigwedge\nolimits^{\bullet} \mathfrak{g},\]where the differential is given by
\[d(m \otimes g_1 \wedge \cdots \wedge g_p) = \sum_{i=1}^p (-1)^{i+1} (m g_i) \otimes g_1 \wedge \cdots \wedge \hat{g}_i \wedge \cdots \wedge g_p + \sum_{1 \leq i < j \leq p} (-1)^{i+j} m \otimes [g_i, g_j] \wedge g_1 \wedge \cdots \wedge \hat{g}_i \wedge \cdots \wedge \hat{g}_j \wedge \cdots \wedge g_p.\]INPUT:
M– (default: the trivial 1-dimensional module) the module \(M\)dual– (default:False) ifTrue, causes the dual of the complex to be computedsparse– (default:True) whether to use sparse or dense matricesncpus– (optional) how many cpus to use
EXAMPLES:
sage: L = lie_algebras.sl(ZZ, 2) sage: C = L.chevalley_eilenberg_complex(); C Chain complex with at most 4 nonzero terms over Integer Ring sage: ascii_art(C) [ 2 0 0] [0] [ 0 -1 0] [0] [0 0 0] [ 0 0 2] [0] 0 <-- C_0 <-------- C_1 <----------- C_2 <---- C_3 <-- 0 sage: L = LieAlgebra(QQ, cartan_type=['C',2]) sage: C = L.chevalley_eilenberg_complex() # long time sage: [C.free_module_rank(i) for i in range(11)] # long time [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
REFERENCES:
Todo
Currently this is only implemented for coefficients given by the trivial module \(R\), where \(R\) is the base ring and \(g R = 0\) for all \(g \in \mathfrak{g}\). Allow generic coefficient modules \(M\).
-
cohomology(deg=None, M=None, sparse=True, ncpus=None)¶ Return the Lie algebra cohomology of
self.The Lie algebra cohomology is the cohomology of the Chevalley-Eilenberg cochain complex (which is the dual of the Chevalley-Eilenberg chain complex).
Let \(\mathfrak{g}\) be a Lie algebra and \(M\) a left \(\mathfrak{g}\)-module. It is known that \(H^0(\mathfrak{g}; M)\) is the subspace of \(\mathfrak{g}\)-invariants of \(M\):
\[H^0(\mathfrak{g}; M) = M^{\mathfrak{g}} = \{ m \in M \mid g m = 0 \text{ for all } g \in \mathfrak{g} \}.\]Additionally, \(H^1(\mathfrak{g}; M)\) is the space of derivations \(\mathfrak{g} \to M\) modulo the space of inner derivations, and \(H^2(\mathfrak{g}; M)\) is the space of equivalence classes of Lie algebra extensions of \(\mathfrak{g}\) by \(M\).
INPUT:
deg– the degree of the homology (optional)M– (default: the trivial module) a right module ofselfsparse– (default:True) whether to use sparse matrices for the Chevalley-Eilenberg chain complexncpus– (optional) how many cpus to use when computing the Chevalley-Eilenberg chain complex
EXAMPLES:
sage: L = lie_algebras.so(QQ, 4) sage: L.cohomology() {0: Vector space of dimension 1 over Rational Field, 1: Vector space of dimension 0 over Rational Field, 2: Vector space of dimension 0 over Rational Field, 3: Vector space of dimension 2 over Rational Field, 4: Vector space of dimension 0 over Rational Field, 5: Vector space of dimension 0 over Rational Field, 6: Vector space of dimension 1 over Rational Field} sage: L = lie_algebras.Heisenberg(QQ, 2) sage: L.cohomology() {0: Vector space of dimension 1 over Rational Field, 1: Vector space of dimension 4 over Rational Field, 2: Vector space of dimension 5 over Rational Field, 3: Vector space of dimension 5 over Rational Field, 4: Vector space of dimension 4 over Rational Field, 5: Vector space of dimension 1 over Rational Field} sage: d = {('x', 'y'): {'y': 2}} sage: L.<x,y> = LieAlgebra(ZZ, d) sage: L.cohomology() {0: Z, 1: Z, 2: C2}
See also
REFERENCES:
-
derivations_basis()¶ Return a basis for the Lie algebra of derivations of
selfas matrices.A derivation \(D\) of an algebra is an endomorphism of \(A\) such that
\[D([a, b]) = [D(a), b] + [a, D(b)]\]for all \(a, b \in A\). The set of all derivations form a Lie algebra.
EXAMPLES:
We construct the derivations of the Heisenberg Lie algebra:
sage: H = lie_algebras.Heisenberg(QQ, 1) sage: H.derivations_basis() ( [1 0 0] [0 1 0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 0 0] [0 1 0] [0 0 0] [0 0 0] [0 0 1], [0 0 0], [0 0 0], [0 0 1], [1 0 0], [0 1 0] )
We construct the derivations of \(\mathfrak{sl}_2\):
sage: sl2 = lie_algebras.sl(QQ, 2) sage: sl2.derivations_basis() ( [ 1 0 0] [ 0 1 0] [ 0 0 0] [ 0 0 0] [ 0 0 -1/2] [ 1 0 0] [ 0 0 -1], [ 0 0 0], [ 0 -2 0] )
We verify these are derivations:
sage: D = [sl2.module_morphism(matrix=M, codomain=sl2) ....: for M in sl2.derivations_basis()] sage: all(d(a.bracket(b)) == d(a).bracket(b) + a.bracket(d(b)) ....: for a in sl2.basis() for b in sl2.basis() for d in D) True
REFERENCES:
-
derived_series()¶ Return the derived series \((\mathfrak{g}^{(i)})_i\) of
selfwhere the rightmost \(\mathfrak{g}^{(k)} = \mathfrak{g}^{(k+1)} = \cdots\).We define the derived series of a Lie algebra \(\mathfrak{g}\) recursively by \(\mathfrak{g}^{(0)} := \mathfrak{g}\) and
\[\mathfrak{g}^{(k+1)} = [\mathfrak{g}^{(k)}, \mathfrak{g}^{(k)}]\]and recall that \(\mathfrak{g}^{(k)} \supseteq \mathfrak{g}^{(k+1)}\). Alternatively we can express this as
\[\mathfrak{g} \supseteq [\mathfrak{g}, \mathfrak{g}] \supseteq \bigl[ [\mathfrak{g}, \mathfrak{g}], [\mathfrak{g}, \mathfrak{g}] \bigr] \supseteq \biggl[ \bigl[ [\mathfrak{g}, \mathfrak{g}], [\mathfrak{g}, \mathfrak{g}] \bigr], \bigl[ [\mathfrak{g}, \mathfrak{g}], [\mathfrak{g}, \mathfrak{g}] \bigr] \biggr] \supseteq \cdots.\]EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.derived_series() (An example of a finite dimensional Lie algebra with basis: the 3-dimensional abelian Lie algebra over Rational Field, An example of a finite dimensional Lie algebra with basis: the 0-dimensional abelian Lie algebra over Rational Field with basis matrix: [])
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: L.derived_series() # todo: not implemented - #17416 (Lie algebra on 2 generators (x, y) over Rational Field, Subalgebra generated of Lie algebra on 2 generators (x, y) over Rational Field with basis: (x,), Subalgebra generated of Lie algebra on 2 generators (x, y) over Rational Field with basis: ())
-
derived_subalgebra()¶ Return the derived subalgebra of
self.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.derived_subalgebra() An example of a finite dimensional Lie algebra with basis: the 0-dimensional abelian Lie algebra over Rational Field with basis matrix: []
-
from_vector(v)¶ Return the element of
selfcorresponding to the vectorvinself.module().Implement this if you implement
module(); see the documentation ofsage.categories.lie_algebras.LieAlgebras.module()for how this is to be done.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: u = L.from_vector(vector(QQ, (1, 0, 0))); u (1, 0, 0) sage: parent(u) is L True
-
homology(deg=None, M=None, sparse=True, ncpus=None)¶ Return the Lie algebra homology of
self.The Lie algebra homology is the homology of the Chevalley-Eilenberg chain complex.
INPUT:
deg– the degree of the homology (optional)M– (default: the trivial module) a right module ofselfsparse– (default:True) whether to use sparse matrices for the Chevalley-Eilenberg chain complexncpus– (optional) how many cpus to use when computing the Chevalley-Eilenberg chain complex
EXAMPLES:
sage: L = lie_algebras.cross_product(QQ) sage: L.homology() {0: Vector space of dimension 1 over Rational Field, 1: Vector space of dimension 0 over Rational Field, 2: Vector space of dimension 0 over Rational Field, 3: Vector space of dimension 1 over Rational Field} sage: L = lie_algebras.pwitt(GF(5), 5) sage: L.homology() {0: Vector space of dimension 1 over Finite Field of size 5, 1: Vector space of dimension 0 over Finite Field of size 5, 2: Vector space of dimension 1 over Finite Field of size 5, 3: Vector space of dimension 1 over Finite Field of size 5, 4: Vector space of dimension 0 over Finite Field of size 5, 5: Vector space of dimension 1 over Finite Field of size 5} sage: d = {('x', 'y'): {'y': 2}} sage: L.<x,y> = LieAlgebra(ZZ, d) sage: L.homology() {0: Z, 1: Z x C2, 2: 0}
See also
-
ideal(*gens, **kwds)¶ Return the ideal of
selfgenerated bygens.INPUT:
gens– a list of generators of the idealcategory– (optional) a subcategory of subobjects of finite dimensional Lie algebras with basis
EXAMPLES:
sage: H = lie_algebras.Heisenberg(QQ, 2) sage: p1,p2,q1,q2,z = H.basis() sage: I = H.ideal([p1-p2, q1-q2]) sage: I.basis().list() [-p1 + p2, -q1 + q2, z] sage: I.reduce(p1 + p2 + q1 + q2 + z) 2*p1 + 2*q1
Passing an extra category to an ideal:
sage: L.<x,y,z> = LieAlgebra(QQ, abelian=True) sage: C = LieAlgebras(QQ).FiniteDimensional().WithBasis() sage: C = C.Subobjects().Graded().Stratified() sage: I = L.ideal(x, y, category=C) sage: I.homogeneous_component_basis(1).list() [x, y]
-
inner_derivations_basis()¶ Return a basis for the Lie algebra of inner derivations of
selfas matrices.EXAMPLES:
sage: H = lie_algebras.Heisenberg(QQ, 1) sage: H.inner_derivations_basis() ( [0 0 1] [0 0 0] [0 0 0] [0 0 1] [0 0 0], [0 0 0] )
-
is_abelian()¶ Return if
selfis an abelian Lie algebra.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.is_abelian() True
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'x':1}}) sage: L.is_abelian() False
-
is_ideal(A)¶ Return if
selfis an ideal ofA.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a, b, c = L.lie_algebra_generators() sage: I = L.ideal([2*a - c, b + c]) sage: I.is_ideal(L) True sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: L.is_ideal(L) True sage: F = LieAlgebra(QQ, 'F', representation='polynomial') sage: L.is_ideal(F) Traceback (most recent call last): ... NotImplementedError: A must be a finite dimensional Lie algebra with basis
-
is_nilpotent()¶ Return if
selfis a nilpotent Lie algebra.A Lie algebra is nilpotent if the lower central series eventually becomes \(0\).
EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.is_nilpotent() True
-
is_semisimple()¶ Return if
selfif a semisimple Lie algebra.A Lie algebra is semisimple if the solvable radical is zero. In characteristic 0, this is equivalent to saying the Killing form is non-degenerate.
EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.is_semisimple() False
-
is_solvable()¶ Return if
selfis a solvable Lie algebra.A Lie algebra is solvable if the derived series eventually becomes \(0\).
EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.is_solvable() True
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: L.is_solvable() # todo: not implemented - #17416 False
-
killing_form(x, y)¶ Return the Killing form on
xandy, wherexandyare two elements ofself.The Killing form is defined as
\[\langle x \mid y \rangle = \operatorname{tr}\left( \operatorname{ad}_x \circ \operatorname{ad}_y \right).\]EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a,b,c = L.lie_algebra_generators() sage: L.killing_form(a, b) 0
-
killing_form_matrix()¶ Return the matrix of the Killing form of
self.The rows and the columns of this matrix are indexed by the elements of the basis of
self(in the order provided bybasis()).EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.killing_form_matrix() [0 0 0] [0 0 0] [0 0 0] sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example(0) sage: m = L.killing_form_matrix(); m [] sage: parent(m) Full MatrixSpace of 0 by 0 dense matrices over Rational Field
-
killing_matrix(x, y)¶ Return the Killing matrix of
xandy, wherexandyare two elements ofself.The Killing matrix is defined as the matrix corresponding to the action of \(\operatorname{ad}_x \circ \operatorname{ad}_y\) in the basis of
self.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a,b,c = L.lie_algebra_generators() sage: L.killing_matrix(a, b) [0 0 0] [0 0 0] [0 0 0]
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: L.killing_matrix(x, y) [ 0 0] [-1 0]
-
lower_central_series(submodule=False)¶ Return the lower central series \((\mathfrak{g}_{i})_i\) of
selfwhere the rightmost \(\mathfrak{g}_k = \mathfrak{g}_{k+1} = \cdots\).INPUT:
submodule– (default:False) ifTrue, then the result is given as submodules ofself
We define the lower central series of a Lie algebra \(\mathfrak{g}\) recursively by \(\mathfrak{g}_0 := \mathfrak{g}\) and
\[\mathfrak{g}_{k+1} = [\mathfrak{g}, \mathfrak{g}_{k}]\]and recall that \(\mathfrak{g}_{k} \supseteq \mathfrak{g}_{k+1}\). Alternatively we can express this as
\[\mathfrak{g} \supseteq [\mathfrak{g}, \mathfrak{g}] \supseteq \bigl[ [\mathfrak{g}, \mathfrak{g}], \mathfrak{g} \bigr] \supseteq\biggl[\bigl[ [\mathfrak{g}, \mathfrak{g}], \mathfrak{g} \bigr], \mathfrak{g}\biggr] \supseteq \cdots.\]EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.derived_series() (An example of a finite dimensional Lie algebra with basis: the 3-dimensional abelian Lie algebra over Rational Field, An example of a finite dimensional Lie algebra with basis: the 0-dimensional abelian Lie algebra over Rational Field with basis matrix: [])
The lower central series as submodules:
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: L.lower_central_series(submodule=True) (Sparse vector space of dimension 2 over Rational Field, Vector space of degree 2 and dimension 1 over Rational Field Basis matrix: [1 0])
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: L.lower_central_series() # todo: not implemented - #17416 (Lie algebra on 2 generators (x, y) over Rational Field, Subalgebra generated of Lie algebra on 2 generators (x, y) over Rational Field with basis: (x,))
-
module(R=None)¶ Return a dense free module associated to
selfoverR.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L._dense_free_module() Vector space of dimension 3 over Rational Field
-
morphism(on_generators, codomain=None, check=True)¶ Return a Lie algebra morphism defined by images of a Lie generating subset of
self.INPUT:
on_generators– dictionary{X: Y}of the images \(Y\) incodomainof elements \(X\) ofdomaincodomain– a Lie algebra (optional); this is inferred from the values ofon_generatorsif not givencheck– (default:True) boolean; ifFalsethe values on the Lie brackets implied byon_generatorswill not be checked for contradictory values
Note
The keys of
on_generatorsneed to generatedomainas a Lie algebra.EXAMPLES:
A quotient type Lie algebra morphism
sage: L.<X,Y,Z,W> = LieAlgebra(QQ, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}}) sage: K.<A,B> = LieAlgebra(QQ, abelian=True) sage: L.morphism({X: A, Y: B}) Lie algebra morphism: From: Lie algebra on 4 generators (X, Y, Z, W) over Rational Field To: Abelian Lie algebra on 2 generators (A, B) over Rational Field Defn: X |--> A Y |--> B Z |--> 0 W |--> 0
The reverse map \(A \mapsto X\), \(B \mapsto Y\) does not define a Lie algebra morphism, since \([A,B] = 0\), but \([X,Y] \neq 0\):
sage: K.morphism({A:X, B: Y}) Traceback (most recent call last): ... ValueError: this does not define a Lie algebra morphism; contradictory values for brackets of length 2
-
product_space(L, submodule=False)¶ Return the product space
[self, L].INPUT:
L– a Lie subalgebra ofselfsubmodule– (default:False) ifTrue, then the result is forced to be a submodule ofself
EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a,b,c = L.lie_algebra_generators() sage: X = L.subalgebra([a, b+c]) sage: L.product_space(X) An example of a finite dimensional Lie algebra with basis: the 0-dimensional abelian Lie algebra over Rational Field with basis matrix: [] sage: Y = L.subalgebra([a, 2*b-c]) sage: X.product_space(Y) An example of a finite dimensional Lie algebra with basis: the 0-dimensional abelian Lie algebra over Rational Field with basis matrix: []
sage: H = lie_algebras.Heisenberg(ZZ, 4) sage: Hp = H.product_space(H, submodule=True).basis() sage: [H.from_vector(v) for v in Hp] [z]
sage: L.<x,y> = LieAlgebra(QQ, {('x','y'):{'x':1}}) sage: Lp = L.product_space(L) # todo: not implemented - #17416 sage: Lp # todo: not implemented - #17416 Subalgebra generated of Lie algebra on 2 generators (x, y) over Rational Field with basis: (x,) sage: Lp.product_space(L) # todo: not implemented - #17416 Subalgebra generated of Lie algebra on 2 generators (x, y) over Rational Field with basis: (x,) sage: L.product_space(Lp) # todo: not implemented - #17416 Subalgebra generated of Lie algebra on 2 generators (x, y) over Rational Field with basis: (x,) sage: Lp.product_space(Lp) # todo: not implemented - #17416 Subalgebra generated of Lie algebra on 2 generators (x, y) over Rational Field with basis: ()
-
quotient(I, names=None, category=None)¶ Return the quotient of
selfby the idealI.A quotient Lie algebra.
INPUT:
I– an ideal or a list of generators of the idealnames– (optional) a string or a list of strings; names for the basis elements of the quotient. Ifnamesis a string, the basis will be namednames_1,…,``names_n``.
EXAMPLES:
The Engel Lie algebra as a quotient of the free nilpotent Lie algebra of step 3 with 2 generators:
sage: L.<X,Y,Z,W,U> = LieAlgebra(QQ, 2, step=3) sage: E = L.quotient(U); E Lie algebra quotient L/I of dimension 4 over Rational Field where L: Free Nilpotent Lie algebra on 5 generators (X, Y, Z, W, U) over Rational Field I: Ideal (U) sage: E.basis().list() [X, Y, Z, W] sage: E(X).bracket(E(Y)) Z sage: Y.bracket(Z) -U sage: E(Y).bracket(E(Z)) 0 sage: E(U) 0
Quotients when the base ring is not a field are not implemented:
sage: L = lie_algebras.Heisenberg(ZZ, 1) sage: L.quotient(L.an_element()) Traceback (most recent call last): ... NotImplementedError: quotients over non-fields not implemented
-
structure_coefficients(include_zeros=False)¶ Return the structure coefficients of
self.INPUT:
include_zeros– (default:False) ifTrue, then include the \([x, y] = 0\) pairs in the output
OUTPUT:
A dictionary whose keys are pairs of basis indices \((i, j)\) with \(i < j\), and whose values are the corresponding elements \([b_i, b_j]\) in the Lie algebra.
EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: L.structure_coefficients() Finite family {} sage: L.structure_coefficients(True) Finite family {(0, 1): (0, 0, 0), (0, 2): (0, 0, 0), (1, 2): (0, 0, 0)}
sage: G = SymmetricGroup(3) sage: S = GroupAlgebra(G, QQ) sage: L = LieAlgebra(associative=S) sage: L.structure_coefficients() Finite family {((2,3), (1,2)): (1,2,3) - (1,3,2), ((2,3), (1,3)): -(1,2,3) + (1,3,2), ((1,2,3), (2,3)): -(1,2) + (1,3), ((1,2,3), (1,2)): (2,3) - (1,3), ((1,2,3), (1,3)): -(2,3) + (1,2), ((1,3,2), (2,3)): (1,2) - (1,3), ((1,3,2), (1,2)): -(2,3) + (1,3), ((1,3,2), (1,3)): (2,3) - (1,2), ((1,3), (1,2)): -(1,2,3) + (1,3,2)}
-
subalgebra(*gens, **kwds)¶ Return the subalgebra of
selfgenerated bygens.INPUT:
gens– a list of generators of the subalgebracategory– (optional) a subcategory of subobjects of finite dimensional Lie algebras with basis
EXAMPLES:
sage: H = lie_algebras.Heisenberg(QQ, 2) sage: p1,p2,q1,q2,z = H.basis() sage: S = H.subalgebra([p1, q1]) sage: S.basis().list() [p1, q1, z] sage: S.basis_matrix() [1 0 0 0 0] [0 0 1 0 0] [0 0 0 0 1]
Passing an extra category to a subalgebra:
sage: L = LieAlgebra(QQ, 3, step=2) sage: x,y,z = L.homogeneous_component_basis(1) sage: C = LieAlgebras(QQ).FiniteDimensional().WithBasis() sage: C = C.Subobjects().Graded().Stratified() sage: S = L.subalgebra([x, y], category=C) sage: S.homogeneous_component_basis(2).list() [X_12]
-
-
class
Subobjects(category, *args)¶ Bases:
sage.categories.subobjects.SubobjectsCategoryA category for subalgebras of a finite dimensional Lie algebra with basis.
-
class
ParentMethods¶ -
ambient()¶ Return the ambient Lie algebra of
self.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a, b, c = L.lie_algebra_generators() sage: S = L.subalgebra([2*a+b, b + c]) sage: S.ambient() == L True
-
basis_matrix()¶ Return the basis matrix of
self.EXAMPLES:
sage: L = LieAlgebras(QQ).FiniteDimensional().WithBasis().example() sage: a, b, c = L.lie_algebra_generators() sage: S = L.subalgebra([2*a+b, b + c]) sage: S.basis_matrix() [ 1 0 -1/2] [ 0 1 1]
-
-
class
-
example(n=3)¶ Return an example of a finite dimensional Lie algebra with basis as per
Category.example.EXAMPLES:
sage: C = LieAlgebras(QQ).FiniteDimensional().WithBasis() sage: C.example() An example of a finite dimensional Lie algebra with basis: the 3-dimensional abelian Lie algebra over Rational Field
Other dimensions can be specified as an optional argument:
sage: C.example(5) An example of a finite dimensional Lie algebra with basis: the 5-dimensional abelian Lie algebra over Rational Field
-
class