Kirillov-Reshetikhin Crystals¶
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_A
(cartan_type, r, s)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystalFromPromotion
Class of Kirillov-Reshetikhin crystals of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: b = K(rows=[[1,2],[2,4]]) sage: b.f(0) [[1, 1], [2, 2]]
-
classical_decomposition
()¶ Specifies the classical crystal underlying the KR crystal of type A.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.classical_decomposition() The crystal of tableaux of type ['A', 3] and shape(s) [[2, 2]]
-
dynkin_diagram_automorphism
(i)¶ Specifies the Dynkin diagram automorphism underlying the promotion action on the crystal elements. The automorphism needs to map node 0 to some other Dynkin node.
For type A we use the Dynkin diagram automorphism which maps i to i+1 mod n+1, where n is the rank.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.dynkin_diagram_automorphism(0) 1 sage: K.dynkin_diagram_automorphism(3) 0
-
promotion
()¶ Specifies the promotion operator used to construct the affine type A crystal. For type A this corresponds to the Dynkin diagram automorphism which maps i to i+1 mod n+1, where n is the rank.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: b = K.classical_decomposition()(rows=[[1,2],[3,4]]) sage: K.promotion()(b) [[1, 3], [2, 4]]
-
promotion_inverse
()¶ Specifies the inverse promotion operator used to construct the affine type A crystal. For type A this corresponds to the Dynkin diagram automorphism which maps i to i-1 mod n+1, where n is the rank.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: b = K.classical_decomposition()(rows=[[1,3],[2,4]]) sage: K.promotion_inverse()(b) [[1, 2], [3, 4]] sage: b = K.classical_decomposition()(rows=[[1,2],[3,3]]) sage: K.promotion_inverse()(K.promotion()(b)) [[1, 2], [3, 3]]
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_A2
(cartan_type, r, s, dual=None)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
Class of Kirillov-Reshetikhin crystals
of type
for
in the realization with classical subalgebra
. The Cartan type in this case is inputted as the dual of
.
This is an alternative implementation to
KR_type_box
which uses the classical decomposition into typecrystals.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 1) sage: K Kirillov-Reshetikhin crystal of type ['BC', 2, 2]^* with (r,s)=(1,1) sage: b = K(rows=[[-1]]) sage: b.f(0) [[1]] sage: b.e(0)
We can now check whether the two KR crystals of type
(namely the KR crystal and its dual construction) are isomorphic up to relabelling of the edges:
sage: C = CartanType(['A',4,2]) sage: K = crystals.KirillovReshetikhin(C,1,1) sage: Kdual = crystals.KirillovReshetikhin(C.dual(),1,1) sage: G = K.digraph() sage: Gdual = Kdual.digraph() sage: f = {0:2, 1:1, 2:0} sage: Gnew = DiGraph(); Gnew.add_vertices(Gdual.vertices()); Gnew.add_edges([(u,v,f[i]) for (u,v,i) in Gdual.edges()]) sage: G.is_isomorphic(Gnew, edge_labels = True) True
-
Element
¶ alias of
KR_type_A2Element
-
ambient_crystal
()¶ Returns the ambient crystal
of type
associated to the Kirillov-Reshetikhin crystal of type
dual. This ambient crystal is used to construct the zero arrows.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 2, 3) sage: K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['B', 3, 1] with (r,s)=(2,3)
-
ambient_dict_pm_diagrams
()¶ Gives a dictionary of all self-dual
diagrams for the ambient crystal. Their key is their inner shape.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 1) sage: K.ambient_dict_pm_diagrams() {[1]: [[0, 0], [1]]} sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 2) sage: K.ambient_dict_pm_diagrams() {[]: [[1, 1], [0]], [2]: [[0, 0], [2]]} sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 2, 2) sage: K.ambient_dict_pm_diagrams() {[]: [[1, 1], [0, 0], [0]], [2]: [[0, 0], [1, 1], [0]], [2, 2]: [[0, 0], [0, 0], [2]]}
-
ambient_highest_weight_dict
()¶ Gives a dictionary of all
-highest weight vectors in the ambient crystal. Their key is the inner shape of their corresponding
diagram, or equivalently, their
weight.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 2) sage: K.ambient_highest_weight_dict() {[]: [[1, -1]], [2]: [[2, 2]]}
-
classical_decomposition
()¶ Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal of type
with
as classical subdiagram.
It is given by
where
is a highest weight crystal of type
of highest weight
. The sum is over all weights
obtained from a rectangle of width
and height
by removing horizontal dominoes. Here we identify the fundamental weight
with a column of height
.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 2, 2) sage: K.classical_decomposition() The crystal of tableaux of type ['B', 2] and shape(s) [[], [2], [2, 2]]
-
from_ambient_crystal
()¶ Provides a map from the ambient crystal of type
to the Kirillov-Reshetikhin crystal of type
.
Note that this map is only well-defined on type
elements that are in the image under
to_ambient_crystal()
.EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 2) sage: b = K.ambient_crystal()(rows=[[2,2]]) sage: K.from_ambient_crystal()(b) [[1, 1]]
-
highest_weight_dict
()¶ Gives a dictionary of the classical highest weight vectors of self. Their key is their shape.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 2) sage: K.highest_weight_dict() {[]: [], [2]: [[1, 1]]}
-
to_ambient_crystal
()¶ Provides a map from the Kirillov-Reshetikhin crystal of type
to the ambient crystal of type
.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 2) sage: b=K(rows=[[1,1]]) sage: K.to_ambient_crystal()(b) [[2, 2]] sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 2, 2) sage: b=K(rows=[[1,1]]) sage: K.to_ambient_crystal()(b) [[1, 2], [2, -1]] sage: K.to_ambient_crystal()(b).parent() Kirillov-Reshetikhin crystal of type ['B', 3, 1] with (r,s)=(2,2)
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_A2Element
¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
Class for the elements in the Kirillov-Reshetikhin crystals
of type
for
with underlying classcial algebra
.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 2) sage: type(K.module_generators[0]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2_with_category.element_class'>
-
e0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 1) sage: b = K(rows=[[1]]) sage: b.e(0) # indirect doctest [[-1]]
-
epsilon0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculating\varepsilon_1
there.EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 1) sage: b=K(rows=[[1]]) sage: b.epsilon(0) # indirect doctest 1
-
f0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 1) sage: b = K(rows=[[-1]]) sage: b.f(0) # indirect doctest [[1]]
-
phi0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculatingthere.
EXAMPLES:
sage: C = CartanType(['A',4,2]).dual() sage: K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, 1, 1) sage: b=K(rows=[[-1]]) sage: b.phi(0) # indirect doctest 1
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_Bn
(cartan_type, r, s, dual=None)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
Class of Kirillov-Reshetikhin crystals
of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1],3,2) sage: K Kirillov-Reshetikhin crystal of type ['B', 3, 1] with (r,s)=(3,2) sage: b = K(rows=[[1],[2],[3]]) sage: b.f(0) sage: b.e(0) [[3]] sage: K = crystals.KirillovReshetikhin(['B',3,1],3,2) sage: [b.weight() for b in K if b.is_highest_weight([1,2,3])] [-Lambda[0] + Lambda[1], -2*Lambda[0] + 2*Lambda[3]] sage: [b.weight() for b in K if b.is_highest_weight([0,2,3])] [Lambda[0] - Lambda[1], -2*Lambda[1] + 2*Lambda[3]]
-
Element
¶ alias of
KR_type_BnElement
-
ambient_crystal
()¶ Returns the ambient crystal
of type
associated to the Kirillov-Reshetikhin crystal; see Lemma 4.2 of reference [4]. This ambient crystal is used to construct the zero arrows.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1],3,2) sage: K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['B', 3, 1]^* with (r,s)=(3,2)
-
ambient_highest_weight_dict
()¶ Gives a dictionary of the classical highest weight vectors of the ambient crystal of self. Their key is their shape.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1],3,2) sage: K.ambient_highest_weight_dict() {(2,): [[1, 1]], (2, 1, 1): [[1, 1], [2], [3]], (2, 2, 2): [[1, 1], [2, 2], [3, 3]]} sage: K = crystals.KirillovReshetikhin(['B',3,1],3,3) sage: K.ambient_highest_weight_dict() {(3,): [[1, 1, 1]], (3, 1, 1): [[1, 1, 1], [2], [3]], (3, 2, 2): [[1, 1, 1], [2, 2], [3, 3]], (3, 3, 3): [[1, 1, 1], [2, 2, 2], [3, 3, 3]]}
-
classical_decomposition
()¶ Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal
of type
.
It is the same as for
, given by
where
are weights obtained from a rectangle of width
and height
by removing horizontal dominoes. Here we identify the fundamental weight
with a column of height
for
and a column of width
for
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1], 3, 2) sage: K.classical_decomposition() The crystal of tableaux of type ['B', 3] and shape(s) [[1], [1, 1, 1]] sage: K = crystals.KirillovReshetikhin(['B',3,1], 3, 3) sage: K.classical_decomposition() The crystal of tableaux of type ['B', 3] and shape(s) [[3/2, 1/2, 1/2], [3/2, 3/2, 3/2]]
-
from_ambient_crystal
()¶ Provides a map from the ambient crystal of type
to the Kirillov-Reshetikhin crystal
self
.Note that this map is only well-defined on elements that are in the image under
to_ambient_crystal()
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1],3,1) sage: [b == K.from_ambient_crystal()(K.to_ambient_crystal()(b)) for b in K] [True, True, True, True, True, True, True, True] sage: b = K.ambient_crystal()(rows=[[1],[2],[-3]]) sage: K.from_ambient_crystal()(b) [++-, []]
-
highest_weight_dict
()¶ Gives a dictionary of the classical highest weight vectors of self. Their key is 2 times their shape.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1],3,2) sage: K.highest_weight_dict() {(2,): [[1]], (2, 2, 2): [[1], [2], [3]]} sage: K = crystals.KirillovReshetikhin(['B',3,1],3,3) sage: K.highest_weight_dict() {(3, 1, 1): [+++, [[1]]], (3, 3, 3): [+++, [[1], [2], [3]]]}
-
similarity_factor
()¶ Sets the similarity factor used to map to the ambient crystal.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1],3,2) sage: K.similarity_factor() {1: 2, 2: 2, 3: 1}
-
to_ambient_crystal
()¶ Provides a map from self to the ambient crystal of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['B',3,1],3,1) sage: [K.to_ambient_crystal()(b) for b in K] [[[1], [2], [3]], [[1], [2], [-3]], [[1], [3], [-2]], [[2], [3], [-1]], [[1], [-3], [-2]], [[2], [-3], [-1]], [[3], [-2], [-1]], [[-3], [-2], [-1]]]
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_BnElement
¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
Class for the elements in the Kirillov-Reshetikhin crystals
of type
.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['B',3,1],3,2) sage: type(K.module_generators[0]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_Bn_with_category.element_class'>
-
e0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['B',3,1],3,1) sage: b = K.module_generators[0] sage: b.e(0) # indirect doctest [--+, []]
-
epsilon0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculatingthere.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['B',3,1],3,1) sage: b = K.module_generators[0] sage: b.epsilon(0) # indirect doctest 1
-
f0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['B',3,1],3,1) sage: b = K.module_generators[0] sage: b.f(0) # indirect doctest
-
phi0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculatingthere.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['B',3,1],3,1) sage: b = K.module_generators[0] sage: b.phi(0) # indirect doctest 0
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_C
(cartan_type, r, s, dual=None)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
Class of Kirillov-Reshetikhin crystals
of type
for
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',2,1], 1,2) sage: K Kirillov-Reshetikhin crystal of type ['C', 2, 1] with (r,s)=(1,2) sage: b = K(rows=[]) sage: b.f(0) [[1, 1]] sage: b.e(0) [[-1, -1]]
-
Element
¶ alias of
KR_type_CElement
-
ambient_crystal
()¶ Returns the ambient crystal
of type
associated to the Kirillov-Reshetikhin crystal of type
. This ambient crystal is used to construct the zero arrows.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,3) sage: K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['B', 4, 1]^* with (r,s)=(2,3)
-
ambient_dict_pm_diagrams
()¶ Gives a dictionary of all self-dual
diagrams for the ambient crystal. Their key is their inner shape.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',2,1], 1,2) sage: K.ambient_dict_pm_diagrams() {[]: [[1, 1], [0]], [2]: [[0, 0], [2]]} sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,2) sage: K.ambient_dict_pm_diagrams() {[]: [[1, 1], [0, 0], [0]], [2]: [[0, 0], [1, 1], [0]], [2, 2]: [[0, 0], [0, 0], [2]]} sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,3) sage: K.ambient_dict_pm_diagrams() {[1, 1]: [[1, 1], [0, 0], [1]], [3, 1]: [[0, 0], [1, 1], [1]], [3, 3]: [[0, 0], [0, 0], [3]]}
-
ambient_highest_weight_dict
()¶ Gives a dictionary of all
-highest weight vectors in the ambient crystal. Their key is the inner shape of their corresponding
diagram, or equivalently, their
weight.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,2) sage: K.ambient_highest_weight_dict() {[]: [[2], [-2]], [2]: [[1, 2], [2, -1]], [2, 2]: [[2, 2], [3, 3]]}
-
classical_decomposition
()¶ Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal of type
.
It is given by
where
are weights obtained from a rectangle of width
and height
by removing horizontal dominoes. Here we identify the fundamental weight
with a column of height
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,2) sage: K.classical_decomposition() The crystal of tableaux of type ['C', 3] and shape(s) [[], [2], [2, 2]]
-
from_ambient_crystal
()¶ Provides a map from the ambient crystal of type
to the Kirillov-Reshetikhin crystal of type
.
Note that this map is only well-defined on type
elements that are in the image under
to_ambient_crystal()
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,2) sage: b=K.ambient_crystal()(rows=[[2,2],[3,3]]) sage: K.from_ambient_crystal()(b) [[1, 1], [2, 2]]
-
highest_weight_dict
()¶ Gives a dictionary of the classical highest weight vectors of self. Their key is their shape.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,2) sage: K.highest_weight_dict() {[]: [], [2]: [[1, 1]], [2, 2]: [[1, 1], [2, 2]]}
-
to_ambient_crystal
()¶ Provides a map from the Kirillov-Reshetikhin crystal of type
to the ambient crystal of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1], 2,2) sage: b=K(rows=[[1,1]]) sage: K.to_ambient_crystal()(b) [[1, 2], [2, -1]] sage: b=K(rows=[]) sage: K.to_ambient_crystal()(b) [[2], [-2]] sage: K.to_ambient_crystal()(b).parent() Kirillov-Reshetikhin crystal of type ['B', 4, 1]^* with (r,s)=(2,2)
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_CElement
¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
Class for the elements in the Kirillov-Reshetikhin crystals
of type
for
.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],1,2) sage: type(K.module_generators[0]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_C_with_category.element_class'>
-
e0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],1,2) sage: b = K(rows=[]) sage: b.e(0) # indirect doctest [[-1, -1]]
-
epsilon0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculatingthere.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',2,1], 1,2) sage: b=K(rows=[[1,1]]) sage: b.epsilon(0) # indirect doctest 2
-
f0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],1,2) sage: b = K(rows=[]) sage: b.f(0) # indirect doctest [[1, 1]]
-
phi0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculatingthere.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',2,1], 1,2) sage: b=K(rows=[[-1,-1]]) sage: b.phi(0) # indirect doctest 2
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_Cn
(cartan_type, r, s, dual=None)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
Class of Kirillov-Reshetikhin crystals
of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1],3,1) sage: [[b,b.f(0)] for b in K] [[[[1], [2], [3]], None], [[[1], [2], [-3]], None], [[[1], [3], [-3]], None], [[[2], [3], [-3]], None], [[[1], [3], [-2]], None], [[[2], [3], [-2]], None], [[[2], [3], [-1]], [[1], [2], [3]]], [[[1], [-3], [-2]], None], [[[2], [-3], [-2]], None], [[[2], [-3], [-1]], [[1], [2], [-3]]], [[[3], [-3], [-2]], None], [[[3], [-3], [-1]], [[1], [3], [-3]]], [[[3], [-2], [-1]], [[1], [3], [-2]]], [[[-3], [-2], [-1]], [[1], [-3], [-2]]]]
-
Element
¶ alias of
KR_type_CnElement
-
classical_decomposition
()¶ Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal
of type
. It is given by
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1],3,2) sage: K.classical_decomposition() The crystal of tableaux of type ['C', 3] and shape(s) [[2, 2, 2]]
-
from_highest_weight_vector_to_pm_diagram
(b)¶ This gives the bijection between an element b in the classical decomposition of the KR crystal that is
-highest weight and
diagrams.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1],3,2) sage: T = K.classical_decomposition() sage: b = T(rows=[[2, 2], [3, 3], [-3, -1]]) sage: pm = K.from_highest_weight_vector_to_pm_diagram(b); pm [[0, 0], [1, 0], [0, 1], [0]] sage: pm.pp() . . . + - - sage: hw = [ b for b in T if all(b.epsilon(i)==0 for i in [2,3]) ] sage: all(K.from_pm_diagram_to_highest_weight_vector(K.from_highest_weight_vector_to_pm_diagram(b)) == b for b in hw) True
-
from_pm_diagram_to_highest_weight_vector
(pm)¶ This gives the bijection between a
diagram and an element b in the classical decomposition of the KR crystal that is {2,3,..,n}-highest weight.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',3,1],3,2) sage: pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[0, 0], [1, 0], [0, 1], [0]]) sage: K.from_pm_diagram_to_highest_weight_vector(pm) [[2, 2], [3, 3], [-3, -1]]
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_CnElement
¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
Class for the elements in the Kirillov-Reshetikhin crystals
of type
.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],3,2) sage: type(K.module_generators[0]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_Cn_with_category.element_class'>
-
e0
()¶ Gives
on self by going to the
-diagram corresponding to the
-highest weight vector in the component of
, then applying [Definition 6.1, 4], and pulling back from
-diagrams.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],3,2) sage: b = K.module_generators[0] sage: b.e(0) # indirect doctest [[1, 2], [2, 3], [3, -1]] sage: b = K(rows=[[1,2],[2,3],[3,-1]]) sage: b.e(0) [[2, 2], [3, 3], [-1, -1]] sage: b=K(rows=[[1, -3], [3, -2], [-3, -1]]) sage: b.e(0) [[3, -3], [-3, -2], [-1, -1]]
-
epsilon0
()¶ Calculate
of
self
using Lemma 6.1 of [4].EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],3,1) sage: b = K.module_generators[0] sage: b.epsilon(0) # indirect doctest 1
-
f0
()¶ Gives
on self by going to the
-diagram corresponding to the
-highest weight vector in the component of
, then applying [Definition 6.1, 4], and pulling back from
-diagrams.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],3,1) sage: b = K.module_generators[0] sage: b.f(0) # indirect doctest
-
phi0
()¶ Calculate
of
self
.EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['C',3,1],3,1) sage: b = K.module_generators[0] sage: b.phi(0) # indirect doctest 0
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_D_tri1
(ct, s)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
Class of Kirillov-Reshetikhin crystals
of type
.
The crystal structure was defined in Section 4 of [KMOY07] using the coordinate representation.
REFERENCES:
[KMOY07] M. Kashiwara, K. C. Misra, M. Okado, D. Yamada. Perfect crystals for , J. Algebra. 317 (2007).
-
class
Element
¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
-
coordinates
()¶ Return
self
as coordinates.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1, 3) sage: all(K.from_coordinates(x.coordinates()) == x for x in K) True
-
e0
()¶ Return the action of
on
self
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1,1) sage: [x.e0() for x in K] [[[-1]], [], [[-3]], [[-2]], None, None, None, None]
-
epsilon0
()¶ Return
of
self
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1, 5) sage: [mg.epsilon0() for mg in K.module_generators] [5, 6, 7, 8, 9, 10]
-
f0
()¶ Return the action of
on
self
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1,1) sage: [x.f0() for x in K] [[[1]], None, None, None, None, [[2]], [[3]], []]
-
phi0
()¶ Return
of
self
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1, 5) sage: [mg.phi0() for mg in K.module_generators] [5, 4, 3, 2, 1, 0]
-
-
KR_type_D_tri1.
classical_decomposition
()¶ Return the classical decomposition of
self
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1, 5) sage: K.classical_decomposition() The crystal of tableaux of type ['G', 2] and shape(s) [[], [1], [2], [3], [4], [5]]
-
KR_type_D_tri1.
from_coordinates
(coords)¶ Return an element of
self
from the coordinatescoords
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1, 5) sage: K.from_coordinates((0, 2, 3, 1, 0, 1)) [[2, 2, 3, 0, -1]]
-
class
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_Dn_twisted
(cartan_type, r, s, dual=None)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
Class of Kirillov-Reshetikhin crystals
of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,2],3,1) sage: [[b,b.f(0)] for b in K] [[[+++, []], None], [[++-, []], None], [[+-+, []], None], [[-++, []], [+++, []]], [[+--, []], None], [[-+-, []], [++-, []]], [[--+, []], [+-+, []]], [[---, []], [+--, []]]]
-
Element
¶ alias of
KR_type_Dn_twistedElement
-
classical_decomposition
()¶ Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal
of type
. It is given by
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,2],3,1) sage: K.classical_decomposition() The crystal of tableaux of type ['B', 3] and shape(s) [[1/2, 1/2, 1/2]] sage: K = crystals.KirillovReshetikhin(['D',4,2],3,2) sage: K.classical_decomposition() The crystal of tableaux of type ['B', 3] and shape(s) [[1, 1, 1]]
-
from_highest_weight_vector_to_pm_diagram
(b)¶ This gives the bijection between an element b in the classical decomposition of the KR crystal that is
-highest weight and
diagrams.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,2],3,1) sage: T = K.classical_decomposition() sage: hw = [ b for b in T if all(b.epsilon(i)==0 for i in [2,3]) ] sage: [K.from_highest_weight_vector_to_pm_diagram(b) for b in hw] [[[0, 0], [0, 0], [1, 0], [0]], [[0, 0], [0, 0], [0, 1], [0]]] sage: K = crystals.KirillovReshetikhin(['D',4,2],3,2) sage: T = K.classical_decomposition() sage: hw = [ b for b in T if all(b.epsilon(i)==0 for i in [2,3]) ] sage: [K.from_highest_weight_vector_to_pm_diagram(b) for b in hw] [[[0, 0], [0, 0], [2, 0], [0]], [[0, 0], [0, 0], [0, 0], [2]], [[0, 0], [2, 0], [0, 0], [0]], [[0, 0], [0, 0], [0, 2], [0]]]
Note that, since the classical decomposition of this crystal is of type
, there can be (at most one) entry
in the
-highest weight elements at height
. In the following implementation this is realized as an empty column of height
since this uniquely specifies the existence of the
:
EXAMPLES:
sage: b = hw[1] sage: pm = K.from_highest_weight_vector_to_pm_diagram(b) sage: pm.pp() . . . . . .
TESTS:
sage: all(K.from_pm_diagram_to_highest_weight_vector(K.from_highest_weight_vector_to_pm_diagram(b)) == b for b in hw) True sage: K = crystals.KirillovReshetikhin(['D',4,2],3,2) sage: T = K.classical_decomposition() sage: hw = [ b for b in T if all(b.epsilon(i)==0 for i in [2,3]) ] sage: all(K.from_pm_diagram_to_highest_weight_vector(K.from_highest_weight_vector_to_pm_diagram(b)) == b for b in hw) True sage: K = crystals.KirillovReshetikhin(['D',4,2],3,3) sage: T = K.classical_decomposition() sage: hw = [ b for b in T if all(b.epsilon(i)==0 for i in [2,3]) ] sage: all(K.from_pm_diagram_to_highest_weight_vector(K.from_highest_weight_vector_to_pm_diagram(b)) == b for b in hw) True
-
from_pm_diagram_to_highest_weight_vector
(pm)¶ This gives the bijection between a
diagram and an element b in the classical decomposition of the KR crystal that is {2,3,..,n}-highest weight.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,2],3,2) sage: pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[0, 0], [0, 0], [0, 0], [2]]) sage: K.from_pm_diagram_to_highest_weight_vector(pm) [[2], [3], [0]]
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_Dn_twistedElement
¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
Class for the elements in the Kirillov-Reshetikhin crystals
of type
.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['D',4,2],3,2) sage: type(K.module_generators[0]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_Dn_twisted_with_category.element_class'>
-
e0
()¶ Gives
on self by going to the
-diagram corresponding to the
-highest weight vector in the component of
, then applying [Definition 6.2, 4], and pulling back from
-diagrams.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['D',4,2],3,3) sage: b = K.module_generators[0] sage: b.e(0) # indirect doctest [+++, [[2], [3], [0]]]
-
epsilon0
()¶ Calculate
of
self
using Lemma 6.2 of [4].EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['D',4,2],3,1) sage: b = K.module_generators[0] sage: b.epsilon(0) # indirect doctest 1
-
f0
()¶ Gives
on self by going to the
-diagram corresponding to the
-highest weight vector in the component of
, then applying [Definition 6.2, 4], and pulling back from
-diagrams.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['D',4,2],3,2) sage: b = K.module_generators[0] sage: b.f(0) # indirect doctest
-
phi0
()¶ Calculate
of
self
.EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['D',4,2],3,1) sage: b = K.module_generators[0] sage: b.phi(0) # indirect doctest 0
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_E6
(cartan_type, r, s)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystalFromPromotion
Class of Kirillov-Reshetikhin crystals of type
for
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: K.module_generator().e(0) [] sage: K.module_generator().e(0).f(0) [[(2, -1), (1,)]] sage: K = crystals.KirillovReshetikhin(['E',6,1], 1,1) sage: b = K.module_generator() sage: b [(1,)] sage: b.e(0) [(-2, 1)] sage: b = [t for t in K if t.epsilon(1) == 1 and t.phi(3) == 1 and t.phi(2) == 0 and t.epsilon(2) == 0][0] sage: b [(-1, 3)] sage: b.e(0) [(-1, -2, 3)]
The elements of the Kirillov-Reshetikhin crystals can be constructed from a classical crystal element using
retract()
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: La = K.cartan_type().classical().root_system().weight_lattice().fundamental_weights() sage: H = crystals.HighestWeight(La[2]) sage: t = H.module_generator() sage: t [[(2, -1), (1,)]] sage: type(K.retract(t)) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_E6_with_category.element_class'> sage: K.retract(t).e(0) []
TESTS:
sage: K = crystals.KirillovReshetikhin(['E',6,1], 2,1) sage: La = K.weight_lattice_realization().fundamental_weights() sage: all(b.weight() == sum( (K.affine_weight(b.lift())[i] * La[i] for i in K.index_set()), 0*La[0]) for b in K) # long time (26s on sage.math, 2011) True
-
affine_weight
(b)¶ Returns the affine level zero weight corresponding to the element b of the classical crystal underlying self. For the coefficients to calculate the level, see Kac pg. 48.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: [K.affine_weight(x.lift()) for x in K if all(x.epsilon(i) == 0 for i in [2,3,4,5])] [(0, 0, 0, 0, 0, 0, 0), (-2, 0, 1, 0, 0, 0, 0), (-1, -1, 0, 0, 0, 1, 0), (0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0, 1, -2), (0, -1, 1, 0, 0, 0, -1), (-1, 0, 0, 1, 0, 0, -1), (-1, -1, 0, 0, 1, 0, -1), (0, 0, 0, 0, 0, 0, 0), (0, -2, 0, 1, 0, 0, 0)]
-
automorphism_on_affine_weight
(weight)¶ Acts with the Dynkin diagram automorphism on affine weights as outputted by the affine_weight method.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: [[x[0], K.automorphism_on_affine_weight(x[0])] for x in K.highest_weight_dict().values()] [[(0, 0, 0, 0, 0, 1, -2), (-2, 0, 1, 0, 0, 0, 0)], [(-1, 0, 0, 1, 0, 0, -1), (-1, -1, 0, 0, 0, 1, 0)], [(0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 0)], [(-2, 0, 1, 0, 0, 0, 0), (0, -2, 0, 1, 0, 0, 0)], [(0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 0)]]
-
classical_decomposition
()¶ Specifies the classical crystal underlying the KR crystal of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1], 2,2) sage: K.classical_decomposition() Direct sum of the crystals Family (Finite dimensional highest weight crystal of type ['E', 6] and highest weight 0, Finite dimensional highest weight crystal of type ['E', 6] and highest weight Lambda[2], Finite dimensional highest weight crystal of type ['E', 6] and highest weight 2*Lambda[2]) sage: K = crystals.KirillovReshetikhin(['E',6,1], 1,2) sage: K.classical_decomposition() Direct sum of the crystals Family (Finite dimensional highest weight crystal of type ['E', 6] and highest weight 2*Lambda[1],)
-
dynkin_diagram_automorphism
(i)¶ Specifies the Dynkin diagram automorphism underlying the promotion action on the crystal elements. The automorphism needs to map node 0 to some other Dynkin node.
Here we use the Dynkin diagram automorphism of order 3 which maps node 0 to node 1.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: [K.dynkin_diagram_automorphism(i) for i in K.index_set()] [1, 6, 3, 5, 4, 2, 0]
-
highest_weight_dict
()¶ Returns a dictionary between
highest weight elements, and a tuple of affine weights and its classical component.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: K.highest_weight_dict() {[[(2, -1), (1,)]]: ((-2, 0, 1, 0, 0, 0, 0), 1), [[(3, -1, -6), (1,)]]: ((-1, 0, 0, 1, 0, 0, -1), 1), [[(6, -2), (-6, 2)]]: ((0, 0, 0, 0, 0, 0, 0), 1), [[(5, -2, -6), (-6, 2)]]: ((0, 0, 0, 0, 0, 1, -2), 1), []: ((0, 0, 0, 0, 0, 0, 0), 0)}
-
highest_weight_dict_inv
()¶ Returns a dictionary between a tuple of affine weights and a classical component, and
highest weight elements.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: K.highest_weight_dict_inv() {((-2, 0, 1, 0, 0, 0, 0), 1): [[(2, -1), (1,)]], ((-1, -1, 0, 0, 0, 1, 0), 1): [[(5, -3), (-1, 3)]], ((0, -2, 0, 1, 0, 0, 0), 1): [[(-1,), (-1, 3)]], ((0, 0, 0, 0, 0, 0, 0), 0): [], ((0, 0, 0, 0, 0, 0, 0), 1): [[(1, -3), (-1, 3)]]}
-
hw_auxiliary
()¶ Returns the
highest weight elements of self.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: K.hw_auxiliary() [[], [[(2, -1), (1,)]], [[(5, -3), (-1, 3)]], [[(6, -2), (-6, 2)]], [[(5, -2, -6), (-6, 2)]], [[(-1,), (-6, 2)]], [[(3, -1, -6), (1,)]], [[(4, -3, -6), (-1, 3)]], [[(1, -3), (-1, 3)]], [[(-1,), (-1, 3)]]]
-
promotion
()¶ Specifies the promotion operator used to construct the affine type
crystal.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1], 2,1) sage: promotion = K.promotion() sage: all(promotion(promotion(promotion(b))) == b for b in K.classical_decomposition()) True sage: K = crystals.KirillovReshetikhin(['E',6,1],1,1) sage: promotion = K.promotion() sage: all(promotion(promotion(promotion(b))) == b for b in K.classical_decomposition()) True
-
promotion_inverse
()¶ Returns the inverse promotion. Since promotion is of order 3, the inverse promotion is the same as promotion applied twice.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1], 2,1) sage: p = K.promotion() sage: p_inv = K.promotion_inverse() sage: all(p_inv(p(b)) == b for b in K.classical_decomposition()) True
-
promotion_on_highest_weight_vectors
()¶ Gives a dictionary of the promotion map on
highest weight elements to
elements in self.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: dic = K.promotion_on_highest_weight_vectors() sage: dic {[[(2, -1), (1,)]]: [[(-1,), (-1, 3)]], [[(3, -1, -6), (1,)]]: [[(5, -3), (-1, 3)]], [[(6, -2), (-6, 2)]]: [], [[(5, -2, -6), (-6, 2)]]: [[(2, -1), (1,)]], []: [[(1, -3), (-1, 3)]]}
-
promotion_on_highest_weight_vectors_function
()¶ Return a lambda function on
x
defined byself.promotion_on_highest_weight_vectors()[x]
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['E',6,1], 2,1) sage: f = K.promotion_on_highest_weight_vectors_function() sage: f(K.module_generator().lift()) [[(-1,), (-1, 3)]]
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_box
(cartan_type, r, s)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
,sage.combinat.crystals.affine.AffineCrystalFromClassical
Class of Kirillov-Reshetikhin crystals
of type
for
and type
for
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',4,2], 1,1) sage: K Kirillov-Reshetikhin crystal of type ['BC', 2, 2] with (r,s)=(1,1) sage: b = K(rows=[]) sage: b.f(0) [[1]] sage: b.e(0) [[-1]]
-
Element
¶ alias of
KR_type_boxElement
-
ambient_crystal
()¶ Returns the ambient crystal
of type
associated to the Kirillov-Reshetikhin crystal. This ambient crystal is used to construct the zero arrows.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',4,2], 2,2) sage: K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['C', 2, 1] with (r,s)=(2,4)
-
ambient_highest_weight_dict
()¶ Gives a dictionary of the classical highest weight vectors of the ambient crystal of self. Their key is their shape.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',6,2], 2,2) sage: K.ambient_highest_weight_dict() {[]: [], [2]: [[1, 1]], [2, 2]: [[1, 1], [2, 2]], [4]: [[1, 1, 1, 1]], [4, 2]: [[1, 1, 1, 1], [2, 2]], [4, 4]: [[1, 1, 1, 1], [2, 2, 2, 2]]}
-
classical_decomposition
()¶ Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal of type
and
.
It is given by
where
are weights obtained from a rectangle of width
and height
by removing boxes. Here we identify the fundamental weight
with a column of height
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',4,2], 2,2) sage: K.classical_decomposition() The crystal of tableaux of type ['C', 2] and shape(s) [[], [1], [2], [1, 1], [2, 1], [2, 2]] sage: K = crystals.KirillovReshetikhin(['D',4,2], 2,3) sage: K.classical_decomposition() The crystal of tableaux of type ['B', 3] and shape(s) [[], [1], [2], [1, 1], [3], [2, 1], [3, 1], [2, 2], [3, 2], [3, 3]]
-
from_ambient_crystal
()¶ Provides a map from the ambient crystal of type
to the Kirillov-Reshetikhin crystal
self
.Note that this map is only well-defined on elements that are in the image under
to_ambient_crystal()
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,2], 1,1) sage: b = K.ambient_crystal()(rows=[[3,-3]]) sage: K.from_ambient_crystal()(b) [[0]] sage: K = crystals.KirillovReshetikhin(['A',4,2], 1,1) sage: b = K.ambient_crystal()(rows=[]) sage: K.from_ambient_crystal()(b) []
-
highest_weight_dict
()¶ Gives a dictionary of the classical highest weight vectors of self. Their key is 2 times their shape.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',6,2], 2,2) sage: K.highest_weight_dict() {[]: [], [2]: [[1]], [2, 2]: [[1], [2]], [4]: [[1, 1]], [4, 2]: [[1, 1], [2]], [4, 4]: [[1, 1], [2, 2]]}
-
similarity_factor
()¶ Sets the similarity factor used to map to the ambient crystal.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',6,2], 2,2) sage: K.similarity_factor() {1: 2, 2: 2, 3: 2} sage: K = crystals.KirillovReshetikhin(['D',5,2], 1,1) sage: K.similarity_factor() {1: 2, 2: 2, 3: 2, 4: 1}
-
to_ambient_crystal
()¶ Provides a map from self to the ambient crystal of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,2], 1,1) sage: [K.to_ambient_crystal()(b) for b in K] [[], [[1, 1]], [[2, 2]], [[3, 3]], [[3, -3]], [[-3, -3]], [[-2, -2]], [[-1, -1]]] sage: K = crystals.KirillovReshetikhin(['A',4,2], 1,1) sage: [K.to_ambient_crystal()(b) for b in K] [[], [[1, 1]], [[2, 2]], [[-2, -2]], [[-1, -1]]]
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_boxElement
¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
Class for the elements in the Kirillov-Reshetikhin crystals
of type
for
and type
for
.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['A',4,2],1,2) sage: type(K.module_generators[0]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_box_with_category.element_class'>
-
e0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['A',4,2],1,1) sage: b = K(rows=[]) sage: b.e(0) # indirect doctest [[-1]]
-
epsilon0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculatingthere.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',4,2], 1,1) sage: b=K(rows=[[1]]) sage: b.epsilon(0) # indirect doctest 2
-
f0
()¶ Gives
on self by mapping self to the ambient crystal, calculating
there and pulling the element back.
EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['A',4,2],1,1) sage: b = K(rows=[]) sage: b.f(0) # indirect doctest [[1]]
-
phi0
()¶ Calculate
of
self
by mapping the element to the ambient crystal and calculatingthere.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',3,2], 1,1) sage: b=K(rows=[[-1]]) sage: b.phi(0) # indirect doctest 2
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_spin
(cartan_type, r, s)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystalFromPromotion
Class of Kirillov-Reshetikhin crystals
of type
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1],4,1); K Kirillov-Reshetikhin crystal of type ['D', 4, 1] with (r,s)=(4,1) sage: [[b,b.f(0)] for b in K] [[[++++, []], None], [[++--, []], None], [[+-+-, []], None], [[-++-, []], None], [[+--+, []], None], [[-+-+, []], None], [[--++, []], [++++, []]], [[----, []], [++--, []]]] sage: K = crystals.KirillovReshetikhin(['D',4,1],4,2); K Kirillov-Reshetikhin crystal of type ['D', 4, 1] with (r,s)=(4,2) sage: [[b,b.f(0)] for b in K] [[[[1], [2], [3], [4]], None], [[[1], [2], [-4], [4]], None], [[[1], [3], [-4], [4]], None], [[[2], [3], [-4], [4]], None], [[[1], [4], [-4], [4]], None], [[[2], [4], [-4], [4]], None], [[[3], [4], [-4], [4]], [[1], [2], [3], [4]]], [[[-4], [4], [-4], [4]], [[1], [2], [-4], [4]]], [[[-4], [4], [-4], [-3]], [[1], [2], [-4], [-3]]], [[[-4], [4], [-4], [-2]], [[1], [3], [-4], [-3]]], [[[-4], [4], [-4], [-1]], [[2], [3], [-4], [-3]]], [[[-4], [4], [-3], [-2]], [[1], [4], [-4], [-3]]], [[[-4], [4], [-3], [-1]], [[2], [4], [-4], [-3]]], [[[-4], [4], [-2], [-1]], [[-4], [4], [-4], [4]]], [[[-4], [-3], [-2], [-1]], [[-4], [4], [-4], [-3]]], [[[1], [2], [-4], [-3]], None], [[[1], [3], [-4], [-3]], None], [[[2], [3], [-4], [-3]], None], [[[1], [3], [-4], [-2]], None], [[[2], [3], [-4], [-2]], None], [[[2], [3], [-4], [-1]], None], [[[1], [4], [-4], [-3]], None], [[[2], [4], [-4], [-3]], None], [[[3], [4], [-4], [-3]], None], [[[3], [4], [-4], [-2]], [[1], [3], [-4], [4]]], [[[3], [4], [-4], [-1]], [[2], [3], [-4], [4]]], [[[1], [4], [-4], [-2]], None], [[[2], [4], [-4], [-2]], None], [[[2], [4], [-4], [-1]], None], [[[1], [4], [-3], [-2]], None], [[[2], [4], [-3], [-2]], None], [[[2], [4], [-3], [-1]], None], [[[3], [4], [-3], [-2]], [[1], [4], [-4], [4]]], [[[3], [4], [-3], [-1]], [[2], [4], [-4], [4]]], [[[3], [4], [-2], [-1]], [[3], [4], [-4], [4]]]]
TESTS:
sage: K = crystals.KirillovReshetikhin(['D',4,1],3,1) sage: all(b.e(0).f(0) == b for b in K if b.epsilon(0)>0) True sage: K = crystals.KirillovReshetikhin(['D',5,1],5,2) sage: all(b.f(0).e(0) == b for b in K if b.phi(0)>0) True
-
classical_decomposition
()¶ Returns the classical crystal underlying the Kirillov-Reshetikhin crystal
of type
for
. It is given by
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1],4,1) sage: K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[1/2, 1/2, 1/2, 1/2]] sage: K = crystals.KirillovReshetikhin(['D',4,1],3,1) sage: K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[1/2, 1/2, 1/2, -1/2]] sage: K = crystals.KirillovReshetikhin(['D',4,1],3,2) sage: K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[1, 1, 1, -1]]
-
dynkin_diagram_automorphism
(i)¶ Specifies the Dynkin diagram automorphism underlying the promotion action on the crystal elements. The automorphism needs to map node 0 to some other Dynkin node.
Here we use the Dynkin diagram automorphism which interchanges nodes 0 and 1 and leaves all other nodes unchanged.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1],4,1) sage: K.dynkin_diagram_automorphism(0) 1 sage: K.dynkin_diagram_automorphism(1) 0 sage: K.dynkin_diagram_automorphism(4) 4
-
promotion
()¶ Returns the promotion operator on
of type
for
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1],3,1) sage: T = K.classical_decomposition() sage: promotion = K.promotion() sage: for t in T: ....: print t, promotion(t) [+++-, []] [-++-, []] [++-+, []] [-+-+, []] [+-++, []] [--++, []] [-+++, []] [++++, []] [+---, []] [----, []] [-+--, []] [++--, []] [--+-, []] [+-+-, []] [---+, []] [+--+, []]
-
promotion_inverse
()¶ Returns the inverse promotion operator on
of type
for
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1],3,1) sage: T = K.classical_decomposition() sage: promotion = K.promotion() sage: promotion_inverse = K.promotion_inverse() sage: all(promotion_inverse(promotion(t)) == t for t in T) True
-
promotion_on_highest_weight_vectors
()¶ Returns the promotion operator on
-highest weight vectors.
A
-highest weight vector in
of weight
is mapped to a
-highest weight vector in
of weight
and vice versa.
See also
promotion_on_highest_weight_vectors_inverse()
andpromotion()
.EXAMPLES:
sage: KR = crystals.KirillovReshetikhin(['D',4,1],4,2) sage: prom = KR.promotion_on_highest_weight_vectors() sage: T = KR.classical_decomposition() sage: HW = [t for t in T if t.is_highest_weight([2,3,4])] sage: for t in HW: ....: print t, prom[t] [4, 3, 2, 1] [-1, 4, 3, 2] [4, -4, 3, 2] [-4, 4, 3, 2] [-1, -4, 3, 2] [-4, 3, 2, 1] sage: KR = crystals.KirillovReshetikhin(['D',4,1],4,1) sage: prom = KR.promotion_on_highest_weight_vectors() sage: T = KR.classical_decomposition() sage: HW = [t for t in T if t.is_highest_weight([2,3,4])] sage: for t in HW: ....: print t, prom[t] [++++, []] [-+++, []] [-++-, []] [+++-, []]
-
promotion_on_highest_weight_vectors_inverse
()¶ Returns the inverse promotion operator on
-highest weight vectors.
See also
promotion_on_highest_weight_vectors()
andpromotion_inverse()
.EXAMPLES:
sage: KR = crystals.KirillovReshetikhin(['D',4,1],3,2) sage: prom = KR.promotion_on_highest_weight_vectors() sage: prom_inv = KR.promotion_on_highest_weight_vectors_inverse() sage: T = KR.classical_decomposition() sage: HW = [t for t in T if t.is_highest_weight([2,3,4])] sage: all(prom_inv[prom[t]] == t for t in HW) True
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_vertical
(cartan_type, r, s)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystalFromPromotion
Class of Kirillov-Reshetikhin crystals
of type
for
,
for
, and
for
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: b = K(rows=[]) sage: b.f(0) [[1], [2]] sage: b.f(0).f(0) [[1, 1], [2, 2]] sage: b.e(0) [[-2], [-1]] sage: b.e(0).e(0) [[-2, -2], [-1, -1]] sage: K = crystals.KirillovReshetikhin(['D',5,1], 3,1) sage: b = K(rows=[[1]]) sage: b.e(0) [[3], [-3], [-2]] sage: K = crystals.KirillovReshetikhin(['B',3,1], 1,1) sage: [[b,b.f(0)] for b in K] [[[[1]], None], [[[2]], None], [[[3]], None], [[[0]], None], [[[-3]], None], [[[-2]], [[1]]], [[[-1]], [[2]]]] sage: K = crystals.KirillovReshetikhin(['A',5,2], 1,1) sage: [[b,b.f(0)] for b in K] [[[[1]], None], [[[2]], None], [[[3]], None], [[[-3]], None], [[[-2]], [[1]]], [[[-1]], [[2]]]]
-
classical_decomposition
()¶ Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal of type
,
, and
.
It is given by
where
are weights obtained from a rectangle of width
and height
by removing verticle dominoes. Here we identify the fundamental weight
with a column of height
.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[], [1, 1], [2, 2]]
-
dynkin_diagram_automorphism
(i)¶ Specifies the Dynkin diagram automorphism underlying the promotion action on the crystal elements. The automorphism needs to map node 0 to some other Dynkin node.
Here we use the Dynkin diagram automorphism which interchanges nodes 0 and 1 and leaves all other nodes unchanged.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1],1,1) sage: K.dynkin_diagram_automorphism(0) 1 sage: K.dynkin_diagram_automorphism(1) 0 sage: K.dynkin_diagram_automorphism(4) 4
-
from_highest_weight_vector_to_pm_diagram
(b)¶ This gives the bijection between an element b in the classical decomposition of the KR crystal that is
-highest weight and
diagrams.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: T = K.classical_decomposition() sage: b = T(rows=[[2],[-2]]) sage: pm = K.from_highest_weight_vector_to_pm_diagram(b); pm [[1, 1], [0, 0], [0]] sage: pm.pp() + - sage: b = T(rows=[]) sage: pm=K.from_highest_weight_vector_to_pm_diagram(b); pm [[0, 2], [0, 0], [0]] sage: pm.pp() sage: hw = [ b for b in T if all(b.epsilon(i)==0 for i in [2,3,4]) ] sage: all(K.from_pm_diagram_to_highest_weight_vector(K.from_highest_weight_vector_to_pm_diagram(b)) == b for b in hw) True
-
from_pm_diagram_to_highest_weight_vector
(pm)¶ This gives the bijection between a
diagram and an element b in the classical decomposition of the KR crystal that is {2,3,..,n}-highest weight.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[1, 1], [0, 0], [0]]) sage: K.from_pm_diagram_to_highest_weight_vector(pm) [[2], [-2]]
-
promotion
()¶ Specifies the promotion operator used to construct the affine type
etc. crystal. This corresponds to the Dynkin diagram automorphism which interchanges nodes 0 and 1, and leaves all other nodes unchanged. On the level of crystals it is constructed using
diagrams.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: promotion = K.promotion() sage: b = K.classical_decomposition()(rows=[]) sage: promotion(b) [[1, 2], [-2, -1]] sage: b = K.classical_decomposition()(rows=[[1,3],[2,-1]]) sage: promotion(b) [[1, 3], [2, -1]] sage: b = K.classical_decomposition()(rows=[[1],[-3]]) sage: promotion(b) [[2, -3], [-2, -1]]
-
promotion_inverse
()¶ Return inverse of promotion.
In this case promotion is an involution, so promotion inverse equals promotion.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: promotion = K.promotion() sage: promotion_inverse = K.promotion_inverse() sage: all( promotion_inverse(promotion(b.lift())) == b.lift() for b in K ) True
-
promotion_on_highest_weight_vectors
()¶ Calculates promotion on
highest weight vectors.
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: T = K.classical_decomposition() sage: hw = [ b for b in T if all(b.epsilon(i)==0 for i in [2,3,4]) ] sage: [K.promotion_on_highest_weight_vectors()(b) for b in hw] [[[1, 2], [-2, -1]], [[2, 2], [-2, -1]], [[1, 2], [3, -1]], [[2], [-2]], [[1, 2], [2, -2]], [[2, 2], [-1, -1]], [[2, 2], [3, -1]], [[2, 2], [3, 3]], [], [[1], [2]], [[1, 1], [2, 2]], [[2], [-1]], [[1, 2], [2, -1]], [[2], [3]], [[1, 2], [2, 3]]]
-
-
sage.combinat.crystals.kirillov_reshetikhin.
KashiwaraNakashimaTableaux
(cartan_type, r, s)¶ Return the Kashiwara-Nakashima model for the Kirillov-Reshetikhin crystal
in the given type.
The Kashiwara-Nakashima (KN) model constructs the KR crystal from the KN tableaux model for the corresponding classical crystals. This model is named for the underlying KN tableaux.
Many Kirillov-Reshetikhin crystals are constructed from a classical crystal together with an automorphism
on the level of crystals which corresponds to a Dynkin diagram automorphism mapping node 0 to some other node
. The action of
and
is then constructed using
.
For example, for type
the Kirillov-Reshetikhin crystal
is obtained from the classical crystal
using the promotion operator. For other types, see [Shimozono02], [Schilling08], and [JS2010].
Other Kirillov-Reshetikhin crystals are constructed using similarity methods. See Section 4 of [FOS09].
For more information on Kirillov-Reshetikhin crystals, see
KirillovReshetikhinCrystal()
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2, 1) sage: K2 = crystals.kirillov_reshetikhin.KashiwaraNakashimaTableaux(['A',3,1], 2, 1) sage: K is K2 True
-
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinCrystal
(cartan_type, r, s, model='KN')¶ Return the Kirillov-Reshetikhin crystal
of the given type in the given model.
For more information about general crystals see
sage.combinat.crystals.crystals
.There are a variety of models for Kirillov-Reshetikhin crystals. There is one using the classical crystal with
Kashiwara-Nakashima tableaux
. There is one usingrigged configurations
. Another tableaux model comes from the bijection between rigged configurations and tensor products of tableaux calledKirillov-Reshetikhin tableaux
Lastly there is a model of Kirillov-Reshetikhin crystals forfrom crystals of
LS paths
.INPUT:
cartan_type
– an affine Cartan typer
– a label of finite Dynkin diagrams
– a positive integermodel
– (default:'KN'
) can be one of the following:'KN'
or'KashiwaraNakashimaTableaux'
- use the Kashiwara-Nakashima tableaux model'KR'
or'KirillovReshetkihinTableaux'
- use the Kirillov-Reshetkihin tableaux model'RC'
or'RiggedConfiguration'
- use the rigged configuration model'LSPaths'
- use the LS path model
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2, 1) sage: K.index_set() (0, 1, 2, 3) sage: K.list() [[[1], [2]], [[1], [3]], [[2], [3]], [[1], [4]], [[2], [4]], [[3], [4]]] sage: b=K(rows=[[1],[2]]) sage: b.weight() -Lambda[0] + Lambda[2] sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.automorphism(K.module_generators[0]) [[2, 2], [3, 3]] sage: K.module_generators[0].e(0) [[1, 2], [2, 4]] sage: K.module_generators[0].f(2) [[1, 1], [2, 3]] sage: K.module_generators[0].f(1) sage: K.module_generators[0].phi(0) 0 sage: K.module_generators[0].phi(1) 0 sage: K.module_generators[0].phi(2) 2 sage: K.module_generators[0].epsilon(0) 2 sage: K.module_generators[0].epsilon(1) 0 sage: K.module_generators[0].epsilon(2) 0 sage: b = K(rows=[[1,2],[2,3]]) sage: b [[1, 2], [2, 3]] sage: b.f(2) [[1, 2], [3, 3]] sage: K = crystals.KirillovReshetikhin(['D',4,1], 2, 1) sage: K.cartan_type() ['D', 4, 1] sage: type(K.module_generators[0]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_vertical_with_category.element_class'>
The following gives some tests with regards to Lemma 3.11 in [LOS12].
TESTS:
sage: K = crystals.KirillovReshetikhin(['A',4,2],2,1) sage: Lambda = K.weight_lattice_realization().fundamental_weights() sage: [b for b in K if b.Epsilon() == Lambda[0]] [[]] sage: K = crystals.KirillovReshetikhin(['D',4,2],1,2) sage: Lambda = K.weight_lattice_realization().fundamental_weights() sage: [b for b in K if b.Epsilon() == 2*Lambda[0]] [[]] sage: [b for b in K if b.Epsilon() == 2*Lambda[3]] [[[3, -3]]] sage: K = crystals.KirillovReshetikhin(['D',4,2],1,1) sage: [b for b in K if b.Epsilon() == Lambda[3]] [[[0]]] sage: K = crystals.KirillovReshetikhin(['B',3,1],2,1) sage: Lambda = K.weight_lattice_realization().fundamental_weights() sage: [b for b in K if b.Epsilon() == Lambda[0]] [[]] sage: [b for b in K if b.Epsilon() == Lambda[1]] [[[2], [-2]]] sage: K = crystals.KirillovReshetikhin(['B',3,1],2,2) sage: [b for b in K if b.Epsilon() == 2*Lambda[0]] [[]] sage: [b for b in K if b.Epsilon() == 2*Lambda[1]] [[[1, 2], [-2, -1]]] sage: K = crystals.KirillovReshetikhin(['B',3,1],2,3) sage: [b for b in K if b.Epsilon() == 3*Lambda[1]] # long time [[[1, 2, 2], [-2, -2, -1]]] sage: K = crystals.KirillovReshetikhin(['D',4,1],2,2) sage: Lambda = K.weight_lattice_realization().fundamental_weights() sage: [b for b in K if b.Epsilon() == 2*Lambda[0]] # long time [[]] sage: [b for b in K if b.Epsilon() == 2*Lambda[4]] # long time [[[3, -4], [4, -3]]] sage: K = crystals.KirillovReshetikhin(['B',3,1],3,1) sage: Lambda = K.weight_lattice_realization().fundamental_weights() sage: [b for b in K if b.Epsilon() == Lambda[0]] [[+++, []]] sage: [b for b in K if b.Epsilon() == Lambda[1]] [[-++, []]] sage: K = crystals.KirillovReshetikhin(['B',3,1],3,3) sage: [b for b in K if b.Epsilon() == 2*Lambda[0]] # long time [[+++, [[1]]]] sage: [b for b in K if b.Epsilon() == 2*Lambda[1]] # long time [[-++, [[-1]]]] sage: K = crystals.KirillovReshetikhin(['B',4,1],4,1) sage: Lambda = K.weight_lattice_realization().fundamental_weights() sage: [b for b in K if b.Epsilon() == Lambda[0]] [[++++, []]] sage: [b for b in K if b.Epsilon() == Lambda[1]] [[-+++, []]] sage: K = crystals.KirillovReshetikhin(['C',3,1],1,1) sage: Lambda = K.weight_lattice_realization().fundamental_weights() sage: [b for b in K if b.Epsilon() == Lambda[0]] [[[1]]] sage: [b for b in K if b.Epsilon() == Lambda[3]] [[[-3]]] sage: K = crystals.KirillovReshetikhin(['C',3,1],1,3) sage: [b for b in K if b.Epsilon() == 2*Lambda[3]] # long time [[[3, -3, -3]]] sage: [b for b in K if b.Epsilon() == 2*Lambda[0]] # long time [[[1]]]
We check the various models agree:
sage: KN = crystals.KirillovReshetikhin(['D',4,1], 2, 1) sage: KR = crystals.KirillovReshetikhin(['D',4,1], 2, 1, model='KR') sage: RC = crystals.KirillovReshetikhin(['D',4,1], 2, 1, model='RC') sage: LS = crystals.KirillovReshetikhin(['D',4,1], 2, 1, model='LSPaths') sage: G = KN.digraph() sage: G.is_isomorphic(KR.digraph(), edge_labels=True) True sage: G.is_isomorphic(RC.digraph(), edge_labels=True) True sage: G.is_isomorphic(LS.digraph(), edge_labels=True) True sage: KN = crystals.KirillovReshetikhin(['D',4,1], 2, 1) sage: KN2 = crystals.KirillovReshetikhin(['D',4,1], 2, 1, model='KN') sage: KN3 = crystals.KirillovReshetikhin(['D',4,1], 2, 1, model='KashiwaraNakashimaTableaux') sage: KN is KN2 and KN is KN3 True
REFERENCES:
[Shimozono02] M. Shimozono Affine type A crystal structure on tensor products of rectangles, Demazure characters, and nilpotent varieties, J. Algebraic Combin. 15 (2002). no. 2. 151-187. Arxiv math.QA/9804039. [Schilling08] (1, 2) A. Schilling. “Combinatorial structure of Kirillov-Reshetikhin crystals of type ,
,
”. J. Algebra. 319 (2008). 2938-2962. Arxiv 0704.2046.
[JS2010] B. Jones, A. Schilling. “Affine structures and a tableau model for crystals”, J. Algebra. 324 (2010). 2512-2542. doi:10.1016/j.bbr.2011.03.031, Arxiv 0909.2442.
[FOS09] G. Fourier, M. Okado, A. Schilling. Kirillov-Reshetikhin crystals for nonexceptional types. Advances in Mathematics. 222 (2009). Issue 3. 1080-1116. Arxiv 0810.5067. [LOS12] C. Lecouvey, M. Okado, M. Shimozono. “Affine crystals, one-dimensional sums and parabolic Lusztig -analogues”. Mathematische Zeitschrift. 271 (2012). Issue 3-4. 819-865. doi:10.1007/s00209-011-0892-9, Arxiv 1002.3715.
-
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinCrystalFromLSPaths
(cartan_type, r, s=1)¶ Single column Kirillov-Reshetikhin crystals.
This yields the single column Kirillov-Reshetikhin crystals from the projected level zero LS paths, see
CrystalOfLSPaths
. This works for all types (even exceptional types). The weight of the canonical element in this crystal is. For other implementation see
KirillovReshetikhinCrystal()
.EXAMPLES:
sage: K = crystals.kirillov_reshetikhin.LSPaths(['A',2,1],2) sage: KR = crystals.KirillovReshetikhin(['A',2,1],2,1) sage: G = K.digraph() sage: GR = KR.digraph() sage: G.is_isomorphic(GR, edge_labels = True) True sage: K = crystals.kirillov_reshetikhin.LSPaths(['C',3,1],2) sage: KR = crystals.KirillovReshetikhin(['C',3,1],2,1) sage: G = K.digraph() sage: GR = KR.digraph() sage: G.is_isomorphic(GR, edge_labels = True) True sage: K = crystals.kirillov_reshetikhin.LSPaths(['E',6,1],1) sage: KR = crystals.KirillovReshetikhin(['E',6,1],1,1) sage: G = K.digraph() sage: GR = KR.digraph() sage: G.is_isomorphic(GR, edge_labels = True) True sage: K.cardinality() 27 sage: K = crystals.kirillov_reshetikhin.LSPaths(['G',2,1],1) sage: K.cardinality() 7 sage: K = crystals.kirillov_reshetikhin.LSPaths(['B',3,1],2) sage: KR = crystals.KirillovReshetikhin(['B',3,1],2,1) sage: KR.cardinality() 22 sage: K.cardinality() 22 sage: G = K.digraph() sage: GR = KR.digraph() sage: G.is_isomorphic(GR, edge_labels = True) True
TESTS:
sage: K = crystals.kirillov_reshetikhin.LSPaths(['G',2,1],2) sage: K.cardinality() 15
For
these crystals yield
-fold tensor products of Kirillov-Reshetikhin crystals:
sage: K = crystals.kirillov_reshetikhin.LSPaths(['A',1,1],1,3) sage: B = crystals.KirillovReshetikhin(['A',1,1],1,1) sage: T = crystals.TensorProduct(B,B,B) sage: G = K.digraph() sage: GT = T.digraph() sage: G.is_isomorphic(GT, edge_labels = True) True sage: K = crystals.kirillov_reshetikhin.LSPaths(['B',2,1],1,2) sage: B = crystals.KirillovReshetikhin(['B',2,1],1,1) sage: T = crystals.TensorProduct(B,B) sage: G = K.digraph() sage: GT = T.digraph() sage: G.is_isomorphic(GT, edge_labels = True) True sage: K = crystals.kirillov_reshetikhin.LSPaths(['B',2,1],2,3) sage: B = crystals.KirillovReshetikhin(['B',2,1],2,1) sage: T = crystals.TensorProduct(B,B,B) sage: GT = T.digraph() sage: G = K.digraph() sage: G.is_isomorphic(GT, edge_labels = True) True
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinCrystalFromPromotion
(cartan_type, r, s)¶ Bases:
sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal
,sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotion
This generic class assumes that the Kirillov-Reshetikhin crystal is constructed from a classical crystal ‘classical_decomposition’ and an automorphism ‘promotion’ and its inverse which corresponds to a Dynkin diagram automorphism ‘dynkin_diagram_automorphism’.
Each instance using this class needs to implement the methods:
- classical_decomposition
- promotion
- promotion_inverse
- dynkin_diagram_automorphism
-
Element
¶
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinCrystalFromPromotionElement
¶ Bases:
sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement
,sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement
Element for a Kirillov-Reshetikhin crystal from promotion.
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinGenericCrystal
(cartan_type, r, s, dual=None)¶ Bases:
sage.combinat.crystals.affine.AffineCrystalFromClassical
Generic class for Kirillov-Reshetikhin crystal
of the given type.
Input is a Dynkin node
r
, a positive integers
, and a Cartan typecartan_type
.-
Element
¶
-
R_matrix
(K)¶ INPUT:
self
– a crystalK
– a Kirillov-Reshetikhin crystal of the same type as.
Returns the combinatorial `R`-matrix from
, where the combinatorial
-matrix is the affine crystal isomorphism which maps
to
, where
is the unique element in
of weight
(see module_generator).
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',2,1],1,1) sage: L = crystals.KirillovReshetikhin(['A',2,1],1,2) sage: f = K.R_matrix(L) sage: [[b,f(b)] for b in crystals.TensorProduct(K,L)] [[[[[1]], [[1, 1]]], [[[1, 1]], [[1]]]], [[[[1]], [[1, 2]]], [[[1, 1]], [[2]]]], [[[[1]], [[2, 2]]], [[[1, 2]], [[2]]]], [[[[1]], [[1, 3]]], [[[1, 1]], [[3]]]], [[[[1]], [[2, 3]]], [[[1, 2]], [[3]]]], [[[[1]], [[3, 3]]], [[[1, 3]], [[3]]]], [[[[2]], [[1, 1]]], [[[1, 2]], [[1]]]], [[[[2]], [[1, 2]]], [[[2, 2]], [[1]]]], [[[[2]], [[2, 2]]], [[[2, 2]], [[2]]]], [[[[2]], [[1, 3]]], [[[2, 3]], [[1]]]], [[[[2]], [[2, 3]]], [[[2, 2]], [[3]]]], [[[[2]], [[3, 3]]], [[[2, 3]], [[3]]]], [[[[3]], [[1, 1]]], [[[1, 3]], [[1]]]], [[[[3]], [[1, 2]]], [[[1, 3]], [[2]]]], [[[[3]], [[2, 2]]], [[[2, 3]], [[2]]]], [[[[3]], [[1, 3]]], [[[3, 3]], [[1]]]], [[[[3]], [[2, 3]]], [[[3, 3]], [[2]]]], [[[[3]], [[3, 3]]], [[[3, 3]], [[3]]]]] sage: K = crystals.KirillovReshetikhin(['D',4,1],1,1) sage: L = crystals.KirillovReshetikhin(['D',4,1],2,1) sage: f = K.R_matrix(L) sage: T = crystals.TensorProduct(K,L) sage: b = T( K(rows=[[1]]), L(rows=[]) ) sage: f(b) [[[2], [-2]], [[1]]]
Alternatively, one can compute the combinatorial
-matrix using the isomorphism method of digraphs:
sage: K1 = crystals.KirillovReshetikhin(['A',2,1],1,1) sage: K2 = crystals.KirillovReshetikhin(['A',2,1],2,1) sage: T1 = crystals.TensorProduct(K1,K2) sage: T2 = crystals.TensorProduct(K2,K1) sage: T1.digraph().is_isomorphic(T2.digraph(), edge_labels = True, certify = True) #todo: not implemented (see #10904 and #10549) (True, {[[[1]], [[2], [3]]]: [[[1], [3]], [[2]]], [[[3]], [[2], [3]]]: [[[2], [3]], [[3]]], [[[3]], [[1], [3]]]: [[[1], [3]], [[3]]], [[[1]], [[1], [3]]]: [[[1], [3]], [[1]]], [[[1]], [[1], [2]]]: [[[1], [2]], [[1]]], [[[2]], [[1], [2]]]: [[[1], [2]], [[2]]], [[[3]], [[1], [2]]]: [[[2], [3]], [[1]]], [[[2]], [[1], [3]]]: [[[1], [2]], [[3]]], [[[2]], [[2], [3]]]: [[[2], [3]], [[2]]]})
-
affinization
()¶ Return the corresponding affinization crystal of
self
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',2,1], 1, 1) sage: K.affinization() Affinization of Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1)
-
classical_decomposition
()¶ Return the classical decomposition of
self
.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.classical_decomposition() The crystal of tableaux of type ['A', 3] and shape(s) [[2, 2]]
-
is_perfect
()¶ Returns True or False depending on whether
self
is a perfect crystal or not, respectively.If
self
is the Kirillov-Reshetikhin crystal, then it was proven in [FOS2010] that it is perfect if and only if
is an integer (where
is a constant related to the type of the crystal).
REFERENCES:
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',2,1], 1, 1) sage: K.is_perfect() True sage: K = crystals.KirillovReshetikhin(['C',2,1], 1, 1) sage: K.is_perfect() False sage: K = crystals.KirillovReshetikhin(['C',2,1], 1, 2) sage: K.is_perfect() True
-
kirillov_reshetikhin_tableaux
()¶ Return the corresponding set of
KirillovReshetikhinTableaux
.EXAMPLES:
sage: KRC = crystals.KirillovReshetikhin(['D', 4, 1], 2, 2) sage: KRC.kirillov_reshetikhin_tableaux() Kirillov-Reshetikhin tableaux of type ['D', 4, 1] and shape (2, 2)
-
level
()¶ Returns the level of
self
assuming that it is a perfect crystal.If
self
is the Kirillov-Reshetikhin crystal, then it was proven in [FOS2010] that its level is
which is an integer if
self
is perfect (hereis a constant related to the type of the crystal).
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',2,1], 1, 1) sage: K.level() 1 sage: K = crystals.KirillovReshetikhin(['C',2,1], 1, 2) sage: K.level() 1 sage: K = crystals.KirillovReshetikhin(['D',4,1], 1, 3) sage: K.level() 3 sage: K = crystals.KirillovReshetikhin(['C',2,1], 1, 1) sage: K.level() Traceback (most recent call last): ... ValueError: this crystal is not perfect
-
module_generator
()¶ Returns the unique module generator of classical weight
of a Kirillov-Reshetikhin crystal
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',2,1],1,2) sage: K.module_generator() [[1, 1]] sage: K = crystals.KirillovReshetikhin(['E',6,1],1,1) sage: K.module_generator() [(1,)] sage: K = crystals.KirillovReshetikhin(['D',4,1],2,1) sage: K.module_generator() [[1], [2]]
-
q_dimension
(q=None, prec=None, use_product=False)¶ Return the
-dimension of
self
.The
-dimension of a KR crystal is defined as the
-dimension of the underlying classical crystal.
EXAMPLES:
sage: KRC = crystals.KirillovReshetikhin(['A',2,1], 2,2) sage: KRC.q_dimension() q^4 + q^3 + 2*q^2 + q + 1 sage: KRC = crystals.KirillovReshetikhin(['D',4,1], 2,1) sage: KRC.q_dimension() q^10 + q^9 + 3*q^8 + 3*q^7 + 4*q^6 + 4*q^5 + 4*q^4 + 3*q^3 + 3*q^2 + q + 2
-
r
()¶ Returns r of the underlying Kirillov-Reshetikhin crystal
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2, 1) sage: K.r() 2
-
s
()¶ Returns s of the underlying Kirillov-Reshetikhin crystal
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2, 1) sage: K.s() 1
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinGenericCrystalElement
¶ Bases:
sage.combinat.crystals.affine.AffineCrystalFromClassicalElement
Abstract class for all Kirillov-Reshetikhin crystal elements.
-
lusztig_involution
()¶ Return the classical Lusztig involution on
self
.EXAMPLES:
sage: KRC = crystals.KirillovReshetikhin(['D',4,1], 2,2) sage: elt = KRC(-1,2); elt [[2], [-1]] sage: elt.lusztig_involution() [[1], [-2]]
-
pp
()¶ Pretty print
self
.EXAMPLES:
sage: C = crystals.KirillovReshetikhin(['D',4,1], 2,1) sage: C(2,1).pp() 1 2 sage: C = crystals.KirillovReshetikhin(['B',3,1], 3,3) sage: C.module_generators[0].pp() + (X) 1 + +
-
to_kirillov_reshetikhin_tableau
()¶ Construct the corresponding
KirillovReshetikhinTableauxElement
fromself
.We construct the Kirillov-Reshetikhin tableau element as follows:
- Let
be the shape of
self
. - Determine a path
to the highest weight.
- Apply
to a highest weight KR tableau from filling the shape
.
EXAMPLES:
sage: KRC = crystals.KirillovReshetikhin(['A', 4, 1], 2, 1) sage: KRC(columns=[[2,1]]).to_kirillov_reshetikhin_tableau() [[1], [2]] sage: KRC = crystals.KirillovReshetikhin(['D', 4, 1], 2, 1) sage: KRC(rows=[]).to_kirillov_reshetikhin_tableau() [[1], [-1]]
- Let
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
PMDiagram
(pm_diagram, from_shapes=None)¶ Bases:
sage.combinat.combinat.CombinatorialObject
Class of
diagrams. These diagrams are in one-to-one bijection with
highest weight vectors in an
highest weight crystal
. See Section 4.1 of [Schilling08].
The input is a list
of pairs and a last 1-tuple (or list of length 1). The pair
specifies the number of
and
in the
-th row of the
diagram if
is odd and the number of
pairs above row
and
columns of height
not containing any
or
if
is even.
Setting the option
from_shapes = True
one can also input adiagram in terms of its outer, intermediate, and inner shape by specifying a list
[n, s, outer, intermediate, inner]
wheres
is the width of thediagram, and
outer
,intermediate
, andinner
are the outer, intermediate, and inner shapes, respectively.EXAMPLES:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[0,1],[1,2],[1]]) sage: pm.pm_diagram [[0, 1], [1, 2], [1]] sage: pm._list [1, 1, 2, 0, 1] sage: pm.n 2 sage: pm.width 5 sage: pm.pp() . . . . . + - - sage: PMDiagram([2,5,[4,4],[4,2],[4,1]], from_shapes=True) [[0, 1], [1, 2], [1]]
TESTS:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[1,2],[1,1],[1,1],[1,1],[1]]) sage: PMDiagram([pm.n, pm.width, pm.outer_shape(), pm.intermediate_shape(), pm.inner_shape()], from_shapes=True) == pm True sage: pm = PMDiagram([[1,2],[1,2],[1,1],[1,1],[1,1],[1]]) sage: PMDiagram([pm.n, pm.width, pm.outer_shape(), pm.intermediate_shape(), pm.inner_shape()], from_shapes=True) == pm True
-
heights_of_addable_plus
()¶ Return a list with the heights of all addable plus in the
diagram.
EXAMPLES:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[1,2],[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.heights_of_addable_plus() [1, 1, 2, 3, 4, 5] sage: pm = PMDiagram([[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.heights_of_addable_plus() [1, 2, 3, 4]
-
heights_of_minus
()¶ Return a list with the heights of all minus in the
diagram.
EXAMPLES:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[1,2],[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.heights_of_minus() [5, 5, 3, 3, 1, 1] sage: pm = PMDiagram([[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.heights_of_minus() [4, 4, 2, 2]
-
inner_shape
()¶ Return the inner shape of the pm diagram
EXAMPLES:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[0,1],[1,2],[1]]) sage: pm.inner_shape() [4, 1] sage: pm = PMDiagram([[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.inner_shape() [7, 5, 3, 1] sage: pm = PMDiagram([[1,2],[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.inner_shape() [10, 7, 5, 3, 1]
-
intermediate_shape
()¶ Return the intermediate shape of the pm diagram (inner shape plus positions of plusses)
EXAMPLES:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[0,1],[1,2],[1]]) sage: pm.intermediate_shape() [4, 2] sage: pm = PMDiagram([[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.intermediate_shape() [8, 6, 4, 2] sage: pm = PMDiagram([[1,2],[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.intermediate_shape() [11, 8, 6, 4, 2] sage: pm = PMDiagram([[1,0],[0,1],[2,0],[0,0],[0]]) sage: pm.intermediate_shape() [4, 2, 2] sage: pm = PMDiagram([[1, 0], [0, 0], [0, 0], [0, 0], [0]]) sage: pm.intermediate_shape() [1]
-
outer_shape
()¶ Return the outer shape of the
diagram
EXAMPLES:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[0,1],[1,2],[1]]) sage: pm.outer_shape() [4, 4] sage: pm = PMDiagram([[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.outer_shape() [8, 8, 4, 4] sage: pm = PMDiagram([[1,2],[1,2],[1,1],[1,1],[1,1],[1]]) sage: pm.outer_shape() [13, 8, 8, 4, 4]
-
pp
()¶ Pretty print
self
.EXAMPLES:
sage: from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram sage: pm = PMDiagram([[1,0],[0,1],[2,0],[0,0],[0]]) sage: pm.pp() . . . + . . - - + + - - sage: pm = PMDiagram([[0,2], [0,0], [0]]) sage: pm.pp()
-
sigma
()¶ Return sigma on pm diagrams as needed for the analogue of the Dynkin diagram automorphism that interchanges nodes
and
for type
,
,
for Kirillov-Reshetikhin crystals.
EXAMPLES:
sage: pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[0,1],[1,2],[1]]) sage: pm.sigma() [[1, 0], [2, 1], [1]]
-
-
sage.combinat.crystals.kirillov_reshetikhin.
horizontal_dominoes_removed
(r, s)¶ Returns all partitions obtained from a rectangle of width s and height r by removing horizontal dominoes.
EXAMPLES:
sage: sage.combinat.crystals.kirillov_reshetikhin.horizontal_dominoes_removed(2,2) [[], [2], [2, 2]] sage: sage.combinat.crystals.kirillov_reshetikhin.horizontal_dominoes_removed(3,2) [[], [2], [2, 2], [2, 2, 2]]
-
sage.combinat.crystals.kirillov_reshetikhin.
partitions_in_box
(r, s)¶ Returns all partitions in a box of width s and height r.
EXAMPLES:
sage: sage.combinat.crystals.kirillov_reshetikhin.partitions_in_box(3,2) [[], [1], [2], [1, 1], [2, 1], [1, 1, 1], [2, 2], [2, 1, 1], [2, 2, 1], [2, 2, 2]]
-
sage.combinat.crystals.kirillov_reshetikhin.
vertical_dominoes_removed
(r, s)¶ Returns all partitions obtained from a rectangle of width s and height r by removing vertical dominoes.
EXAMPLES:
sage: sage.combinat.crystals.kirillov_reshetikhin.vertical_dominoes_removed(2,2) [[], [1, 1], [2, 2]] sage: sage.combinat.crystals.kirillov_reshetikhin.vertical_dominoes_removed(3,2) [[2], [2, 1, 1], [2, 2, 2]] sage: sage.combinat.crystals.kirillov_reshetikhin.vertical_dominoes_removed(4,2) [[], [1, 1], [1, 1, 1, 1], [2, 2], [2, 2, 1, 1], [2, 2, 2, 2]]