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 ideal
  • ambient – (optional) the Lie algebra to be quotiented; will be deduced from I if not given
  • names – (optional) a string or a list of strings; names for the basis elements of the quotient. If names is a string, the basis will be named names_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