Quotients of Lie algebras¶
AUTHORS:
- Eero Hakavuori (2018-09-02): initial version
-
sage.algebras.lie_algebras.quotient.
LieQuotient_finite_dimensional_with_basis
¶ A quotient Lie algebra.
INPUT:
I
– an ideal or a list of generators of the idealambient
– (optional) the Lie algebra to be quotiented; will be deduced fromI
if not givennames
– (optional) a string or a list of strings; names for the basis elements of the quotient. Ifnames
is 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 = LieAlgebra(QQ, 2, step=3) sage: L.inject_variables() Defining X_1, X_2, X_12, X_112, X_122 sage: I = L.ideal(X_122) sage: E = L.quotient(I); E Lie algebra quotient L/I of dimension 4 over Rational Field where L: Free Nilpotent Lie algebra on 5 generators (X_1, X_2, X_12, X_112, X_122) over Rational Field I: Ideal (X_122) sage: E.category() Join of Category of finite dimensional nilpotent lie algebras with basis over Rational Field and Category of subquotients of sets sage: E.basis().list() [X_1, X_2, X_12, X_112] sage: E.inject_variables() Defining X_1, X_2, X_12, X_112 sage: X_1.bracket(X_2) X_12 sage: X_1.bracket(X_12) X_112 sage: X_2.bracket(X_12) 0
Shorthand for taking a quotient without creating an ideal first:
sage: E2 = L.quotient(X_122); E2 Lie algebra quotient L/I of dimension 4 over Rational Field where L: Free Nilpotent Lie algebra on 5 generators (X_1, X_2, X_12, X_112, X_122) over Rational Field I: Ideal (X_122) sage: E is E2 True
Custom names for the basis can be given:
sage: E.<X,Y,Z,W> = L.quotient(X_122) sage: E.basis().list() [X, Y, Z, W] sage: X.bracket(Z) W sage: Y.bracket(Z) 0
The elements can be relabeled linearly by passing a string to the
names
parameter:sage: E = L.quotient(X_122, names='Y') sage: E.basis().list() [Y_1, Y_2, Y_3, Y_4] sage: E.inject_variables() Defining Y_1, Y_2, Y_3, Y_4 sage: Y_1.bracket(Y_3) Y_4 sage: Y_2.bracket(Y_3) 0
Conversion from the ambient Lie algebra uses the quotient projection:
sage: L = LieAlgebra(QQ, 2, step=3) sage: L.inject_variables() Defining X_1, X_2, X_12, X_112, X_122 sage: E = L.quotient(X_122, names='Y') sage: E(X_1), E(X_2), E(X_12), E(X_112), E(X_122) (Y_1, Y_2, Y_3, Y_4, 0)
A non-stratifiable Lie algebra as a quotient of the free nilpotent Lie algebra of step 4 on 2 generators by the relation \([X_2, [X_1, X_2]] = [X_1, [X_1, [X_1, X_2]]]\):
sage: L = LieAlgebra(QQ, 2, step=4) sage: X_1, X_2 = L.homogeneous_component_basis(1) sage: rel = L[X_2, [X_1, X_2]] - L[X_1, [X_1, [X_1, X_2]]] sage: Q = L.quotient(rel, names='Y') sage: Q.dimension() 5 sage: Q.inject_variables() Defining Y_1, Y_2, Y_3, Y_4, Y_5 sage: lcs = Q.lower_central_series() sage: [I.basis().list() for I in lcs] [[Y_1, Y_2, Y_3, Y_4, Y_5], [Y_5, Y_4, Y_3], [Y_5, Y_4], [Y_5], []] sage: Y_2.bracket(Y_3) Y_5
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