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:
For more information on \(B(\infty)\), see InfinityCrystalOfTableaux.
Note
As with TensorProductOfCrystals, we are using the opposite of Kashiwara’s convention.
AUTHORS:
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. |
Bases: sage.structure.element.Element
Abstract base class for elements in crystals with a single element.
Return \(e_i\) of self, which is None for all \(i\).
INPUT:
EXAMPLES:
sage: ct = CartanType(['A',2])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = crystals.elementary.T(ct,la[1])
sage: t = T.highest_weight_vector()
sage: t.e(1)
sage: t.e(2)
Return \(f_i\) of self, which is None for all \(i\).
INPUT:
EXAMPLES:
sage: ct = CartanType(['A',2])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = crystals.elementary.T(ct,la[1])
sage: t = T.highest_weight_vector()
sage: t.f(1)
sage: t.f(2)
Bases: sage.structure.parent.Parent, sage.structure.unique_representation.UniqueRepresentation
The component crystal.
Defined in [Kashiwara93], the component crystal \(C = \{c\}\) is the single element crystal whose crystal structure is defined by
Note \(C \cong B(0)\), where \(B(0)\) is the highest weight crystal of highest weight \(0\).
INPUT:
Bases: sage.combinat.crystals.elementary_crystals.AbstractSingleCrystalElement
Element of a component crystal.
Return \(\varepsilon_i\) of self, which is \(0\) for all \(i\).
INPUT:
EXAMPLES:
sage: C = crystals.elementary.Component("C5")
sage: c = C.highest_weight_vector()
sage: [c.epsilon(i) for i in C.index_set()]
[0, 0, 0, 0, 0]
Return \(\varphi_i\) of self, which is \(0\) for all \(i\).
INPUT:
EXAMPLES:
sage: C = crystals.elementary.Component("C5")
sage: c = C.highest_weight_vector()
sage: [c.phi(i) for i in C.index_set()]
[0, 0, 0, 0, 0]
Return the weight of self, which is always \(0\).
EXAMPLES:
sage: C = crystals.elementary.Component("F4")
sage: c = C.highest_weight_vector()
sage: c.weight()
(0, 0, 0, 0)
Return the cardinality of self, which is always \(1\).
EXAMPLES:
sage: C = crystals.elementary.Component("E6")
sage: c = C.highest_weight_vector()
sage: C.cardinality()
1
Bases: sage.structure.parent.Parent, sage.structure.unique_representation.UniqueRepresentation
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
where the crystal stucture is given by
The Kashiwara embedding theorem asserts there is a unique strict crystal embedding of crystals
satisfying certain properties (see [Kashiwara93]). The above embedding may be iterated to obtain a new embedding
which is a foundational object in the study of polyhedral realizations of crystals (see, for example, [NZ97]).
Bases: sage.structure.element.Element
Element of a \(B_i\) crystal.
Return the action of \(e_i\) on self.
INPUT:
EXAMPLES:
sage: B = crystals.elementary.Elementary(['E',7],1)
sage: B(3).e(1)
4
sage: B(172).e_string([1]*171)
343
sage: B(0).e(2)
Return \(\varepsilon_i\) of self.
INPUT:
EXAMPLES:
sage: B = crystals.elementary.Elementary(['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]]
Return the action of \(f_i\) on self.
INPUT:
EXAMPLES:
sage: B = crystals.elementary.Elementary(['E',7],1)
sage: B(3).f(1)
2
sage: B(172).f_string([1]*171)
1
sage: B(0).e(2)
Return \(\varphi_i\) of self.
INPUT:
EXAMPLES:
sage: B = crystals.elementary.Elementary(['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]]
Return the weight of self.
EXAMPLES:
sage: B = crystals.elementary.Elementary(['C',14],12)
sage: B(-385).weight()
-385*alpha[12]
Bases: sage.structure.parent.Parent, sage.structure.unique_representation.UniqueRepresentation
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
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:
EXAMPLES:
We check by tensoring \(R_{\lambda}\) with \(B(\infty)\) results in a component of \(B(\lambda)\):
sage: B = crystals.infinity.Tableaux("A2")
sage: R = crystals.elementary.R("A2", B.Lambda()[1]+B.Lambda()[2])
sage: T = crystals.TensorProduct(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 = crystals.Tableaux("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
Bases: sage.combinat.crystals.elementary_crystals.AbstractSingleCrystalElement
Element of a \(R_{\lambda}\) crystal.
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:
EXAMPLES:
sage: la = RootSystem(['A',2]).weight_lattice().fundamental_weights()
sage: R = crystals.elementary.R("A2",la[1])
sage: r = R.highest_weight_vector()
sage: [r.epsilon(i) for i in R.index_set()]
[-1, 0]
Return \(\varphi_i\) of self, which is \(0\) for all \(i\).
INPUT:
EXAMPLES:
sage: la = RootSystem("C5").weight_lattice().fundamental_weights()
sage: R = crystals.elementary.R("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]
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 = crystals.elementary.T(ct,la[4]+la[5]-la[1]-la[2])
sage: t = T.highest_weight_vector()
sage: t.weight()
(0, 1, 2, 2, 1)
Return the cardinality of self, which is always \(1\).
EXAMPLES:
sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights()
sage: R = crystals.elementary.R(['C',12],La[9])
sage: R.cardinality()
1
Bases: sage.structure.parent.Parent, sage.structure.unique_representation.UniqueRepresentation
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
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:
EXAMPLES:
sage: ct = CartanType(['A',2])
sage: C = crystals.Tableaux(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 = crystals.elementary.T(ct, 3*(La[1] + La[2]))
sage: TP = crystals.TensorProduct(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
Bases: sage.combinat.crystals.elementary_crystals.AbstractSingleCrystalElement
Element of a \(T_{\lambda}\) crystal.
Return \(\varepsilon_i\) of self, which is \(-\infty\) for all \(i\).
INPUT:
EXAMPLES:
sage: ct = CartanType(['C',5])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = crystals.elementary.T(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]
Return \(\varphi_i\) of self, which is \(-\infty\) for all \(i\).
INPUT:
EXAMPLES:
sage: ct = CartanType(['C',5])
sage: la = RootSystem(ct).weight_lattice().fundamental_weights()
sage: T = crystals.elementary.T(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]
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 = crystals.elementary.T(ct,la[4]+la[5]-la[1]-la[2])
sage: t = T.highest_weight_vector()
sage: t.weight()
(0, 1, 2, 2, 1)
Return the cardinality of self, which is always \(1\).
EXAMPLES:
sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights()
sage: T = crystals.elementary.T(['C',12], La[9])
sage: T.cardinality()
1