# Elementary Crystals¶

Let $$\lambda$$ be a weight. The crystals $$T_{\lambda}$$, $$R_{\lambda}$$, $$B_i$$, and $$C$$ are important objects in the tensor category of crystals. For example, the crystal $$T_0$$ is the neutral object in this category; i.e., $$T_0 \otimes B \cong B \otimes T_0 \cong B$$ for any crystal $$B$$. We list some other properties of these crystals:

• The crystal $$T_{\lambda} \otimes B(\infty)$$ is the crystal of the Verma module with highest weight $$\lambda$$, where $$\lambda$$ is a dominant integral weight.
• Let $$u_{\infty}$$ be the highest weight vector of $$B(\infty)$$ and $$\lambda$$ be a dominant integral weight. There is an embedding of crystals $$B(\lambda) \longrightarrow T_{\lambda} \otimes B(\infty)$$ sending $$u_{\lambda} \mapsto t_{\lambda} \otimes u_{\infty}$$ which is not strict, but the embedding $$B(\lambda) \longrightarrow C \otimes T_{\lambda} \otimes B(\infty)$$ by $$u_{\lambda} \mapsto c \otimes t_{\lambda} \otimes u_{\infty}$$ is a strict embedding.
• For any dominant integral weight $$\lambda$$, there is a surjective crystal morphism $$\Psi_{\lambda} \colon R_{\lambda} \otimes B(\infty) \longrightarrow B(\lambda)$$. More precisely, if $$B = \{r_{\lambda} \otimes b \in R_{\lambda} \otimes B(\infty) : \Psi_{\lambda}(r_{\lambda} \otimes b) \neq 0 \}$$, then $$B \cong B(\lambda)$$ as crystals.
• For all Cartan types and all weights $$\lambda$$, we have $$R_{\lambda} \cong C \otimes T_{\lambda}$$ as crystals.
• For each $$i$$, there is a strict crystal morphism $$\Psi_i \colon B(\infty) \longrightarrow B_i \otimes B(\infty)$$ defined by $$u_{\infty} \mapsto b_i(0) \otimes u_{\infty}$$, where $$u_\infty$$ is the highest weight vector of $$B(\infty)$$.

For more information on $$B(\infty)$$, see InfinityCrystalOfTableaux.

Note

As with TensorProductOfCrystals, we are using the opposite of Kashiwara’s convention.

AUTHORS:

• Ben Salisbury: Initial version

REFERENCES:

 [Kashiwara93] (1, 2, 3) M. Kashiwara. The Crystal Base and Littelmann’s Refined Demazure Character Formula. Duke Math. J. 71 (3), pp. 839–858, 1993.
 [NZ97] T. Nakashima and A. Zelevinsky. Polyhedral Realizations of Crystal Bases for Quantized Kac-Moody Algebras. Adv. Math. 131, pp. 253–278, 1997.
class sage.combinat.crystals.elementary_crystals.AbstractSingleCrystalElement

Abstract base class for elements in crystals with a single element.

e(i)

Return $$e_i$$ of self, which is None for all $$i$$.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: ct = CartanType(['A',2])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = TCrystal(ct,la[1])
sage: t = T.highest_weight_vector()
sage: t.e(1)
sage: t.e(2)

f(i)

Return $$f_i$$ of self, which is None for all $$i$$.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: ct = CartanType(['A',2])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = TCrystal(ct,la[1])
sage: t = T.highest_weight_vector()
sage: t.f(1)
sage: t.f(2)

class sage.combinat.crystals.elementary_crystals.ComponentCrystal(cartan_type)

The component crystal.

Defined in [Kashiwara93], the component crystal $$C = \{c\}$$ is the single element crystal whose crystal structure is defined by

$\mathrm{wt}(c) = 0, \quad e_i c = f_i c = 0, \quad \varepsilon_i(c) = \varphi_i(c) = 0.$

Note $$C \cong B(0)$$, where $$B(0)$$ is the highest weight crystal of highest weight $$0$$.

INPUT:

• cartan_type – A Cartan type
class Element

Element of a component crystal.

epsilon(i)

Return $$\varepsilon_i$$ of self, which is $$0$$ for all $$i$$.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: C = ComponentCrystal("C5")
sage: c = C.highest_weight_vector()
sage: [c.epsilon(i) for i in C.index_set()]
[0, 0, 0, 0, 0]

phi(i)

Return $$\varphi_i$$ of self, which is $$0$$ for all $$i$$.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: C = ComponentCrystal("C5")
sage: c = C.highest_weight_vector()
sage: [c.phi(i) for i in C.index_set()]
[0, 0, 0, 0, 0]

weight()

Return the weight of self, which is always $$0$$.

EXAMPLES:

sage: C = ComponentCrystal("F4")
sage: c = C.highest_weight_vector()
sage: c.weight()
(0, 0, 0, 0)

ComponentCrystal.cardinality()

Return the cardinality of self, which is always $$1$$.

EXAMPLES:

sage: C = ComponentCrystal("E6")
sage: c = C.highest_weight_vector()
sage: C.cardinality()
1

class sage.combinat.crystals.elementary_crystals.ElementaryCrystal(cartan_type, i)

The elementary crystal $$B_i$$.

For $$i$$ an element of the index set of type $$X$$, the crystal $$B_i$$ of type $$X$$ is the set

$B_i = \{ b_i(m) : m \in \ZZ \},$

where the crystal stucture is given by

\begin{split}\begin{aligned} \mathrm{wt}\bigl(b_i(m)\bigr) &= m\alpha_i \\ \varphi_j\bigl(b_i(m)\bigr) &= \begin{cases} m & \text{ if } j=i, \\ -\infty & \text{ if } j\neq i, \end{cases} \\ \varepsilon_j\bigl(b_i(m)\bigr) &= \begin{cases} -m & \text{ if } j=i, \\ -\infty & \text{ if } j\neq i, \end{cases} \\ e_j b_i(m) &= \begin{cases} b_i(m+1) & \text{ if } j=i, \\ 0 & \text{ if } j\neq i, \end{cases} \\ f_j b_i(m) &= \begin{cases} b_i(m-1) & \text{ if } j=i, \\ 0 & \text{ if } j\neq i. \end{cases} \end{aligned}\end{split}

The Kashiwara embedding theorem asserts there is a unique strict crystal embedding of crystals

$B(\infty) \hookrightarrow B_i \otimes B(\infty),$

satisfying certain properties (see [Kashiwara93]). The above embedding may be iterated to obtain a new embedding

$B(\infty) \hookrightarrow B_{i_N} \otimes B_{i_{N-1}} \otimes \cdots \otimes B_{i_2} \otimes B_{i_1} \otimes B(\infty),$

which is a foundational object in the study of polyhedral realizations of crystals (see, for example, [NZ97]).

class Element(parent, m)

Element of a $$B_i$$ crystal.

e(i)

Return the action of $$e_i$$ on self.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: B = ElementaryCrystal(['E',7],1)
sage: B(3).e(1)
4
sage: B(172).e_string([1]*171)
343
sage: B(0).e(2)

epsilon(i)

Return $$\varepsilon_i$$ of self.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: B = ElementaryCrystal(['F',4],3)
sage: [[B(j).epsilon(i) for i in B.index_set()] for j in range(5)]
[[-inf, -inf, 0, -inf],
[-inf, -inf, -1, -inf],
[-inf, -inf, -2, -inf],
[-inf, -inf, -3, -inf],
[-inf, -inf, -4, -inf]]

f(i)

Return the action of $$f_i$$ on self.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: B = ElementaryCrystal(['E',7],1)
sage: B(3).f(1)
2
sage: B(172).f_string([1]*171)
1
sage: B(0).e(2)

phi(i)

Return $$\varphi_i$$ of self.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: B = ElementaryCrystal(['E',8,1],4)
sage: [[B(m).phi(j) for j in B.index_set()] for m in range(44,49)]
[[-inf, -inf, -inf, -inf, 44, -inf, -inf, -inf, -inf],
[-inf, -inf, -inf, -inf, 45, -inf, -inf, -inf, -inf],
[-inf, -inf, -inf, -inf, 46, -inf, -inf, -inf, -inf],
[-inf, -inf, -inf, -inf, 47, -inf, -inf, -inf, -inf],
[-inf, -inf, -inf, -inf, 48, -inf, -inf, -inf, -inf]]

weight()

Return the weight of self.

EXAMPLES:

sage: B = ElementaryCrystal(['C',14],12)
sage: B(-385).weight()
-385*alpha[12]

class sage.combinat.crystals.elementary_crystals.RCrystal(cartan_type, weight)

The crystal $$R_{\lambda}$$.

For a fixed weight $$\lambda$$, the crystal $$R_{\lambda} = \{ r_{\lambda} \}$$ is a single element crystal with the crystal structure defined by

$\mathrm{wt}(r_{\lambda}) = \lambda, \quad e_i r_{\lambda} = f_i r_{\lambda} = 0, \quad \varepsilon_i(r_{\lambda}) = -\langle h_i, \lambda\rangle, \quad \varphi_i(r_{\lambda}) = 0,$

where $$\{h_i\}$$ are the simple coroots.

Tensoring $$R_{\lambda}$$ with a crystal $$B$$ results in shifting the weights of the vertices in $$B$$ by $$\lambda$$ and may also cut a subset out of the original graph of $$B$$. That is, $$\mathrm{wt}(r_{\lambda} \otimes b) = \mathrm{wt}(b) + \lambda$$, where $$b \in B$$, provided $$r_{\lambda} \otimes b \neq 0$$. For example, the crystal graph of $$B(\lambda)$$ is the same as the crystal graph of $$R_{\lambda} \otimes B(\infty)$$ generated from the component $$r_{\lambda} \otimes u_{\infty}$$.

INPUT:

• cartan_type – A Cartan type
• weight – An element of the weight lattice of type cartan_type

EXAMPLES:

We check by tensoring $$R_{\lambda}$$ with $$B(\infty)$$ results in a component of $$B(\lambda)$$:

sage: B = InfinityCrystalOfTableaux("A2")
sage: R = RCrystal("A2", B.Lambda()[1]+B.Lambda()[2])
sage: T = TensorProductOfCrystals(R, B)
sage: mg = T(R.highest_weight_vector(), B.highest_weight_vector())
sage: S = T.subcrystal(generators=[mg])
sage: for x in S: x.weight()
(2, 1, 0)
(2, 0, 1)
(1, 2, 0)
(1, 1, 1)
(1, 1, 1)
(1, 0, 2)
(0, 2, 1)
(0, 1, 2)
sage: C = CrystalOfTableaux("A2", shape=[2,1])
sage: for x in C: x.weight()
(2, 1, 0)
(1, 2, 0)
(1, 1, 1)
(1, 0, 2)
(0, 1, 2)
(2, 0, 1)
(1, 1, 1)
(0, 2, 1)
sage: GT = T.digraph(subset=S)
sage: GC = C.digraph()
sage: GT.is_isomorphic(GC, edge_labels=True)
True

class Element

Element of a $$R_{\lambda}$$ crystal.

epsilon(i)

Return $$\varepsilon_i$$ of self.

We have $$\varepsilon_i(r_{\lambda}) = -\langle h_i, \lambda \rangle$$ for all $$i$$, where $$h_i$$ is a simple coroot.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: la = RootSystem(['A',2]).weight_lattice().fundamental_weights()
sage: R = RCrystal("A2",la[1])
sage: r = R.highest_weight_vector()
sage: [r.epsilon(i) for i in R.index_set()]
[-1, 0]

phi(i)

Return $$\varphi_i$$ of self, which is $$0$$ for all $$i$$.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: la = RootSystem("C5").weight_lattice().fundamental_weights()
sage: R = RCrystal("C5",la[4]+la[5])
sage: r = R.highest_weight_vector()
sage: [r.phi(i) for i in R.index_set()]
[0, 0, 0, 0, 0]

weight()

Return the weight of self, which is always $$\lambda$$.

EXAMPLES:

sage: ct = CartanType(['C',5])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = TCrystal(ct,la[4]+la[5]-la[1]-la[2])
sage: t = T.highest_weight_vector()
sage: t.weight()
(0, 1, 2, 2, 1)

RCrystal.cardinality()

Return the cardinality of self, which is always $$1$$.

EXAMPLES:

sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights()
sage: R = RCrystal(['C',12],La[9])
sage: R.cardinality()
1

class sage.combinat.crystals.elementary_crystals.TCrystal(cartan_type, weight)

The crystal $$T_{\lambda}$$.

Let $$\lambda$$ be a weight. As defined in [Kashiwara93] the crystal $$T_{\lambda} = \{ t_{\lambda} \}$$ is a single element crystal with the crystal structure defined by

$\mathrm{wt}(t_\lambda) = \lambda, \quad e_i t_{\lambda} = f_i t_{\lambda} = 0, \quad \varepsilon_i(t_{\lambda}) = \varphi_i(t_{\lambda}) = -\infty.$

The crystal $$T_{\lambda}$$ shifts the weights of the vertices in a crystal $$B$$ by $$\lambda$$ when tensored with $$B$$, but leaves the graph structure of $$B$$ unchanged. That is to say, for all $$b \in B$$, we have $$\mathrm{wt}(b \otimes t_{\lambda}) = \mathrm{wt}(b) + \lambda$$.

INPUT:

• cartan_type – A Cartan type
• weight – An element of the weight lattice of type cartan_type

EXAMPLES:

sage: ct = CartanType(['A',2])
sage: C = CrystalOfTableaux(ct, shape=[1])
sage: for x in C: x.weight()
(1, 0, 0)
(0, 1, 0)
(0, 0, 1)
sage: La = RootSystem(ct).ambient_space().fundamental_weights()
sage: TLa = TCrystal(ct, 3*(La[1] + La[2]))
sage: TP = TensorProductOfCrystals(TLa, C)
sage: for x in TP: x.weight()
(7, 3, 0)
(6, 4, 0)
(6, 3, 1)
sage: G = C.digraph()
sage: H = TP.digraph()
sage: G.is_isomorphic(H,edge_labels=True)
True

class Element

Element of a $$T_{\lambda}$$ crystal.

epsilon(i)

Return $$\varepsilon_i$$ of self, which is $$-\infty$$ for all $$i$$.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: ct = CartanType(['C',5])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = TCrystal(ct,la[4]+la[5]-la[1]-la[2])
sage: t = T.highest_weight_vector()
sage: [t.epsilon(i) for i in T.index_set()]
[-inf, -inf, -inf, -inf, -inf]

phi(i)

Return $$\varphi_i$$ of self, which is $$-\infty$$ for all $$i$$.

INPUT:

• i – An element of the index set

EXAMPLES:

sage: ct = CartanType(['C',5])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = TCrystal(ct,la[4]+la[5]-la[1]-la[2])
sage: t = T.highest_weight_vector()
sage: [t.phi(i) for i in T.index_set()]
[-inf, -inf, -inf, -inf, -inf]

weight()

Return the weight of self, which is always $$\lambda$$.

EXAMPLES:

sage: ct = CartanType(['C',5])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = TCrystal(ct,la[4]+la[5]-la[1]-la[2])
sage: t = T.highest_weight_vector()
sage: t.weight()
(0, 1, 2, 2, 1)

TCrystal.cardinality()

Return the cardinality of self, which is always $$1$$.

EXAMPLES:

sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights()
sage: T = TCrystal(['C',12], La[9])
sage: T.cardinality()
1


#### Previous topic

Crystals of letters

#### Next topic

Fast Rank Two Crystals