Elementary Crystals¶
Let be a weight. The crystals
,
,
,
and
are important objects in the tensor category of crystals.
For example, the crystal
is the neutral object in this category; i.e.,
for any crystal
. We list
some other properties of these crystals:
- The crystal
is the crystal of the Verma module with highest weight
, where
is a dominant integral weight.
- Let
be the highest weight vector of
and
be a dominant integral weight. There is an embedding of crystals
sending
which is not strict, but the embedding
by
is a strict embedding.
- For any dominant integral weight
, there is a surjective crystal morphism
. More precisely, if
, then
as crystals.
- For all Cartan types and all weights
, we have
as crystals.
- For each
, there is a strict crystal morphism
defined by
, where
is the highest weight vector of
.
For more information on , 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
¶ Bases:
sage.structure.element.Element
Abstract base class for elements in crystals with a single element.
-
e
(i)¶ Return
of
self
, which isNone
for all.
INPUT:
i
– An element of the index set
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)
-
f
(i)¶ Return
of
self
, which isNone
for all.
INPUT:
i
– An element of the index set
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)
-
-
class
sage.combinat.crystals.elementary_crystals.
ComponentCrystal
(cartan_type)¶ Bases:
sage.structure.parent.Parent
,sage.structure.unique_representation.UniqueRepresentation
The component crystal.
Defined in [Kashiwara93], the component crystal
is the single element crystal whose crystal structure is defined by
Note
, where
is the highest weight crystal of highest weight
.
INPUT:
cartan_type
– A Cartan type
-
class
Element
¶ Bases:
sage.combinat.crystals.elementary_crystals.AbstractSingleCrystalElement
Element of a component crystal.
-
epsilon
(i)¶ Return
of
self
, which isfor all
.
INPUT:
i
– An element of the index set
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]
-
phi
(i)¶ Return
of
self
, which isfor all
.
INPUT:
i
– An element of the index set
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]
-
weight
()¶ Return the weight of
self
, which is always.
EXAMPLES:
sage: C = crystals.elementary.Component("F4") sage: c = C.highest_weight_vector() sage: c.weight() (0, 0, 0, 0)
-
-
ComponentCrystal.
cardinality
()¶ Return the cardinality of
self
, which is always.
EXAMPLES:
sage: C = crystals.elementary.Component("E6") sage: c = C.highest_weight_vector() sage: C.cardinality() 1
-
class
sage.combinat.crystals.elementary_crystals.
ElementaryCrystal
(cartan_type, i)¶ Bases:
sage.structure.parent.Parent
,sage.structure.unique_representation.UniqueRepresentation
The elementary crystal
.
For
an element of the index set of type
, the crystal
of type
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]).
-
class
Element
(parent, m)¶ Bases:
sage.structure.element.Element
Element of a
crystal.
-
e
(i)¶ Return the action of
on
self
.INPUT:
i
– An element of the index set
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)
-
epsilon
(i)¶ Return
of
self
.INPUT:
i
– An element of the index set
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]]
-
f
(i)¶ Return the action of
on
self
.INPUT:
i
– An element of the index set
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)
-
phi
(i)¶ Return
of
self
.INPUT:
i
– An element of the index set
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]]
-
weight
()¶ Return the weight of
self
.EXAMPLES:
sage: B = crystals.elementary.Elementary(['C',14],12) sage: B(-385).weight() -385*alpha[12]
-
-
ElementaryCrystal.
weight_lattice_realization
()¶ Return a realization of the lattice containing the weights of
self
.EXAMPLES:
sage: B = crystals.elementary.Elementary(['A',4, 1], 2) sage: B.weight_lattice_realization() Root lattice of the Root system of type ['A', 4, 1]
-
class
-
class
sage.combinat.crystals.elementary_crystals.
RCrystal
(cartan_type, weight)¶ Bases:
sage.structure.parent.Parent
,sage.structure.unique_representation.UniqueRepresentation
The crystal
.
For a fixed weight
, the crystal
is a single element crystal with the crystal structure defined by
where
are the simple coroots.
Tensoring
with a crystal
results in shifting the weights of the vertices in
by
and may also cut a subset out of the original graph of
. That is,
, where
, provided
. For example, the crystal graph of
is the same as the crystal graph of
generated from the component
.
INPUT:
cartan_type
– A Cartan typeweight
– An element of the weight lattice of typecartan_type
EXAMPLES:
We check by tensoring
with
results in a component of
:
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
-
class
Element
¶ Bases:
sage.combinat.crystals.elementary_crystals.AbstractSingleCrystalElement
Element of a
crystal.
-
epsilon
(i)¶ Return
of
self
.We have
for all
, where
is a simple coroot.
INPUT:
i
– An element of the index set
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]
-
phi
(i)¶ Return
of
self
, which isfor all
.
INPUT:
i
– An element of the index set
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]
-
weight
()¶ Return the weight of
self
, which is always.
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)
-
-
RCrystal.
cardinality
()¶ Return the cardinality of
self
, which is always.
EXAMPLES:
sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights() sage: R = crystals.elementary.R(['C',12],La[9]) sage: R.cardinality() 1
-
RCrystal.
weight_lattice_realization
()¶ Return a realization of the lattice containing the weights of
self
.EXAMPLES:
sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights() sage: R = crystals.elementary.R(['C',12], La[9]) sage: R.weight_lattice_realization() Ambient space of the Root system of type ['C', 12] sage: ct = CartanMatrix([[2, -4], [-5, 2]]) sage: La = RootSystem(ct).weight_lattice().fundamental_weights() sage: R = crystals.elementary.R(ct, La[1]) sage: R.weight_lattice_realization() Weight space over the Rational Field of the Root system of type [ 2 -4] [-5 2]
-
class
sage.combinat.crystals.elementary_crystals.
TCrystal
(cartan_type, weight)¶ Bases:
sage.structure.parent.Parent
,sage.structure.unique_representation.UniqueRepresentation
The crystal
.
Let
be a weight. As defined in [Kashiwara93] the crystal
is a single element crystal with the crystal structure defined by
The crystal
shifts the weights of the vertices in a crystal
by
when tensored with
, but leaves the graph structure of
unchanged. That is to say, for all
, we have
.
INPUT:
cartan_type
– A Cartan typeweight
– An element of the weight lattice of typecartan_type
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
-
class
Element
¶ Bases:
sage.combinat.crystals.elementary_crystals.AbstractSingleCrystalElement
Element of a
crystal.
-
epsilon
(i)¶ Return
of
self
, which isfor all
.
INPUT:
i
– An element of the index set
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]
-
phi
(i)¶ Return
of
self
, which isfor all
.
INPUT:
i
– An element of the index set
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]
-
weight
()¶ Return the weight of
self
, which is always.
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)
-
-
TCrystal.
cardinality
()¶ Return the cardinality of
self
, which is always.
EXAMPLES:
sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights() sage: T = crystals.elementary.T(['C',12], La[9]) sage: T.cardinality() 1
-
TCrystal.
weight_lattice_realization
()¶ Return a realization of the lattice containing the weights of
self
.EXAMPLES:
sage: La = RootSystem(['C',12]).weight_lattice().fundamental_weights() sage: T = crystals.elementary.T(['C',12], La[9]) sage: T.weight_lattice_realization() Ambient space of the Root system of type ['C', 12] sage: ct = CartanMatrix([[2, -4], [-5, 2]]) sage: La = RootSystem(ct).weight_lattice().fundamental_weights() sage: T = crystals.elementary.T(ct, La[1]) sage: T.weight_lattice_realization() Weight space over the Rational Field of the Root system of type [ 2 -4] [-5 2]