Crystals of Kac modules of the general-linear Lie superalgebra

class sage.combinat.crystals.kac_modules.CrystalOfKacModule(cartan_type, la, mu)

Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.parent.Parent

Crystal of a Kac module.

Let \(\mathfrak{g}\) be the general linear Lie superalgebra \(\mathfrak{gl}(m|n)\). Let \(\lambda\) and \(\mu\) be dominant weights for \(\mathfrak{gl}_m\) and \(\mathfrak{gl}_n\), respectively. Let \(K\) be the module \(K = \langle f_{\alpha} \rangle\), where \(\alpha\) ranges over all odd positive roots. A Kac module is the \(U_q(\mathfrak{g})\)-module constructed from the highest weight \(U_q(\mathfrak{gl}_m \oplus \mathfrak{gl}_n)\)-module \(V(\lambda, \mu)\) (induced to a \(U_q(\mathfrak{g})\)-module in the natural way) by

\[K(\lambda, \mu) := K \otimes_L V(\lambda, \mu),\]

where \(L\) is the subalgebra generated by \(e_0\) and \(U_q(\mathfrak{gl}_m \oplus \mathfrak{gl}_n)\).

The Kac module admits a \(U_q(\mathfrak{g})\)-crystal structure by taking the crystal structure of \(K\) as given by CrystalOfOddNegativeRoots and the crystal \(B(\lambda, \mu)\) (the natural crystal structure of \(V(\lambda, \mu)\)).

Note

Our notation differs slightly from [Kwon2012] in that our last tableau is transposed.

EXAMPLES:

sage: K = crystals.KacModule(['A', [1,2]], [2], [1,1])
sage: K.cardinality()
576
sage: K.cardinality().factor()
2^6 * 3^2
sage: len(K.cartan_type().root_system().ambient_space().positive_odd_roots())
6
sage: mg = K.module_generator()
sage: mg
({}, [[-2, -2]], [[1], [2]])
sage: mg.weight()
(2, 0, 1, 1, 0)
sage: mg.f(-1)
({}, [[-2, -1]], [[1], [2]])
sage: mg.f(0)
({-e[-1]+e[1]}, [[-2, -2]], [[1], [2]])
sage: mg.f(1)
sage: mg.f(2)
({}, [[-2, -2]], [[1], [3]])

sage: sorted(K.highest_weight_vectors(), key=str)
[({-e[-1]+e[3]}, [[-2, -1]], [[1], [2]]),
 ({-e[-1]+e[3]}, [[-2, -2]], [[1], [2]]),
 ({}, [[-2, -2]], [[1], [2]])]
sage: K = crystals.KacModule(['A', [1,1]], [2], [1])
sage: K.cardinality()
96
sage: K.cardinality().factor()
2^5 * 3
sage: len(K.cartan_type().root_system().ambient_space().positive_odd_roots())
4

sage: sorted(K.highest_weight_vectors(), key=str)
[({-e[-1]+e[2]}, [[-2, -1]], [[1]]),
 ({-e[-1]+e[2]}, [[-2, -2]], [[1]]),
 ({}, [[-2, -2]], [[1]])]
sage: K.genuine_lowest_weight_vectors()
(({-e[-2]+e[1], -e[-2]+e[2], -e[-1]+e[1], -e[-1]+e[2]}, [[-1, -1]], [[2]]),)
sage: sorted(K.lowest_weight_vectors(), key=str)
[({-e[-1]+e[1], -e[-1]+e[2]}, [[-1, -1]], [[2]]),
 ({-e[-2]+e[1], -e[-2]+e[2], -e[-1]+e[1], -e[-1]+e[2]}, [[-1, -1]], [[2]]),
 ({-e[-2]+e[2], -e[-1]+e[1], -e[-1]+e[2]}, [[-1, -1]], [[1]]),
 ({-e[-2]+e[2], -e[-1]+e[1], -e[-1]+e[2]}, [[-1, -1]], [[2]])]

REFERENCES:

class Element

Bases: sage.structure.element_wrapper.ElementWrapper

An element of a Kac module crystal.

e(i)

Return the action of the crystal operator \(e_i\) on self.

EXAMPLES:

sage: K = crystals.KacModule(['A', [2,2]], [2,1], [1])
sage: mg = K.module_generator()
sage: mg.e(0)
sage: mg.e(1)
sage: mg.e(-1)
sage: b = mg.f_string([1,0,1,-1,-2,0,1,2,0,-2,-1,-1,-1]); b
({-e[-3]+e[2], -e[-2]+e[1], -e[-2]+e[2]}, [[-3, -1], [-2]], [[3]])
sage: b.e(-2)
sage: b.e(-1)
({-e[-3]+e[2], -e[-2]+e[1], -e[-2]+e[2]}, [[-3, -2], [-2]], [[3]])
sage: b.e(0)
sage: b.e(1)
({-e[-3]+e[1], -e[-2]+e[1], -e[-2]+e[2]}, [[-3, -1], [-2]], [[3]])
sage: b.e(2)
({-e[-3]+e[2], -e[-2]+e[1], -e[-2]+e[2]}, [[-3, -1], [-2]], [[2]])
f(i)

Return the action of the crystal operator \(f_i\) on self.

EXAMPLES:

sage: K = crystals.KacModule(['A', [2,2]], [2,1], [1])
sage: mg = K.module_generator()
sage: mg.f(-2)
({}, [[-3, -2], [-2]], [[1]])
sage: mg.f(-1)
({}, [[-3, -3], [-1]], [[1]])
sage: mg.f(0)
({-e[-1]+e[1]}, [[-3, -3], [-2]], [[1]])
sage: mg.f(1)
({}, [[-3, -3], [-2]], [[2]])
sage: mg.f(2)
sage: b = mg.f_string([1,0,1,-1,-2,0,1,2,0,-2,-1,2,0]); b
({-e[-3]+e[3], -e[-2]+e[1], -e[-1]+e[1], -e[-1]+e[2]},
 [[-3, -2], [-2]], [[3]])
weight()

Return weight of self.

EXAMPLES:

sage: K = crystals.KacModule(['A', [3,2]], [2,1], [5,1])
sage: mg = K.module_generator()
sage: mg.weight()
(2, 1, 0, 0, 5, 1, 0)
sage: mg.weight().is_dominant()
True
sage: mg.f(0).weight()
(2, 1, 0, -1, 6, 1, 0)
sage: b = mg.f_string([2,1,-3,-2,-1,1,1,0,-2,-1,2,1,1,1,0,2,-3,-2,-1])
sage: b.weight()
(0, 0, 0, 1, 1, 4, 3)
module_generator()

Return the module generator of self.

EXAMPLES:

sage: K = crystals.KacModule(['A', [2,1]], [2,1], [1])
sage: K.module_generator()
({}, [[-3, -3], [-2]], [[1]])
class sage.combinat.crystals.kac_modules.CrystalOfOddNegativeRoots(cartan_type)

Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.parent.Parent

Crystal of the set of odd negative roots.

Let \(\mathfrak{g}\) be the general-linear Lie superalgebra \(\mathfrak{gl}(m|n)\). This is the crystal structure on the set of negative roots as given by [Kwon2012].

More specifically, this is the crystal basis of the subalgebra of \(U_q^-(\mathfrak{g})\) generated by \(f_{\alpha}\), where \(\alpha\) ranges over all odd positive roots. As \(\QQ(q)\)-modules, we have

\[U_q^-(\mathfrak{g}) \cong K \otimes U^-_q(\mathfrak{gl}_m \oplus \mathfrak{gl}_n).\]

EXAMPLES:

sage: S = crystals.OddNegativeRoots(['A', [2,1]])
sage: mg = S.module_generator(); mg
{}
sage: mg.f(0)
{-e[-1]+e[1]}
sage: mg.f_string([0,-1,0,1,2,1,0])
{-e[-2]+e[3], -e[-1]+e[1], -e[-1]+e[2]}
class Element

Bases: sage.structure.element_wrapper.ElementWrapper

An element of the crystal of odd negative roots.

e(i)

Return the action of the crystal operator \(e_i\) on self.

EXAMPLES:

sage: S = crystals.OddNegativeRoots(['A', [2,2]])
sage: mg = S.module_generator()
sage: mg.e(0)
sage: mg.e(1)
sage: b = mg.f_string([0,1,2,-1,0])
sage: b.e(-1)
sage: b.e(0)
{-e[-2]+e[3]}
sage: b.e(1)
sage: b.e(2)
{-e[-2]+e[2], -e[-1]+e[1]}
sage: b.e_string([2,1,0,-1,0])
{}
epsilon(i)

Return \(\varepsilon_i\) of self.

EXAMPLES:

sage: S = crystals.OddNegativeRoots(['A', [2,2]])
sage: mg = S.module_generator()
sage: [mg.epsilon(i) for i in S.index_set()]
[0, 0, 0, 0, 0]
sage: b = mg.f_string([0,1,0,-1,0,-1,-2,-2]); b
{-e[-3]+e[1], -e[-3]+e[2], -e[-1]+e[1]}
sage: [b.epsilon(i) for i in S.index_set()]
[2, 0, 1, 0, 0]
sage: b = mg.f_string([0,1,0,-1,0,-1,-2,-2,2,-1,0]); b
{-e[-3]+e[1], -e[-3]+e[3], -e[-2]+e[1], -e[-1]+e[1]}
sage: [b.epsilon(i) for i in S.index_set()]
[1, 0, 1, 0, 1]
f(i)

Return the action of the crystal operator \(f_i\) on self.

EXAMPLES:

sage: S = crystals.OddNegativeRoots(['A', [2,2]])
sage: mg = S.module_generator()
sage: mg.f(0)
{-e[-1]+e[1]}
sage: mg.f(1)
sage: b = mg.f_string([0,1,2,-1,0]); b
{-e[-2]+e[3], -e[-1]+e[1]}
sage: b.f(-2)
{-e[-3]+e[3], -e[-1]+e[1]}
sage: b.f(-1)
sage: b.f(0)
sage: b.f(1)
{-e[-2]+e[3], -e[-1]+e[2]}
phi(i)

Return \(\varphi_i\) of self.

EXAMPLES:

sage: S = crystals.OddNegativeRoots(['A', [2,2]])
sage: mg = S.module_generator()
sage: [mg.phi(i) for i in S.index_set()]
[0, 0, 1, 0, 0]
sage: b = mg.f(0)
sage: [b.phi(i) for i in S.index_set()]
[0, 1, 0, 1, 0]
sage: b = mg.f_string([0,1,0,-1,0,-1]); b
{-e[-2]+e[1], -e[-2]+e[2], -e[-1]+e[1]}
sage: [b.phi(i) for i in S.index_set()]
[2, 0, 0, 1, 1]
weight()

Return the weight of self.

EXAMPLES:

sage: S = crystals.OddNegativeRoots(['A', [2,2]])
sage: mg = S.module_generator()
sage: mg.weight()
(0, 0, 0, 0, 0, 0)
sage: mg.f_string([0,1,2,-1,-2]).weight()
(-1, 0, 0, 0, 0, 1)
sage: mg.f_string([0,1,2,-1,-2,0,1,0,2]).weight()
(-1, 0, -2, 1, 0, 2)
module_generator()

Return the module generator of self.

EXAMPLES:

sage: S = crystals.OddNegativeRoots(['A', [2,1]])
sage: S.module_generator()
{}
sage.combinat.crystals.kac_modules.latex_dual(elt)

Return a latex representation of a type \(A_n\) crystal tableau elt expressed in terms of dual letters.

The dual letter of \(k\) is expressed as \(\overline{n+2-k}\).

EXAMPLES:

sage: from sage.combinat.crystals.kac_modules import latex_dual
sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: print(latex_dual(T[0]))
{\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}[email protected]{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}
\raisebox{-.6ex}{$\begin{array}[b]{*{2}c}\cline{1-2}
\lr{\overline{3}}&\lr{\overline{3}}\\\cline{1-2}
\lr{\overline{2}}\\\cline{1-1}
\end{array}$}
}
sage.combinat.crystals.kac_modules.to_dual_tableau(elt)

Return a type \(A_n\) crystal tableau elt as a tableau expressed in terms of dual letters.

The dual letter of \(k\) is expressed as \(\overline{n+2-k}\) represented as \(-(n+2-k)\).

EXAMPLES:

sage: from sage.combinat.crystals.kac_modules import to_dual_tableau
sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: ascii_art([to_dual_tableau(t) for t in T])
[  -3 -3   -3 -2   -3 -1   -3 -1   -2 -1   -3 -3   -3 -2   -2 -2 ]
[  -2   ,  -2   ,  -2   ,  -1   ,  -1   ,  -1   ,  -1   ,  -1    ]