Verma Modules#
AUTHORS:
Travis Scrimshaw (2017-06-30): Initial version
Todo
Implement a sage.categories.pushout.ConstructionFunctor
and return as the construction()
.
- class sage.algebras.lie_algebras.verma_module.VermaModule(g, weight, basis_key=None, prefix='f', **kwds)[source]#
Bases:
CombinatorialFreeModule
A Verma module.
Let \(\lambda\) be a weight and \(\mathfrak{g}\) be a Kac–Moody Lie algebra with a fixed Borel subalgebra \(\mathfrak{b} = \mathfrak{h} \oplus \mathfrak{g}^+\). The Verma module \(M_{\lambda}\) is a \(U(\mathfrak{g})\)-module given by
\[M_{\lambda} := U(\mathfrak{g}) \otimes_{U(\mathfrak{b})} F_{\lambda},\]where \(F_{\lambda}\) is the \(U(\mathfrak{b})\) module such that \(h \in U(\mathfrak{h})\) acts as multiplication by \(\langle \lambda, h \rangle\) and \(U\mathfrak{g}^+) F_{\lambda} = 0\).
INPUT:
g
– a Lie algebraweight
– a weight
EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(2*La[1] + 3*La[2]) sage: pbw = M.pbw_basis() sage: E1,E2,F1,F2,H1,H2 = [pbw(g) for g in L.gens()] sage: v = M.highest_weight_vector() sage: x = F2^3 * F1 * v sage: x f[-alpha[2]]^3*f[-alpha[1]]*v[2*Lambda[1] + 3*Lambda[2]] sage: F1 * x f[-alpha[2]]^3*f[-alpha[1]]^2*v[2*Lambda[1] + 3*Lambda[2]] + 3*f[-alpha[2]]^2*f[-alpha[1]]*f[-alpha[1] - alpha[2]]*v[2*Lambda[1] + 3*Lambda[2]] sage: E1 * x 2*f[-alpha[2]]^3*v[2*Lambda[1] + 3*Lambda[2]] sage: H1 * x 3*f[-alpha[2]]^3*f[-alpha[1]]*v[2*Lambda[1] + 3*Lambda[2]] sage: H2 * x -2*f[-alpha[2]]^3*f[-alpha[1]]*v[2*Lambda[1] + 3*Lambda[2]]
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(Integer(2)*La[Integer(1)] + Integer(3)*La[Integer(2)]) >>> pbw = M.pbw_basis() >>> E1,E2,F1,F2,H1,H2 = [pbw(g) for g in L.gens()] >>> v = M.highest_weight_vector() >>> x = F2**Integer(3) * F1 * v >>> x f[-alpha[2]]^3*f[-alpha[1]]*v[2*Lambda[1] + 3*Lambda[2]] >>> F1 * x f[-alpha[2]]^3*f[-alpha[1]]^2*v[2*Lambda[1] + 3*Lambda[2]] + 3*f[-alpha[2]]^2*f[-alpha[1]]*f[-alpha[1] - alpha[2]]*v[2*Lambda[1] + 3*Lambda[2]] >>> E1 * x 2*f[-alpha[2]]^3*v[2*Lambda[1] + 3*Lambda[2]] >>> H1 * x 3*f[-alpha[2]]^3*f[-alpha[1]]*v[2*Lambda[1] + 3*Lambda[2]] >>> H2 * x -2*f[-alpha[2]]^3*f[-alpha[1]]*v[2*Lambda[1] + 3*Lambda[2]]
REFERENCES:
- class Element[source]#
Bases:
IndexedFreeModuleElement
- degree_on_basis(m)[source]#
Return the degree (or weight) of the basis element indexed by
m
.EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(2*La[1] + 3*La[2]) sage: v = M.highest_weight_vector() sage: M.degree_on_basis(v.leading_support()) 2*Lambda[1] + 3*Lambda[2] sage: pbw = M.pbw_basis() sage: G = list(pbw.gens()) sage: f1, f2 = L.f() sage: x = pbw(f1.bracket(f2)) * pbw(f1) * v sage: x.degree() -Lambda[1] + 3*Lambda[2]
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(Integer(2)*La[Integer(1)] + Integer(3)*La[Integer(2)]) >>> v = M.highest_weight_vector() >>> M.degree_on_basis(v.leading_support()) 2*Lambda[1] + 3*Lambda[2] >>> pbw = M.pbw_basis() >>> G = list(pbw.gens()) >>> f1, f2 = L.f() >>> x = pbw(f1.bracket(f2)) * pbw(f1) * v >>> x.degree() -Lambda[1] + 3*Lambda[2]
- gens()[source]#
Return the generators of
self
as a \(U(\mathfrak{g})\)-module.EXAMPLES:
sage: L = lie_algebras.sp(QQ, 6) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] - 3*La[2]) sage: M.gens() (v[Lambda[1] - 3*Lambda[2]],)
>>> from sage.all import * >>> L = lie_algebras.sp(QQ, Integer(6)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] - Integer(3)*La[Integer(2)]) >>> M.gens() (v[Lambda[1] - 3*Lambda[2]],)
- highest_weight()[source]#
Return the highest weight of
self
.EXAMPLES:
sage: L = lie_algebras.so(QQ, 7) sage: La = L.cartan_type().root_system().weight_space().fundamental_weights() sage: M = L.verma_module(4*La[1] - 3/2*La[2]) sage: M.highest_weight() 4*Lambda[1] - 3/2*Lambda[2]
>>> from sage.all import * >>> L = lie_algebras.so(QQ, Integer(7)) >>> La = L.cartan_type().root_system().weight_space().fundamental_weights() >>> M = L.verma_module(Integer(4)*La[Integer(1)] - Integer(3)/Integer(2)*La[Integer(2)]) >>> M.highest_weight() 4*Lambda[1] - 3/2*Lambda[2]
- highest_weight_vector()[source]#
Return the highest weight vector of
self
.EXAMPLES:
sage: L = lie_algebras.sp(QQ, 6) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] - 3*La[2]) sage: M.highest_weight_vector() v[Lambda[1] - 3*Lambda[2]]
>>> from sage.all import * >>> L = lie_algebras.sp(QQ, Integer(6)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] - Integer(3)*La[Integer(2)]) >>> M.highest_weight_vector() v[Lambda[1] - 3*Lambda[2]]
- homogeneous_component_basis(d)[source]#
Return a basis for the
d
-th homogeneous component ofself
.EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: P = L.cartan_type().root_system().weight_lattice() sage: La = P.fundamental_weights() sage: al = P.simple_roots() sage: mu = 2*La[1] + 3*La[2] sage: M = L.verma_module(mu) sage: M.homogeneous_component_basis(mu - al[2]) [f[-alpha[2]]*v[2*Lambda[1] + 3*Lambda[2]]] sage: M.homogeneous_component_basis(mu - 3*al[2]) [f[-alpha[2]]^3*v[2*Lambda[1] + 3*Lambda[2]]] sage: M.homogeneous_component_basis(mu - 3*al[2] - 2*al[1]) [f[-alpha[2]]*f[-alpha[1] - alpha[2]]^2*v[2*Lambda[1] + 3*Lambda[2]], f[-alpha[2]]^2*f[-alpha[1]]*f[-alpha[1] - alpha[2]]*v[2*Lambda[1] + 3*Lambda[2]], f[-alpha[2]]^3*f[-alpha[1]]^2*v[2*Lambda[1] + 3*Lambda[2]]] sage: M.homogeneous_component_basis(mu - La[1]) Family ()
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> P = L.cartan_type().root_system().weight_lattice() >>> La = P.fundamental_weights() >>> al = P.simple_roots() >>> mu = Integer(2)*La[Integer(1)] + Integer(3)*La[Integer(2)] >>> M = L.verma_module(mu) >>> M.homogeneous_component_basis(mu - al[Integer(2)]) [f[-alpha[2]]*v[2*Lambda[1] + 3*Lambda[2]]] >>> M.homogeneous_component_basis(mu - Integer(3)*al[Integer(2)]) [f[-alpha[2]]^3*v[2*Lambda[1] + 3*Lambda[2]]] >>> M.homogeneous_component_basis(mu - Integer(3)*al[Integer(2)] - Integer(2)*al[Integer(1)]) [f[-alpha[2]]*f[-alpha[1] - alpha[2]]^2*v[2*Lambda[1] + 3*Lambda[2]], f[-alpha[2]]^2*f[-alpha[1]]*f[-alpha[1] - alpha[2]]*v[2*Lambda[1] + 3*Lambda[2]], f[-alpha[2]]^3*f[-alpha[1]]^2*v[2*Lambda[1] + 3*Lambda[2]]] >>> M.homogeneous_component_basis(mu - La[Integer(1)]) Family ()
- is_singular()[source]#
Return if
self
is a singular Verma module.A Verma module \(M_{\lambda}\) is singular if there does not exist a dominant weight \(\tilde{\lambda}\) that is in the dot orbit of \(\lambda\). We call a Verma module regular otherwise.
EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] + La[2]) sage: M.is_singular() False sage: M = L.verma_module(La[1] - La[2]) sage: M.is_singular() True sage: M = L.verma_module(2*La[1] - 10*La[2]) sage: M.is_singular() False sage: M = L.verma_module(-2*La[1] - 2*La[2]) sage: M.is_singular() False sage: M = L.verma_module(-4*La[1] - La[2]) sage: M.is_singular() True
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] + La[Integer(2)]) >>> M.is_singular() False >>> M = L.verma_module(La[Integer(1)] - La[Integer(2)]) >>> M.is_singular() True >>> M = L.verma_module(Integer(2)*La[Integer(1)] - Integer(10)*La[Integer(2)]) >>> M.is_singular() False >>> M = L.verma_module(-Integer(2)*La[Integer(1)] - Integer(2)*La[Integer(2)]) >>> M.is_singular() False >>> M = L.verma_module(-Integer(4)*La[Integer(1)] - La[Integer(2)]) >>> M.is_singular() True
- lie_algebra()[source]#
Return the underlying Lie algebra of
self
.EXAMPLES:
sage: L = lie_algebras.so(QQ, 9) sage: La = L.cartan_type().root_system().weight_space().fundamental_weights() sage: M = L.verma_module(La[3] - 1/2*La[1]) sage: M.lie_algebra() Lie algebra of ['B', 4] in the Chevalley basis
>>> from sage.all import * >>> L = lie_algebras.so(QQ, Integer(9)) >>> La = L.cartan_type().root_system().weight_space().fundamental_weights() >>> M = L.verma_module(La[Integer(3)] - Integer(1)/Integer(2)*La[Integer(1)]) >>> M.lie_algebra() Lie algebra of ['B', 4] in the Chevalley basis
- pbw_basis()[source]#
Return the PBW basis of the underlying Lie algebra used to define
self
.EXAMPLES:
sage: L = lie_algebras.so(QQ, 8) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[2] - 2*La[3]) sage: M.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 * >>> L = lie_algebras.so(QQ, Integer(8)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(2)] - Integer(2)*La[Integer(3)]) >>> M.pbw_basis() Universal enveloping algebra of Lie algebra of ['D', 4] in the Chevalley basis in the Poincare-Birkhoff-Witt basis
- poincare_birkhoff_witt_basis()[source]#
Return the PBW basis of the underlying Lie algebra used to define
self
.EXAMPLES:
sage: L = lie_algebras.so(QQ, 8) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[2] - 2*La[3]) sage: M.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 * >>> L = lie_algebras.so(QQ, Integer(8)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(2)] - Integer(2)*La[Integer(3)]) >>> M.pbw_basis() Universal enveloping algebra of Lie algebra of ['D', 4] in the Chevalley basis in the Poincare-Birkhoff-Witt basis
- class sage.algebras.lie_algebras.verma_module.VermaModuleHomset(X, Y, category=None, base=None, check=True)[source]#
Bases:
Homset
The set of morphisms from one Verma module to another considered as \(U(\mathfrak{g})\)-representations.
Let \(M_{w \cdot \lambda}\) and \(M_{w' \cdot \lambda'}\) be Verma modules, \(\cdot\) is the dot action, and \(\lambda + \rho\), \(\lambda' + \rho\) are dominant weights. Then we have
\[\dim \hom(M_{w \cdot \lambda}, M_{w' \cdot \lambda'}) = 1\]if and only if \(\lambda = \lambda'\) and \(w' \leq w\) in Bruhat order. Otherwise the homset is 0 dimensional.
- Element[source]#
alias of
VermaModuleMorphism
- basis()[source]#
Return a basis of
self
.EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] + La[2]) sage: Mp = L.verma_module(M.highest_weight().dot_action([2])) sage: H = Hom(Mp, M) sage: list(H.basis()) == [H.natural_map()] True sage: Mp = L.verma_module(La[1] + 2*La[2]) sage: H = Hom(Mp, M) sage: H.basis() Family ()
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] + La[Integer(2)]) >>> Mp = L.verma_module(M.highest_weight().dot_action([Integer(2)])) >>> H = Hom(Mp, M) >>> list(H.basis()) == [H.natural_map()] True >>> Mp = L.verma_module(La[Integer(1)] + Integer(2)*La[Integer(2)]) >>> H = Hom(Mp, M) >>> H.basis() Family ()
- dimension()[source]#
Return the dimension of
self
(as a vector space over the base ring).EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] + La[2]) sage: Mp = L.verma_module(M.highest_weight().dot_action([2])) sage: H = Hom(Mp, M) sage: H.dimension() 1 sage: Mp = L.verma_module(La[1] + 2*La[2]) sage: H = Hom(Mp, M) sage: H.dimension() 0
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] + La[Integer(2)]) >>> Mp = L.verma_module(M.highest_weight().dot_action([Integer(2)])) >>> H = Hom(Mp, M) >>> H.dimension() 1 >>> Mp = L.verma_module(La[Integer(1)] + Integer(2)*La[Integer(2)]) >>> H = Hom(Mp, M) >>> H.dimension() 0
- natural_map()[source]#
Return the “natural map” of
self
.EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] + La[2]) sage: Mp = L.verma_module(M.highest_weight().dot_action([2])) sage: H = Hom(Mp, M) sage: H.natural_map() Verma module morphism: From: Verma module with highest weight 3*Lambda[1] - 3*Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis To: Verma module with highest weight Lambda[1] + Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis Defn: v[3*Lambda[1] - 3*Lambda[2]] |--> f[-alpha[2]]^2*v[Lambda[1] + Lambda[2]] sage: Mp = L.verma_module(La[1] + 2*La[2]) sage: H = Hom(Mp, M) sage: H.natural_map() Verma module morphism: From: Verma module with highest weight Lambda[1] + 2*Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis To: Verma module with highest weight Lambda[1] + Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis Defn: v[Lambda[1] + 2*Lambda[2]] |--> 0
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] + La[Integer(2)]) >>> Mp = L.verma_module(M.highest_weight().dot_action([Integer(2)])) >>> H = Hom(Mp, M) >>> H.natural_map() Verma module morphism: From: Verma module with highest weight 3*Lambda[1] - 3*Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis To: Verma module with highest weight Lambda[1] + Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis Defn: v[3*Lambda[1] - 3*Lambda[2]] |--> f[-alpha[2]]^2*v[Lambda[1] + Lambda[2]] >>> Mp = L.verma_module(La[Integer(1)] + Integer(2)*La[Integer(2)]) >>> H = Hom(Mp, M) >>> H.natural_map() Verma module morphism: From: Verma module with highest weight Lambda[1] + 2*Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis To: Verma module with highest weight Lambda[1] + Lambda[2] of Lie algebra of ['A', 2] in the Chevalley basis Defn: v[Lambda[1] + 2*Lambda[2]] |--> 0
- singular_vector()[source]#
Return the singular vector in the codomain corresponding to the domain’s highest weight element or
None
if no such element exists.ALGORITHM:
We essentially follow the algorithm laid out in [deG2005]. We use the \(\mathfrak{sl}_2\) relation on \(M_{s_i \cdot \lambda} \to M_{\lambda}\), where \(\langle \lambda + \delta, \alpha_i^{\vee} \rangle = m > 0\), i.e., the weight \(\lambda\) is \(i\)-dominant with respect to the dot action. From here, we construct the singular vector \(f_i^m v_{\lambda}\). We iterate this until we reach \(\mu\).
EXAMPLES:
sage: L = lie_algebras.sp(QQ, 6) sage: La = L.cartan_type().root_system().weight_space().fundamental_weights() sage: la = La[1] - La[3] sage: mu = la.dot_action([1,2]) sage: M = L.verma_module(la) sage: Mp = L.verma_module(mu) sage: H = Hom(Mp, M) sage: H.singular_vector() f[-alpha[2]]*f[-alpha[1]]^3*v[Lambda[1] - Lambda[3]] + 3*f[-alpha[1]]^2*f[-alpha[1] - alpha[2]]*v[Lambda[1] - Lambda[3]]
>>> from sage.all import * >>> L = lie_algebras.sp(QQ, Integer(6)) >>> La = L.cartan_type().root_system().weight_space().fundamental_weights() >>> la = La[Integer(1)] - La[Integer(3)] >>> mu = la.dot_action([Integer(1),Integer(2)]) >>> M = L.verma_module(la) >>> Mp = L.verma_module(mu) >>> H = Hom(Mp, M) >>> H.singular_vector() f[-alpha[2]]*f[-alpha[1]]^3*v[Lambda[1] - Lambda[3]] + 3*f[-alpha[1]]^2*f[-alpha[1] - alpha[2]]*v[Lambda[1] - Lambda[3]]
sage: L = LieAlgebra(QQ, cartan_type=['F',4]) sage: La = L.cartan_type().root_system().weight_space().fundamental_weights() sage: la = La[1] + La[2] - La[3] sage: mu = la.dot_action([1,2,3,2]) sage: M = L.verma_module(la) sage: Mp = L.verma_module(mu) sage: H = Hom(Mp, M) sage: v = H.singular_vector() sage: pbw = M.pbw_basis() sage: E = [pbw(e) for e in L.e()] sage: all(e * v == M.zero() for e in E) True
>>> from sage.all import * >>> L = LieAlgebra(QQ, cartan_type=['F',Integer(4)]) >>> La = L.cartan_type().root_system().weight_space().fundamental_weights() >>> la = La[Integer(1)] + La[Integer(2)] - La[Integer(3)] >>> mu = la.dot_action([Integer(1),Integer(2),Integer(3),Integer(2)]) >>> M = L.verma_module(la) >>> Mp = L.verma_module(mu) >>> H = Hom(Mp, M) >>> v = H.singular_vector() >>> pbw = M.pbw_basis() >>> E = [pbw(e) for e in L.e()] >>> all(e * v == M.zero() for e in E) True
When \(w \cdot \lambda \notin \lambda + Q^-\), there does not exist a singular vector:
sage: L = lie_algebras.sl(QQ, 4) sage: La = L.cartan_type().root_system().weight_space().fundamental_weights() sage: la = 3/7*La[1] - 1/2*La[3] sage: mu = la.dot_action([1,2]) sage: M = L.verma_module(la) sage: Mp = L.verma_module(mu) sage: H = Hom(Mp, M) sage: H.singular_vector() is None True
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(4)) >>> La = L.cartan_type().root_system().weight_space().fundamental_weights() >>> la = Integer(3)/Integer(7)*La[Integer(1)] - Integer(1)/Integer(2)*La[Integer(3)] >>> mu = la.dot_action([Integer(1),Integer(2)]) >>> M = L.verma_module(la) >>> Mp = L.verma_module(mu) >>> H = Hom(Mp, M) >>> H.singular_vector() is None True
- zero()[source]#
Return the zero morphism of
self
.EXAMPLES:
sage: L = lie_algebras.sp(QQ, 6) sage: La = L.cartan_type().root_system().weight_space().fundamental_weights() sage: M = L.verma_module(La[1] + 2/3*La[2]) sage: Mp = L.verma_module(La[2] - La[3]) sage: H = Hom(Mp, M) sage: H.zero() Verma module morphism: From: Verma module with highest weight Lambda[2] - Lambda[3] of Lie algebra of ['C', 3] in the Chevalley basis To: Verma module with highest weight Lambda[1] + 2/3*Lambda[2] of Lie algebra of ['C', 3] in the Chevalley basis Defn: v[Lambda[2] - Lambda[3]] |--> 0
>>> from sage.all import * >>> L = lie_algebras.sp(QQ, Integer(6)) >>> La = L.cartan_type().root_system().weight_space().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] + Integer(2)/Integer(3)*La[Integer(2)]) >>> Mp = L.verma_module(La[Integer(2)] - La[Integer(3)]) >>> H = Hom(Mp, M) >>> H.zero() Verma module morphism: From: Verma module with highest weight Lambda[2] - Lambda[3] of Lie algebra of ['C', 3] in the Chevalley basis To: Verma module with highest weight Lambda[1] + 2/3*Lambda[2] of Lie algebra of ['C', 3] in the Chevalley basis Defn: v[Lambda[2] - Lambda[3]] |--> 0
- class sage.algebras.lie_algebras.verma_module.VermaModuleMorphism(parent, scalar)[source]#
Bases:
Morphism
A morphism of Verma modules.
- is_injective()[source]#
Return if
self
is injective or not.A Verma module morphism \(\phi : M \to M'\) is injective if and only if \(\dim \hom(M, M') = 1\) and \(\phi \neq 0\).
EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] + La[2]) sage: Mp = L.verma_module(M.highest_weight().dot_action([1,2])) sage: Mpp = L.verma_module(M.highest_weight().dot_action([1,2]) + La[1]) sage: phi = Hom(Mp, M).natural_map() sage: phi.is_injective() True sage: (0 * phi).is_injective() False sage: psi = Hom(Mpp, Mp).natural_map() sage: psi.is_injective() False
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] + La[Integer(2)]) >>> Mp = L.verma_module(M.highest_weight().dot_action([Integer(1),Integer(2)])) >>> Mpp = L.verma_module(M.highest_weight().dot_action([Integer(1),Integer(2)]) + La[Integer(1)]) >>> phi = Hom(Mp, M).natural_map() >>> phi.is_injective() True >>> (Integer(0) * phi).is_injective() False >>> psi = Hom(Mpp, Mp).natural_map() >>> psi.is_injective() False
- is_surjective()[source]#
Return if
self
is surjective or not.A Verma module morphism is surjective if and only if the domain is equal to the codomain and it is not the zero morphism.
EXAMPLES:
sage: L = lie_algebras.sl(QQ, 3) sage: La = L.cartan_type().root_system().weight_lattice().fundamental_weights() sage: M = L.verma_module(La[1] + La[2]) sage: Mp = L.verma_module(M.highest_weight().dot_action([1,2])) sage: phi = Hom(M, M).natural_map() sage: phi.is_surjective() True sage: (0 * phi).is_surjective() False sage: psi = Hom(Mp, M).natural_map() sage: psi.is_surjective() False
>>> from sage.all import * >>> L = lie_algebras.sl(QQ, Integer(3)) >>> La = L.cartan_type().root_system().weight_lattice().fundamental_weights() >>> M = L.verma_module(La[Integer(1)] + La[Integer(2)]) >>> Mp = L.verma_module(M.highest_weight().dot_action([Integer(1),Integer(2)])) >>> phi = Hom(M, M).natural_map() >>> phi.is_surjective() True >>> (Integer(0) * phi).is_surjective() False >>> psi = Hom(Mp, M).natural_map() >>> psi.is_surjective() False