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:
CombinatorialFreeModuleA 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
selfas 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
selfis 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:
HomsetThe 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
Noneif 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:
MorphismA morphism of Verma modules.
- is_injective()[source]¶
Return if
selfis 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
selfis 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