BGG Category O Dual Modules¶
AUTHORS:
Travis Scrimshaw (2024-01-07): Initial version
- class sage.algebras.lie_algebras.bgg_dual_module.BGGDualModule(module)[source]¶
Bases:
CombinatorialFreeModule
The dual module \(M^{\vee}\) in the BGG Category \(\mathcal{O}\).
Let \(\tau\) be the transpose map of a semisimple (finite dimensional) Lie algebra \(\mathfrak{g}\) over a field \(R\). Let \(M \in \mathcal{O}\). The BGG dual module is the \(R\)-module \(M^{\vee} := \bigoplus_{\lambda} M_{\lambda}^*\) which has a \(U(\mathfrak{g})\)-module structure given by
\[x \cdot \phi(v) := \phi(\tau(x) \cdot v),\]which is also a weight module with the same grading as \(M\).
The basis we chose to work with here is the natural dual basis to the distinguished basis \(B\) of \(M\). That is, we define the dual function to \(b\) as \(\phi_b(c) = \delta_{bc}\).
EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['A', 1]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = g.verma_module(2*La[1]) sage: Mc = M.dual() sage: B = Mc.basis() sage: it = iter(B) sage: elts = [next(it) for _ in range(7)]; elts [v[2*Lambda[1]]^*, f[-alpha[1]]*v[2*Lambda[1]]^*, f[-alpha[1]]^2*v[2*Lambda[1]]^*, f[-alpha[1]]^3*v[2*Lambda[1]]^*, f[-alpha[1]]^4*v[2*Lambda[1]]^*, f[-alpha[1]]^5*v[2*Lambda[1]]^*, f[-alpha[1]]^6*v[2*Lambda[1]]^*] sage: e, h, f = g.pbw_basis().algebra_generators() sage: [f * vec for vec in elts] [2*f[-alpha[1]]*v[2*Lambda[1]]^*, 2*f[-alpha[1]]^2*v[2*Lambda[1]]^*, 0, -4*f[-alpha[1]]^4*v[2*Lambda[1]]^*, -10*f[-alpha[1]]^5*v[2*Lambda[1]]^*, -18*f[-alpha[1]]^6*v[2*Lambda[1]]^*, -28*f[-alpha[1]]^7*v[2*Lambda[1]]^*] sage: [e * vec for vec in elts] [0, v[2*Lambda[1]]^*, f[-alpha[1]]*v[2*Lambda[1]]^*, f[-alpha[1]]^2*v[2*Lambda[1]]^*, f[-alpha[1]]^3*v[2*Lambda[1]]^*, f[-alpha[1]]^4*v[2*Lambda[1]]^*, f[-alpha[1]]^5*v[2*Lambda[1]]^*] sage: [h * vec for vec in elts] [2*v[2*Lambda[1]]^*, 0, -2*f[-alpha[1]]^2*v[2*Lambda[1]]^*, -4*f[-alpha[1]]^3*v[2*Lambda[1]]^*, -6*f[-alpha[1]]^4*v[2*Lambda[1]]^*, -8*f[-alpha[1]]^5*v[2*Lambda[1]]^*, -10*f[-alpha[1]]^6*v[2*Lambda[1]]^*]
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['A', Integer(1)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = g.verma_module(Integer(2)*La[Integer(1)]) >>> Mc = M.dual() >>> B = Mc.basis() >>> it = iter(B) >>> elts = [next(it) for _ in range(Integer(7))]; elts [v[2*Lambda[1]]^*, f[-alpha[1]]*v[2*Lambda[1]]^*, f[-alpha[1]]^2*v[2*Lambda[1]]^*, f[-alpha[1]]^3*v[2*Lambda[1]]^*, f[-alpha[1]]^4*v[2*Lambda[1]]^*, f[-alpha[1]]^5*v[2*Lambda[1]]^*, f[-alpha[1]]^6*v[2*Lambda[1]]^*] >>> e, h, f = g.pbw_basis().algebra_generators() >>> [f * vec for vec in elts] [2*f[-alpha[1]]*v[2*Lambda[1]]^*, 2*f[-alpha[1]]^2*v[2*Lambda[1]]^*, 0, -4*f[-alpha[1]]^4*v[2*Lambda[1]]^*, -10*f[-alpha[1]]^5*v[2*Lambda[1]]^*, -18*f[-alpha[1]]^6*v[2*Lambda[1]]^*, -28*f[-alpha[1]]^7*v[2*Lambda[1]]^*] >>> [e * vec for vec in elts] [0, v[2*Lambda[1]]^*, f[-alpha[1]]*v[2*Lambda[1]]^*, f[-alpha[1]]^2*v[2*Lambda[1]]^*, f[-alpha[1]]^3*v[2*Lambda[1]]^*, f[-alpha[1]]^4*v[2*Lambda[1]]^*, f[-alpha[1]]^5*v[2*Lambda[1]]^*] >>> [h * vec for vec in elts] [2*v[2*Lambda[1]]^*, 0, -2*f[-alpha[1]]^2*v[2*Lambda[1]]^*, -4*f[-alpha[1]]^3*v[2*Lambda[1]]^*, -6*f[-alpha[1]]^4*v[2*Lambda[1]]^*, -8*f[-alpha[1]]^5*v[2*Lambda[1]]^*, -10*f[-alpha[1]]^6*v[2*Lambda[1]]^*]
REFERENCES:
- class Element[source]¶
Bases:
IndexedFreeModuleElement
- degree_on_basis(m)[source]¶
Return the degree of the basis element indexed by
m
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['D', 5]) sage: La = g.cartan_type().root_system().weight_space().fundamental_weights() sage: M = g.verma_module(La[1] + La[4] - 1/3*La[5]) sage: Mc = M.dual() sage: elt = Mc.an_element(); elt f[-alpha[5]]^2*f[-alpha[4]]^2*f[-alpha[3]]^3*v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* + 2*f[-alpha[5]]*v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* + 3*f[-alpha[4]]*v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* + v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* sage: [M.degree_on_basis(m) for m in elt.support()] [Lambda[1] + 3*Lambda[2] - 2*Lambda[3] - 4/3*Lambda[5], Lambda[1] + Lambda[4] - 1/3*Lambda[5], Lambda[1] + Lambda[3] + Lambda[4] - 7/3*Lambda[5], Lambda[1] + Lambda[3] - Lambda[4] - 1/3*Lambda[5]]
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['D', Integer(5)]) >>> La = g.cartan_type().root_system().weight_space().fundamental_weights() >>> M = g.verma_module(La[Integer(1)] + La[Integer(4)] - Integer(1)/Integer(3)*La[Integer(5)]) >>> Mc = M.dual() >>> elt = Mc.an_element(); elt f[-alpha[5]]^2*f[-alpha[4]]^2*f[-alpha[3]]^3*v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* + 2*f[-alpha[5]]*v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* + 3*f[-alpha[4]]*v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* + v[Lambda[1] + Lambda[4] - 1/3*Lambda[5]]^* >>> [M.degree_on_basis(m) for m in elt.support()] [Lambda[1] + 3*Lambda[2] - 2*Lambda[3] - 4/3*Lambda[5], Lambda[1] + Lambda[4] - 1/3*Lambda[5], Lambda[1] + Lambda[3] + Lambda[4] - 7/3*Lambda[5], Lambda[1] + Lambda[3] - Lambda[4] - 1/3*Lambda[5]]
- dual()[source]¶
Return the dual module of
self
.In Category \(\mathcal{O}\), we have \((M^{\vee})^{\vee} \cong M\), so we return the defining module \(M\) of \(M^{\vee}\).
EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['F', 4]) sage: La = g.cartan_type().root_system().weight_space().fundamental_weights() sage: M = g.verma_module(La[1] - 5/3*La[2] + 3*La[4]) sage: Mc = M.dual() sage: Mc.dual() is M True
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['F', Integer(4)]) >>> La = g.cartan_type().root_system().weight_space().fundamental_weights() >>> M = g.verma_module(La[Integer(1)] - Integer(5)/Integer(3)*La[Integer(2)] + Integer(3)*La[Integer(4)]) >>> Mc = M.dual() >>> Mc.dual() is M True
- highest_weight()[source]¶
Return the highest weight of
self
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['E', 7]) sage: La = g.cartan_type().root_system().weight_space().fundamental_weights() sage: M = g.verma_module(2*La[1] + 5/3*La[4] - 3*La[6]) sage: Mc = M.dual() sage: Mc.highest_weight() 2*Lambda[1] + 5/3*Lambda[4] - 3*Lambda[6]
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['E', Integer(7)]) >>> La = g.cartan_type().root_system().weight_space().fundamental_weights() >>> M = g.verma_module(Integer(2)*La[Integer(1)] + Integer(5)/Integer(3)*La[Integer(4)] - Integer(3)*La[Integer(6)]) >>> Mc = M.dual() >>> Mc.highest_weight() 2*Lambda[1] + 5/3*Lambda[4] - 3*Lambda[6]
- highest_weight_vector()[source]¶
Return the highest weight vector of
self
(assuming the defining module defines such a vector).EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['A', 1]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = g.verma_module(2*La[1]) sage: Mc = M.dual() sage: Mc.highest_weight_vector() v[2*Lambda[1]]^*
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['A', Integer(1)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = g.verma_module(Integer(2)*La[Integer(1)]) >>> Mc = M.dual() >>> Mc.highest_weight_vector() v[2*Lambda[1]]^*
- lie_algebra()[source]¶
Return the underlying Lie algebra of
self
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['B', 3]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = g.verma_module(2*La[1] + La[3]) sage: Mc = M.dual() sage: Mc.lie_algebra() is g True
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['B', Integer(3)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = g.verma_module(Integer(2)*La[Integer(1)] + La[Integer(3)]) >>> Mc = M.dual() >>> Mc.lie_algebra() is g True
- class sage.algebras.lie_algebras.bgg_dual_module.FiniteDimensionalSimpleModule(g, weight, prefix='f', basis_key=None, **kwds)[source]¶
Bases:
SimpleModule
A finite dimensional simple module.
- bgg_resolution()[source]¶
Return the BGG resolution of
self
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['A', 2]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(La[1] + La[2]) sage: L.bgg_resolution() BGG resolution of Simple module with highest weight Lambda[1] + Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['A', Integer(2)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(La[Integer(1)] + La[Integer(2)]) >>> L.bgg_resolution() BGG resolution of Simple module with highest weight Lambda[1] + Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis
- class sage.algebras.lie_algebras.bgg_dual_module.SimpleModule(g, weight, prefix='f', basis_key=None, **kwds)[source]¶
Bases:
ModulePrinting
,CombinatorialFreeModule
Return the simple module \(L_{\lambda}\) as the image of the natural morphism \(\phi: M_{\lambda} \to M_{\lambda}^{\vee}\).
- class Element[source]¶
Bases:
IndexedFreeModuleElement
- ambient()[source]¶
Return the ambient module of
self
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['G', 2]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(2*La[1]) sage: L.ambient() BGG Dual of Verma module with highest weight 2*Lambda[1] of Lie algebra of ['G', 2] in the Chevalley basis
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['G', Integer(2)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(Integer(2)*La[Integer(1)]) >>> L.ambient() BGG Dual of Verma module with highest weight 2*Lambda[1] of Lie algebra of ['G', 2] in the Chevalley basis
- dual()[source]¶
Return the dual module of
self
, which isself
since simple modules are self-dual.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['B', 4]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(2*La[1] + 3*La[4]) sage: L.dual() is L True
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['B', Integer(4)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(Integer(2)*La[Integer(1)] + Integer(3)*La[Integer(4)]) >>> L.dual() is L True
- highest_weight()[source]¶
Return the highest weight of
self
.EXAMPLES:
sage: g = lie_algebras.so(QQ, 7) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(La[1] + La[2]) sage: L.highest_weight() Lambda[1] + Lambda[2]
>>> from sage.all import * >>> g = lie_algebras.so(QQ, Integer(7)) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(La[Integer(1)] + La[Integer(2)]) >>> L.highest_weight() Lambda[1] + Lambda[2]
- highest_weight_vector()[source]¶
Return the highest weight vector of
self
.EXAMPLES:
sage: g = lie_algebras.sp(QQ, 6) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(La[1] + La[2]) sage: L.highest_weight_vector() u[Lambda[1] + Lambda[2]]
>>> from sage.all import * >>> g = lie_algebras.sp(QQ, Integer(6)) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(La[Integer(1)] + La[Integer(2)]) >>> L.highest_weight_vector() u[Lambda[1] + Lambda[2]]
- homogeneous_component_basis(mu)[source]¶
Return a basis for the
mu
weight space ofself
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['A', 2]) sage: P = g.cartan_type().root_system().weight_lattice() sage: La = P.fundamental_weights() sage: la = La[1] + La[2] sage: L = g.simple_module(la) sage: from itertools import product sage: al = P.simple_roots() sage: for wts in product(range(4), repeat=2): ....: mu = la - wts[0] * al[1] - wts[1] * al[2] ....: print(mu) ....: print(L.homogeneous_component_basis(mu)) Lambda[1] + Lambda[2] Family (u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - Lambda[2] Family (f[-alpha[2]]*u[Lambda[1] + Lambda[2]],) 3*Lambda[1] - 3*Lambda[2] Family () 4*Lambda[1] - 5*Lambda[2] Family () -Lambda[1] + 2*Lambda[2] Family (f[-alpha[1]]*u[Lambda[1] + Lambda[2]],) 0 Family (f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]], f[-alpha[2]]*f[-alpha[1]]*u[Lambda[1] + Lambda[2]]) Lambda[1] - 2*Lambda[2] Family (f[-alpha[2]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - 4*Lambda[2] Family () -3*Lambda[1] + 3*Lambda[2] Family () -2*Lambda[1] + Lambda[2] Family (f[-alpha[1]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) -Lambda[1] - Lambda[2] Family (f[-alpha[1] - alpha[2]]^2*u[Lambda[1] + Lambda[2]],) -3*Lambda[2] Family () -5*Lambda[1] + 4*Lambda[2] Family () -4*Lambda[1] + 2*Lambda[2] Family () -3*Lambda[1] Family () -2*Lambda[1] - 2*Lambda[2] Family ()
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['A', Integer(2)]) >>> P = g.cartan_type().root_system().weight_lattice() >>> La = P.fundamental_weights() >>> la = La[Integer(1)] + La[Integer(2)] >>> L = g.simple_module(la) >>> from itertools import product >>> al = P.simple_roots() >>> for wts in product(range(Integer(4)), repeat=Integer(2)): ... mu = la - wts[Integer(0)] * al[Integer(1)] - wts[Integer(1)] * al[Integer(2)] ... print(mu) ... print(L.homogeneous_component_basis(mu)) Lambda[1] + Lambda[2] Family (u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - Lambda[2] Family (f[-alpha[2]]*u[Lambda[1] + Lambda[2]],) 3*Lambda[1] - 3*Lambda[2] Family () 4*Lambda[1] - 5*Lambda[2] Family () -Lambda[1] + 2*Lambda[2] Family (f[-alpha[1]]*u[Lambda[1] + Lambda[2]],) 0 Family (f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]], f[-alpha[2]]*f[-alpha[1]]*u[Lambda[1] + Lambda[2]]) Lambda[1] - 2*Lambda[2] Family (f[-alpha[2]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - 4*Lambda[2] Family () -3*Lambda[1] + 3*Lambda[2] Family () -2*Lambda[1] + Lambda[2] Family (f[-alpha[1]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) -Lambda[1] - Lambda[2] Family (f[-alpha[1] - alpha[2]]^2*u[Lambda[1] + Lambda[2]],) -3*Lambda[2] Family () -5*Lambda[1] + 4*Lambda[2] Family () -4*Lambda[1] + 2*Lambda[2] Family () -3*Lambda[1] Family () -2*Lambda[1] - 2*Lambda[2] Family ()
- lie_algebra()[source]¶
Return the underlying Lie algebra of
self
.EXAMPLES:
sage: g = lie_algebras.so(QQ, 9) sage: La = g.cartan_type().root_system().weight_space().fundamental_weights() sage: L = g.simple_module(La[3] - 1/2*La[1]) sage: L.lie_algebra() Lie algebra of ['B', 4] in the Chevalley basis
>>> from sage.all import * >>> g = lie_algebras.so(QQ, Integer(9)) >>> La = g.cartan_type().root_system().weight_space().fundamental_weights() >>> L = g.simple_module(La[Integer(3)] - Integer(1)/Integer(2)*La[Integer(1)]) >>> L.lie_algebra() Lie algebra of ['B', 4] in the Chevalley basis
- lift()[source]¶
Return the lift map of
self
to the ambient dual Verma module.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['G', 2]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(La[1]) sage: [L.lift(b) for b in L.basis()] # long time [v[Lambda[1]]^*, f[-alpha[1]]*v[Lambda[1]]^*, f[-alpha[2]]*f[-alpha[1]]*v[Lambda[1]]^* - f[-alpha[1] - alpha[2]]*v[Lambda[1]]^*, f[-alpha[1]]*f[-alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^*, f[-alpha[1]]^2*f[-alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-alpha[1]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* + 1/2*f[-3*alpha[1] - alpha[2]]*v[Lambda[1]]^*, f[-alpha[2]]*f[-alpha[1]]^2*f[-alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-alpha[2]]*f[-alpha[1]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* + 1/2*f[-alpha[2]]*f[-3*alpha[1] - alpha[2]]*v[Lambda[1]]^* - f[-alpha[1] - alpha[2]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* + 1/2*f[-3*alpha[1] - 2*alpha[2]]*v[Lambda[1]]^*, f[-alpha[1]]*f[-alpha[1] - alpha[2]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* - 1/2*f[-alpha[1]]*f[-3*alpha[1] - 2*alpha[2]]*v[Lambda[1]]^* - 1/2*f[-alpha[1] - alpha[2]]*f[-3*alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-2*alpha[1] - alpha[2]]^2*v[Lambda[1]]^*]
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['G', Integer(2)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(La[Integer(1)]) >>> [L.lift(b) for b in L.basis()] # long time [v[Lambda[1]]^*, f[-alpha[1]]*v[Lambda[1]]^*, f[-alpha[2]]*f[-alpha[1]]*v[Lambda[1]]^* - f[-alpha[1] - alpha[2]]*v[Lambda[1]]^*, f[-alpha[1]]*f[-alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^*, f[-alpha[1]]^2*f[-alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-alpha[1]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* + 1/2*f[-3*alpha[1] - alpha[2]]*v[Lambda[1]]^*, f[-alpha[2]]*f[-alpha[1]]^2*f[-alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-alpha[2]]*f[-alpha[1]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* + 1/2*f[-alpha[2]]*f[-3*alpha[1] - alpha[2]]*v[Lambda[1]]^* - f[-alpha[1] - alpha[2]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* + 1/2*f[-3*alpha[1] - 2*alpha[2]]*v[Lambda[1]]^*, f[-alpha[1]]*f[-alpha[1] - alpha[2]]*f[-2*alpha[1] - alpha[2]]*v[Lambda[1]]^* - 1/2*f[-alpha[1]]*f[-3*alpha[1] - 2*alpha[2]]*v[Lambda[1]]^* - 1/2*f[-alpha[1] - alpha[2]]*f[-3*alpha[1] - alpha[2]]*v[Lambda[1]]^* + f[-2*alpha[1] - alpha[2]]^2*v[Lambda[1]]^*]
- pbw_basis()[source]¶
Return the PBW basis of the underlying Lie algebra used to define
self
.EXAMPLES:
sage: g = lie_algebras.so(QQ, 8) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(La[2] - 2*La[3]) sage: L.pbw_basis() Universal enveloping algebra of Lie algebra of ['D', 4] in the Chevalley basis in the Poincare-Birkhoff-Witt basis
>>> from sage.all import * >>> g = lie_algebras.so(QQ, Integer(8)) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(La[Integer(2)] - Integer(2)*La[Integer(3)]) >>> L.pbw_basis() Universal enveloping algebra of Lie algebra of ['D', 4] in the Chevalley basis in the Poincare-Birkhoff-Witt basis
- retract(x)[source]¶
Return the retraction of
x
inself
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['A', 2]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(2*La[1]) sage: L.retract(L.lift(sum(L.basis()))) f[-alpha[1]]^2*u[2*Lambda[1]] + f[-alpha[1]]*f[-alpha[1] - alpha[2]]*u[2*Lambda[1]] + f[-alpha[1] - alpha[2]]^2*u[2*Lambda[1]] + f[-alpha[1]]*u[2*Lambda[1]] + f[-alpha[1] - alpha[2]]*u[2*Lambda[1]] + u[2*Lambda[1]] sage: B = list(L.basis()) sage: L.retract(3/2*L.lift(B[0]) - L.lift(B[2]) - 10/3*L.lift(B[3])) -10/3*f[-alpha[1]]^2*u[2*Lambda[1]] - f[-alpha[1] - alpha[2]]*u[2*Lambda[1]] + 3/2*u[2*Lambda[1]]
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['A', Integer(2)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(Integer(2)*La[Integer(1)]) >>> L.retract(L.lift(sum(L.basis()))) f[-alpha[1]]^2*u[2*Lambda[1]] + f[-alpha[1]]*f[-alpha[1] - alpha[2]]*u[2*Lambda[1]] + f[-alpha[1] - alpha[2]]^2*u[2*Lambda[1]] + f[-alpha[1]]*u[2*Lambda[1]] + f[-alpha[1] - alpha[2]]*u[2*Lambda[1]] + u[2*Lambda[1]] >>> B = list(L.basis()) >>> L.retract(Integer(3)/Integer(2)*L.lift(B[Integer(0)]) - L.lift(B[Integer(2)]) - Integer(10)/Integer(3)*L.lift(B[Integer(3)])) -10/3*f[-alpha[1]]^2*u[2*Lambda[1]] - f[-alpha[1] - alpha[2]]*u[2*Lambda[1]] + 3/2*u[2*Lambda[1]]
- weight_space_basis(mu)[source]¶
Return a basis for the
mu
weight space ofself
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['A', 2]) sage: P = g.cartan_type().root_system().weight_lattice() sage: La = P.fundamental_weights() sage: la = La[1] + La[2] sage: L = g.simple_module(la) sage: from itertools import product sage: al = P.simple_roots() sage: for wts in product(range(4), repeat=2): ....: mu = la - wts[0] * al[1] - wts[1] * al[2] ....: print(mu) ....: print(L.homogeneous_component_basis(mu)) Lambda[1] + Lambda[2] Family (u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - Lambda[2] Family (f[-alpha[2]]*u[Lambda[1] + Lambda[2]],) 3*Lambda[1] - 3*Lambda[2] Family () 4*Lambda[1] - 5*Lambda[2] Family () -Lambda[1] + 2*Lambda[2] Family (f[-alpha[1]]*u[Lambda[1] + Lambda[2]],) 0 Family (f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]], f[-alpha[2]]*f[-alpha[1]]*u[Lambda[1] + Lambda[2]]) Lambda[1] - 2*Lambda[2] Family (f[-alpha[2]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - 4*Lambda[2] Family () -3*Lambda[1] + 3*Lambda[2] Family () -2*Lambda[1] + Lambda[2] Family (f[-alpha[1]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) -Lambda[1] - Lambda[2] Family (f[-alpha[1] - alpha[2]]^2*u[Lambda[1] + Lambda[2]],) -3*Lambda[2] Family () -5*Lambda[1] + 4*Lambda[2] Family () -4*Lambda[1] + 2*Lambda[2] Family () -3*Lambda[1] Family () -2*Lambda[1] - 2*Lambda[2] Family ()
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['A', Integer(2)]) >>> P = g.cartan_type().root_system().weight_lattice() >>> La = P.fundamental_weights() >>> la = La[Integer(1)] + La[Integer(2)] >>> L = g.simple_module(la) >>> from itertools import product >>> al = P.simple_roots() >>> for wts in product(range(Integer(4)), repeat=Integer(2)): ... mu = la - wts[Integer(0)] * al[Integer(1)] - wts[Integer(1)] * al[Integer(2)] ... print(mu) ... print(L.homogeneous_component_basis(mu)) Lambda[1] + Lambda[2] Family (u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - Lambda[2] Family (f[-alpha[2]]*u[Lambda[1] + Lambda[2]],) 3*Lambda[1] - 3*Lambda[2] Family () 4*Lambda[1] - 5*Lambda[2] Family () -Lambda[1] + 2*Lambda[2] Family (f[-alpha[1]]*u[Lambda[1] + Lambda[2]],) 0 Family (f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]], f[-alpha[2]]*f[-alpha[1]]*u[Lambda[1] + Lambda[2]]) Lambda[1] - 2*Lambda[2] Family (f[-alpha[2]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) 2*Lambda[1] - 4*Lambda[2] Family () -3*Lambda[1] + 3*Lambda[2] Family () -2*Lambda[1] + Lambda[2] Family (f[-alpha[1]]*f[-alpha[1] - alpha[2]]*u[Lambda[1] + Lambda[2]],) -Lambda[1] - Lambda[2] Family (f[-alpha[1] - alpha[2]]^2*u[Lambda[1] + Lambda[2]],) -3*Lambda[2] Family () -5*Lambda[1] + 4*Lambda[2] Family () -4*Lambda[1] + 2*Lambda[2] Family () -3*Lambda[1] Family () -2*Lambda[1] - 2*Lambda[2] Family ()
- class sage.algebras.lie_algebras.bgg_dual_module.SimpleModuleIndices(simple, prefix, category=None, **kwds)[source]¶
Bases:
IndexedFreeAbelianMonoid
The indices of the basis for a simple \(U(\mathfrak{g})\)-module.
Note
The current implementation assumes the Lie algebra \(\mathfrak{g}\) is finite dimensional.
- cardinality()[source]¶
Return the cardinality of
self
.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['E', 6]) sage: La = g.cartan_type().root_system().weight_lattice().fundamental_weights() sage: L = g.simple_module(La[1]+La[4]) sage: L._indices.cardinality() 51975
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['E', Integer(6)]) >>> La = g.cartan_type().root_system().weight_lattice().fundamental_weights() >>> L = g.simple_module(La[Integer(1)]+La[Integer(4)]) >>> L._indices.cardinality() 51975
- weight_space_basis(mu)[source]¶
Return the indices of the
mu
weight space basis elements.EXAMPLES:
sage: g = LieAlgebra(QQ, cartan_type=['A', 2]) sage: P = g.cartan_type().root_system().weight_lattice() sage: La = P.fundamental_weights() sage: al = P.simple_roots() sage: wt = -3*La[1] + 3*La[2] sage: I = g.simple_module(wt).indices() sage: I.weight_space_basis(wt) [1] sage: I.weight_space_basis(wt - al[1]) [f[-alpha[1]]] sage: I.weight_space_basis(wt - al[2]) [f[-alpha[2]]] sage: I.weight_space_basis(wt - al[1] - al[2]) [f[-alpha[1] - alpha[2]], f[-alpha[2]]*f[-alpha[1]]] sage: I.weight_space_basis(wt - 4*al[1]) [f[-alpha[1]]^4] sage: I.weight_space_basis(wt - 4*al[2]) []
>>> from sage.all import * >>> g = LieAlgebra(QQ, cartan_type=['A', Integer(2)]) >>> P = g.cartan_type().root_system().weight_lattice() >>> La = P.fundamental_weights() >>> al = P.simple_roots() >>> wt = -Integer(3)*La[Integer(1)] + Integer(3)*La[Integer(2)] >>> I = g.simple_module(wt).indices() >>> I.weight_space_basis(wt) [1] >>> I.weight_space_basis(wt - al[Integer(1)]) [f[-alpha[1]]] >>> I.weight_space_basis(wt - al[Integer(2)]) [f[-alpha[2]]] >>> I.weight_space_basis(wt - al[Integer(1)] - al[Integer(2)]) [f[-alpha[1] - alpha[2]], f[-alpha[2]]*f[-alpha[1]]] >>> I.weight_space_basis(wt - Integer(4)*al[Integer(1)]) [f[-alpha[1]]^4] >>> I.weight_space_basis(wt - Integer(4)*al[Integer(2)]) []