Kirillov-Reshetikhin Crystals¶
-
class
sage.combinat.crystals.kirillov_reshetikhin.
AmbientRetractMap
(base, ambient, pdict_inv, index_set, similarity_factor_domain=None, automorphism=None)¶ Bases:
sage.categories.map.Map
The retraction map from the ambient crystal.
Consider a crystal embedding \(\phi : X \to Y\), then the elements \(X\) can be considered as a subcrystal of the ambient crystal \(Y\). The ambient retract is the partial map \(\tilde{\phi} : Y \to X\) such that \(\tilde{\phi} \circ \phi\) is the identity on \(X\).
-
class
sage.combinat.crystals.kirillov_reshetikhin.
CrystalDiagramAutomorphism
(C, on_hw, index_set=None, automorphism=None, cache=True)¶ Bases:
sage.categories.crystals.CrystalMorphism
The crystal automorphism induced from the diagram automorphism.
For example, in type \(A_n^{(1)}\) this is the promotion operator and in type \(D_n^{(1)}\), this corresponds to the automorphism induced from interchanging the \(0\) and \(1\) nodes in the Dynkin diagram.
INPUT:
C
– a crystalon_hw
– a function for the images of theindex_set
-highest weight elementsindex_set
– (default: the empty set) the index setautomorphism
– (default: the identity) the twisting automorphismcache
– (default: True) cache the result
-
is_embedding
()¶ Return
True
asself
is a crystal isomorphism.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True
-
is_isomorphism
()¶ Return
True
asself
is a crystal isomorphism.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True
-
is_strict
()¶ Return
True
asself
is a crystal isomorphism.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True
-
is_surjective
()¶ Return
True
asself
is a crystal isomorphism.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True
-
sage.combinat.crystals.kirillov_reshetikhin.
CrystalOfTableaux_E7
¶ The type \(E_7\) crystal \(B(s\Lambda_7)\).
This is a helper class for the corresponding:class:\(KR crystal <sage.combinat.crystals.kirillov_reshetikhin.KR_type_E7>\) \(B^{7,s}\).
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_A
¶ Class of Kirillov-Reshetikhin crystals of type \(A_n^{(1)}\).
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]]
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_A2
¶ Class of Kirillov-Reshetikhin crystals \(B^{r,s}\) of type \(A_{2n}^{(2)}\) for \(1 \leq r \leq n\) in the realization with classical subalgebra \(B_n\). The Cartan type in this case is inputted as the dual of \(A_{2n}^{(2)}\).
This is an alternative implementation to
KR_type_box
that uses the classical decomposition into type \(C_n\) crystals.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 \(A_4^{(2)}\) (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
-
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 \(B^{r,s}\) of type \(A_{2n}^{(2)}\) for \(r<n\) with underlying classical algebra \(B_n\).
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
()¶ Return \(e_0\) on
self
by mappingself
to the ambient crystal, calculating \(e_1 e_0\) 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 \(\varepsilon_0\) 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
()¶ Return \(f_0\) on
self
by mappingself
to the ambient crystal, calculating \(f_1 f_0\) 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 \(\varphi_0\) of
self
by mapping the element to the ambient crystal and calculating \(\varphi_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.phi(0) # indirect doctest 1
-
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_Bn
¶ Class of Kirillov-Reshetikhin crystals \(B^{n,s}\) of type \(B_{n}^{(1)}\).
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]]
-
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 \(B^{n,s}\) of type \(B_n^{(1)}\).
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
()¶ Return \(e_0\) on
self
by mappingself
to the ambient crystal, calculating \(e_0\) 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 \(\varepsilon_0\) of
self
by mapping the element to the ambient crystal and calculating \(\varepsilon_0\) there.EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['B',3,1],3,1) sage: b = K.module_generators[0] sage: b.epsilon(0) # indirect doctest 1
-
f0
()¶ Return \(f_0\) on
self
by mappingself
to the ambient crystal, calculating \(f_0\) 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 \(\varphi_0\) of
self
by mapping the element to the ambient crystal and calculating \(\varphi_0\) there.EXAMPLES:
sage: K=crystals.KirillovReshetikhin(['B',3,1],3,1) sage: b = K.module_generators[0] sage: b.phi(0) # indirect doctest 0
-
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_C
¶ Class of Kirillov-Reshetikhin crystals \(B^{r,s}\) of type \(C_n^{(1)}\) for \(r < n\).
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]]
-
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 \(B^{r,s}\) of type \(C_n^{(1)}\) for \(r<n\).
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
()¶ Return \(e_0\) on
self
by mappingself
to the ambient crystal, calculating \(e_1 e_0\) 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 \(\varepsilon_0\) of
self
by mapping the element to the ambient crystal and calculating \(\varepsilon_1\) there.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',2,1], 1,2) sage: b=K(rows=[[1,1]]) sage: b.epsilon(0) # indirect doctest 2
-
f0
()¶ Return \(f_0\) on
self
by mappingself
to the ambient crystal, calculating \(f_1 f_0\) 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 \(\varphi_0\) of
self
by mapping the element to the ambient crystal and calculating \(\varphi_1\) there.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['C',2,1], 1,2) sage: b=K(rows=[[-1,-1]]) sage: b.phi(0) # indirect doctest 2
-
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_Cn
¶ Class of Kirillov-Reshetikhin crystals \(B^{n,s}\) of type \(C_n^{(1)}\).
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]]]]
-
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 \(B^{n,s}\) of type \(C_n^{(1)}\).
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
()¶ Return \(e_0\) on
self
by going to the \(\pm\)-diagram corresponding to the \(\{2,...,n\}\)-highest weight vector in the component ofself
, then applying [Definition 6.1, 4], and pulling back from \(\pm\)-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 \(\varepsilon_0\) 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
()¶ Return \(e_0\) on
self
by going to the \(\pm\)-diagram corresponding to the \(\{2,...,n\}\)-highest weight vector in the component ofself
, then applying [Definition 6.1, 4], and pulling back from \(\pm\)-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 \(\varphi_0\) 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
-
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_D_tri1
¶ Class of Kirillov-Reshetikhin crystals \(B^{1,s}\) of type \(D_4^{(3)}\).
The crystal structure was defined in Section 4 of [KMOY2007] using the coordinate representation.
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_Dn_twisted
¶ Class of Kirillov-Reshetikhin crystals \(B^{n,s}\) of type \(D_{n+1}^{(2)}\).
EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',4,2],3,1) sage: [[b,b.f(0)] for b in K] [[[+++, []], None], [[++-, []], None], [[+-+, []], None], [[-++, []], [+++, []]], [[+--, []], None], [[-+-, []], [++-, []]], [[--+, []], [+-+, []]], [[---, []], [+--, []]]]
-
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 \(B^{n,s}\) of type \(D_{n+1}^{(2)}\).
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
()¶ Return \(e_0\) on
self
by going to the \(\pm\)-diagram corresponding to the \(\{2,\ldots,n\}\)-highest weight vector in the component ofself
, then applying [Definition 6.2, 4], and pulling back from \(\pm\)-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 \(\varepsilon_0\) 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
()¶ Return \(e_0\) on
self
by going to the \(\pm\)-diagram corresponding to the \(\{2,\ldots,n\}\)-highest weight vector in the component ofself
, then applying [Definition 6.2, 4], and pulling back from \(\pm\)-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 \(\varphi_0\) 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
-
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_E6
¶ Class of Kirillov-Reshetikhin crystals of type \(E_6^{(1)}\) for \(r=1,2,6\).
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) []
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_E7
¶ The Kirillov-Reshetikhin crystal \(B^{7,s}\) of type \(E_7^{(1)}\).
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_box
¶ Class of Kirillov-Reshetikhin crystals \(B^{r,s}\) of type \(A_{2n}^{(2)}\) for \(r\le n\) and type \(D_{n+1}^{(2)}\) for \(r<n\).
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]]
-
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 \(B^{r,s}\) of type \(A_{2n}^{(2)}\) for \(r \leq n\) and type \(D_{n+1}^{(2)}\) for \(r < n\).
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
()¶ Return \(e_0\) on
self
by mappingself
to the ambient crystal, calculating \(e_0\) 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
()¶ Return \(\varepsilon_0\) of
self
by mapping the element to the ambient crystal and calculating \(\varepsilon_0\) there.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['A',4,2], 1,1) sage: b = K(rows=[[1]]) sage: b.epsilon(0) # indirect doctest 2
-
f0
()¶ Return \(f_0\) on
self
by mappingself
to the ambient crystal, calculating \(f_0\) 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
()¶ Return \(\varphi_0\) of
self
by mapping the element to the ambient crystal and calculating \(\varphi_0\) there.EXAMPLES:
sage: K = crystals.KirillovReshetikhin(['D',3,2], 1,1) sage: b = K(rows=[[-1]]) sage: b.phi(0) # indirect doctest 2
-
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_spin
¶ Class of Kirillov-Reshetikhin crystals \(B^{n,s}\) of type \(D_n^{(1)}\).
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]]]]
-
sage.combinat.crystals.kirillov_reshetikhin.
KR_type_vertical
¶ Class of Kirillov-Reshetikhin crystals \(B^{r,s}\) of type \(D_n^{(1)}\) for \(r \le n-2\), \(B_n^{(1)}\) for \(r < n\), and \(A_{2n-1}^{(2)}\) for \(r \le n\).
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]]]]
-
sage.combinat.crystals.kirillov_reshetikhin.
KashiwaraNakashimaTableaux
(cartan_type, r, s)¶ Return the Kashiwara-Nakashima model for the Kirillov-Reshetikhin crystal \(B^{r,s}\) 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 \(p\) on the level of crystals which corresponds to a Dynkin diagram automorphism mapping node 0 to some other node \(i\). The action of \(f_0\) and \(e_0\) is then constructed using \(f_0 = p^{-1} \circ f_i \circ p\).
For example, for type \(A_n^{(1)}\) the Kirillov-Reshetikhin crystal \(B^{r,s}\) is obtained from the classical crystal \(B(s \omega_r)\) using the promotion operator. For other types, see [Shi2002], [Sch2008], and [JS2010].
Other Kirillov-Reshetikhin crystals are constructed using similarity methods. See Section 4 of [FOS2009].
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 \(B^{r,s}\) 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 for \(s = 1\) from crystals ofLS 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 [LOS2012].
REFERENCES:
-
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 \(\Lambda_r\). For other implementation seeKirillovReshetikhinCrystal()
.EXAMPLES:
sage: K = crystals.kirillov_reshetikhin.LSPaths(['A',2,1],2) # indirect doctest 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
-
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinCrystalFromPromotion
¶ This generic class assumes that the Kirillov-Reshetikhin crystal is constructed from a classical crystal using the
classical_decomposition
and an automorphismpromotion
and its inverse, which corresponds to a Dynkin diagram automorphismdynkin_diagram_automorphism
.Each instance using this class needs to implement the methods:
classical_decomposition
promotion
promotion_inverse
dynkin_diagram_automorphism
-
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.
-
sage.combinat.crystals.kirillov_reshetikhin.
KirillovReshetikhinGenericCrystal
¶ Generic class for Kirillov-Reshetikhin crystal \(B^{r,s}\) of the given type.
Input is a Dynkin node
r
, a positive integers
, and a Cartan typecartan_type
.
-
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 \(\lambda\) be the shape of
self
. - Determine a path \(e_{i_1} e_{i_2} \cdots e_{i_k}\) to the highest weight.
- Apply \(f_{i_k} \cdots f_{i_2} f_{i_1}\) to a highest weight KR tableau from filling the shape \(\lambda\).
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 \(\lambda\) be the shape of
-
-
class
sage.combinat.crystals.kirillov_reshetikhin.
PMDiagram
(pm_diagram, from_shapes=None)¶ Bases:
sage.combinat.combinat.CombinatorialObject
Class of \(\pm\) diagrams. These diagrams are in one-to-one bijection with \(X_{n-1}\) highest weight vectors in an \(X_n\) highest weight crystal \(X=B,C,D\). See Section 4.1 of [Sch2008].
The input is a list \(pm = [[a_0,b_0], [a_1,b_1], ..., [a_{n-1},b_{n-1}], [b_n]]\) of pairs and a last 1-tuple (or list of length 1). The pair \([a_i,b_i]\) specifies the number of \(a_i\) \(+\) and \(b_i\) \(-\) in the \(i\)-th row of the \(\pm\) diagram if \(n-i\) is odd and the number of \(a_i\) \(\pm\) pairs above row \(i\) and \(b_i\) columns of height \(i\) not containing any \(+\) or \(-\) if \(n-i\) is even.
Setting the option
from_shapes = True
one can also input a \(\pm\) diagram in terms of its outer, intermediate, and inner shape by specifying a list[n, s, outer, intermediate, inner]
wheres
is the width of the \(\pm\) diagram, andouter
,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]]
-
heights_of_addable_plus
()¶ Return a list with the heights of all addable plus in the \(\pm\) 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 \(\pm\) 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 \(\pm\) 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 \(0\) and \(1\) for type \(D_n(1)\), \(B_n(1)\), \(A_{2n-1}(2)\) 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]]