Symplectic Derivation Lie Algebras#

AUTHORS:

  • Travis Scrimshaw (2020-10): Initial version

class sage.algebras.lie_algebras.symplectic_derivation.SymplecticDerivationLieAlgebra(R, g)[source]#

Bases: InfinitelyGeneratedLieAlgebra, IndexedGenerators

The symplectic derivation Lie algebra.

Fix a \(g \geq 4\) and let \(R\) be a commutative ring. Let \(H = R^{2g}\) be equipped with a symplectic form \(\mu\) with the basis \(a_1, \ldots, a_g, b_1, \ldots, b_g\) such that

\[\mu(a_i, a_j) = \mu(b_i, b_j) = 0, \qquad\qquad \mu(a_i, b_j) = -\mu(b_j, a_i) = \delta_{ij},\]

for all \(i, j\). The symplectic derivation Lie algebra is the Lie algebra

\[\mathfrak{c}_g := \bigoplus_{w \geq 0} S^{w+2} H\]

with the Lie bracket on basis elements

\[[x_1 \cdots x_{m+2}, y_1 \cdots y_{n+2}] = \sum_{i,j} \mu(x_i, y_j) x_1 \cdots \widehat{x}_i \cdots x_{m+2} \cdot y_1 \cdots \widehat{y}_j \cdots y_{n+2},\]

where \(\widehat{z}\) denotes that factor is missing. When \(R = \QQ\), this corresponds to the classical Poisson bracket on \(C^{\infty}(\RR^{2g})\) restricted to polynomials with coefficients in \(\QQ\).

EXAMPLES:

sage: L = lie_algebras.SymplecticDerivation(QQ, 5)
sage: elts = L.some_elements()
sage: list(elts)
[a1*a2, b1*b3, a1*a1*a2, b3*b4,
 a1*a4*b3, a1*a2 - 1/2*a1*a2*a2*a5 + a1*a1*a2*b1*b4]
sage: [[elts[i].bracket(elts[j]) for i in range(len(elts))]
....:  for j in range(len(elts))]
[[0, -a2*b3, 0, 0, 0, -a1*a1*a2*a2*b4],
 [a2*b3, 0, 2*a1*a2*b3, 0, a4*b3*b3, a2*b3 - 1/2*a2*a2*a5*b3 + 2*a1*a2*b1*b3*b4],
 [0, -2*a1*a2*b3, 0, 0, 0, -2*a1*a1*a1*a2*a2*b4],
 [0, 0, 0, 0, a1*b3*b3, 0],
 [0, -a4*b3*b3, 0, -a1*b3*b3, 0, -a1*a1*a1*a2*b1*b3 - a1*a1*a2*a4*b3*b4],
 [a1*a1*a2*a2*b4, -a2*b3 + 1/2*a2*a2*a5*b3 - 2*a1*a2*b1*b3*b4, 2*a1*a1*a1*a2*a2*b4,
  0, a1*a1*a1*a2*b1*b3 + a1*a1*a2*a4*b3*b4, 0]]
sage: x = L.monomial(Partition([8,8,6,6,4,2,2,1,1,1])); x
a1*a1*a1*a2*a2*a4*b1*b1*b3*b3
sage: [L[x, elt] for elt in elts]
[-2*a1*a1*a1*a2*a2*a2*a4*b1*b3*b3,
 3*a1*a1*a2*a2*a4*b1*b1*b3*b3*b3,
 -4*a1*a1*a1*a1*a2*a2*a2*a4*b1*b3*b3,
 a1*a1*a1*a2*a2*b1*b1*b3*b3*b3,
 -2*a1*a1*a1*a2*a2*a4*a4*b1*b3*b3*b3,
 -2*a1*a1*a1*a2*a2*a2*a4*b1*b3*b3 + a1*a1*a1*a2*a2*a2*a2*a4*a5*b1*b3*b3
  + a1*a1*a1*a1*a1*a2*a2*a2*b1*b1*b1*b3*b3 - a1*a1*a1*a1*a2*a2*a2*a4*b1*b1*b3*b3*b4]
>>> from sage.all import *
>>> L = lie_algebras.SymplecticDerivation(QQ, Integer(5))
>>> elts = L.some_elements()
>>> list(elts)
[a1*a2, b1*b3, a1*a1*a2, b3*b4,
 a1*a4*b3, a1*a2 - 1/2*a1*a2*a2*a5 + a1*a1*a2*b1*b4]
>>> [[elts[i].bracket(elts[j]) for i in range(len(elts))]
...  for j in range(len(elts))]
[[0, -a2*b3, 0, 0, 0, -a1*a1*a2*a2*b4],
 [a2*b3, 0, 2*a1*a2*b3, 0, a4*b3*b3, a2*b3 - 1/2*a2*a2*a5*b3 + 2*a1*a2*b1*b3*b4],
 [0, -2*a1*a2*b3, 0, 0, 0, -2*a1*a1*a1*a2*a2*b4],
 [0, 0, 0, 0, a1*b3*b3, 0],
 [0, -a4*b3*b3, 0, -a1*b3*b3, 0, -a1*a1*a1*a2*b1*b3 - a1*a1*a2*a4*b3*b4],
 [a1*a1*a2*a2*b4, -a2*b3 + 1/2*a2*a2*a5*b3 - 2*a1*a2*b1*b3*b4, 2*a1*a1*a1*a2*a2*b4,
  0, a1*a1*a1*a2*b1*b3 + a1*a1*a2*a4*b3*b4, 0]]
>>> x = L.monomial(Partition([Integer(8),Integer(8),Integer(6),Integer(6),Integer(4),Integer(2),Integer(2),Integer(1),Integer(1),Integer(1)])); x
a1*a1*a1*a2*a2*a4*b1*b1*b3*b3
>>> [L[x, elt] for elt in elts]
[-2*a1*a1*a1*a2*a2*a2*a4*b1*b3*b3,
 3*a1*a1*a2*a2*a4*b1*b1*b3*b3*b3,
 -4*a1*a1*a1*a1*a2*a2*a2*a4*b1*b3*b3,
 a1*a1*a1*a2*a2*b1*b1*b3*b3*b3,
 -2*a1*a1*a1*a2*a2*a4*a4*b1*b3*b3*b3,
 -2*a1*a1*a1*a2*a2*a2*a4*b1*b3*b3 + a1*a1*a1*a2*a2*a2*a2*a4*a5*b1*b3*b3
  + a1*a1*a1*a1*a1*a2*a2*a2*b1*b1*b1*b3*b3 - a1*a1*a1*a1*a2*a2*a2*a4*b1*b1*b3*b3*b4]

REFERENCES:

class Element[source]#

Bases: LieAlgebraElement

bracket_on_basis(x, y)[source]#

Return the bracket of basis elements indexed by x and y, where i < j.

EXAMPLES:

sage: L = lie_algebras.SymplecticDerivation(QQ, 5)
sage: L.bracket_on_basis([5,2,1], [5,1,1])
0
sage: L.bracket_on_basis([6,1], [3,1,1])
-2*a1*a1*a3
sage: L.bracket_on_basis([9,2,1], [4,1,1])
-a1*a1*a1*a2
sage: L.bracket_on_basis([5,5,2], [6,1,1])
0
sage: L.bracket_on_basis([5,5,5], [10,3])
3*a3*a5*a5
sage: L.bracket_on_basis([10,10,10], [5,3])
-3*a3*b5*b5
>>> from sage.all import *
>>> L = lie_algebras.SymplecticDerivation(QQ, Integer(5))
>>> L.bracket_on_basis([Integer(5),Integer(2),Integer(1)], [Integer(5),Integer(1),Integer(1)])
0
>>> L.bracket_on_basis([Integer(6),Integer(1)], [Integer(3),Integer(1),Integer(1)])
-2*a1*a1*a3
>>> L.bracket_on_basis([Integer(9),Integer(2),Integer(1)], [Integer(4),Integer(1),Integer(1)])
-a1*a1*a1*a2
>>> L.bracket_on_basis([Integer(5),Integer(5),Integer(2)], [Integer(6),Integer(1),Integer(1)])
0
>>> L.bracket_on_basis([Integer(5),Integer(5),Integer(5)], [Integer(10),Integer(3)])
3*a3*a5*a5
>>> L.bracket_on_basis([Integer(10),Integer(10),Integer(10)], [Integer(5),Integer(3)])
-3*a3*b5*b5
degree_on_basis(x)[source]#

Return the degree of the basis element indexed by x.

EXAMPLES:

sage: L = lie_algebras.SymplecticDerivation(QQ, 5)
sage: L.degree_on_basis([5,2,1])
1
sage: L.degree_on_basis([1,1])
0
sage: elt = L.monomial(Partition([5,5,2,1])) + 3*L.monomial(Partition([3,3,2,1]))
sage: elt.degree()
2
>>> from sage.all import *
>>> L = lie_algebras.SymplecticDerivation(QQ, Integer(5))
>>> L.degree_on_basis([Integer(5),Integer(2),Integer(1)])
1
>>> L.degree_on_basis([Integer(1),Integer(1)])
0
>>> elt = L.monomial(Partition([Integer(5),Integer(5),Integer(2),Integer(1)])) + Integer(3)*L.monomial(Partition([Integer(3),Integer(3),Integer(2),Integer(1)]))
>>> elt.degree()
2
some_elements()[source]#

Return some elements of self.

EXAMPLES:

sage: L = lie_algebras.SymplecticDerivation(QQ, 5)
sage: L.some_elements()
[a1*a2, b1*b3, a1*a1*a2, b3*b4, a1*a4*b3,
 a1*a2 - 1/2*a1*a2*a2*a5 + a1*a1*a2*b1*b4]
>>> from sage.all import *
>>> L = lie_algebras.SymplecticDerivation(QQ, Integer(5))
>>> L.some_elements()
[a1*a2, b1*b3, a1*a1*a2, b3*b4, a1*a4*b3,
 a1*a2 - 1/2*a1*a2*a2*a5 + a1*a1*a2*b1*b4]