Subalgebras and ideals of Lie algebras

AUTHORS:

  • Eero Hakavuori (2018-08-29): initial version
sage.algebras.lie_algebras.subalgebra.LieSubalgebra_finite_dimensional_with_basis

A Lie subalgebra of a finite dimensional Lie algebra with basis.

INPUT:

  • ambient – the Lie algebra containing the subalgebra
  • gens – a list of generators of the subalgebra
  • ideal – (default: False) a boolean; if True, then gens is interpreted as the generating set of an ideal instead of a subalgebra
  • order – (optional) the key used to sort the indices of ambient
  • category – (optional) a subcategory of subobjects of finite dimensional Lie algebras with basis

EXAMPLES:

Subalgebras and ideals are defined by giving a list of generators:

sage: L = lie_algebras.Heisenberg(QQ, 1)
sage: X, Y, Z = L.basis()
sage: S =  L.subalgebra([X, Z]); S
Subalgebra generated by (p1, z) of Heisenberg algebra of rank 1 over Rational Field
sage: I =  L.ideal([X, Z]); I
Ideal (p1, z) of Heisenberg algebra of rank 1 over Rational Field

An ideal is in general larger than the subalgebra with the same generators:

sage: S = L.subalgebra(Y)
sage: S.basis()
Family (q1,)
sage: I = L.ideal(Y)
sage: I.basis()
Family (q1, z)

The zero dimensional subalgebra can be created by giving 0 as a generator or with an empty list of generators:

sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z': 1}})
sage: S1 = L.subalgebra(0)
sage: S2 = L.subalgebra([])
sage: S1 is S2
True
sage: S1.basis()
Family ()

Elements of the ambient Lie algebra can be reduced modulo an ideal or subalgebra:

sage: L.<X,Y,Z> = LieAlgebra(SR, {('X','Y'): {'Z': 1}})
sage: I = L.ideal(Y)
sage: I.reduce(X + 2*Y + 3*Z)
X
sage: S = L.subalgebra(Y)
sage: S.reduce(X + 2*Y + 3*Z)
X + 3*Z

The reduction gives elements in a fixed complementary subspace. When the base ring is a field, the complementary subspace is spanned by those basis elements which are not leading supports of the basis:

sage: I =  L.ideal(X + Y)
sage: I.basis()
Family (X + Y, Z)
sage: el = var('x')*X + var('y')*Y + var('z')*Z; el
x*X + y*Y + z*Z
sage: I.reduce(el)
(x-y)*X

Giving a different order may change the reduction of elements:

sage: I =  L.ideal(X + Y, order=lambda s: ['Z','Y','X'].index(s))
sage: I.basis()
Family (X + Y, Z)
sage: I.reduce(el)
(-x+y)*Y

A subalgebra of a subalgebra is a subalgebra of the original:

sage: sc = {('X','Y'): {'Z': 1}, ('X','Z'): {'W': 1}}
sage: L.<X,Y,Z,W> = LieAlgebra(QQ, sc)
sage: S1 = L.subalgebra([Y, Z, W]); S1
Subalgebra generated by (Y, Z, W) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
sage: S2 = S1.subalgebra(S1.gens()[1:]); S2
Subalgebra generated by (Z, W) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
sage: S3 = S2.subalgebra(S2.gens()[1:]); S3
Subalgebra generated by (W) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field

An ideal of an ideal is not necessarily an ideal of the original:

sage: I = L.ideal(Y); I
Ideal (Y) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
sage: J = I.ideal(Z); J
Ideal (Z) of Ideal (Y) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
sage: J.basis()
Family (Z,)
sage: J.is_ideal(L)
False
sage: K = L.ideal(J.basis().list())
sage: K.basis()
Family (W, Z)