Kirillov-Reshetikhin Crystals¶
- class sage.combinat.crystals.kirillov_reshetikhin.AmbientRetractMap(base, ambient, pdict_inv, index_set, similarity_factor_domain=None, automorphism=None)[source]¶
- Bases: - 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)[source]¶
- Bases: - 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 crystal
- on_hw– a function for the images of the- index_set-highest weight elements
- index_set– (default: the empty set) the index set
- automorphism– (default: the identity) the twisting automorphism
- cache– boolean (default:- True); cache the result
 - is_embedding()[source]¶
- Return - Trueas- selfis a crystal isomorphism.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.promotion().is_isomorphism() True 
 - is_isomorphism()[source]¶
- Return - Trueas- selfis a crystal isomorphism.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.promotion().is_isomorphism() True 
 - is_strict()[source]¶
- Return - Trueas- selfis a crystal isomorphism.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.promotion().is_isomorphism() True 
 - is_surjective()[source]¶
- Return - Trueas- selfis a crystal isomorphism.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['A',3,1], 2,2) sage: K.promotion().is_isomorphism() True - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.promotion().is_isomorphism() True 
 
- class sage.combinat.crystals.kirillov_reshetikhin.CrystalOfTableaux_E7(cartan_type, shapes)[source]¶
- Bases: - CrystalOfTableaux- 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}\). - module_generator(shape)[source]¶
- Return the module generator of - selfwith shape- shape.- Note - Only implemented for single rows (i.e., highest weight \(s\Lambda_7\)). - EXAMPLES: - sage: from sage.combinat.crystals.kirillov_reshetikhin import CrystalOfTableaux_E7 sage: T = CrystalOfTableaux_E7(CartanType(['E',7]), shapes=(Partition([5]),)) sage: T.module_generator([5]) [[(7,), (7,), (7,), (7,), (7,)]] - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import CrystalOfTableaux_E7 >>> T = CrystalOfTableaux_E7(CartanType(['E',Integer(7)]), shapes=(Partition([Integer(5)]),)) >>> T.module_generator([Integer(5)]) [[(7,), (7,), (7,), (7,), (7,)]] 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_A(cartan_type, r, s)[source]¶
- Bases: - KirillovReshetikhinCrystalFromPromotion- 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> b = K(rows=[[Integer(1),Integer(2)],[Integer(2),Integer(4)]]) >>> b.f(Integer(0)) [[1, 1], [2, 2]] - classical_decomposition()[source]¶
- 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.classical_decomposition() The crystal of tableaux of type ['A', 3] and shape(s) [[2, 2]] 
 - dynkin_diagram_automorphism(i)[source]¶
- 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 \(i \mapsto 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.dynkin_diagram_automorphism(Integer(0)) 1 >>> K.dynkin_diagram_automorphism(Integer(3)) 0 
 - promotion()[source]¶
- Specifies the promotion operator used to construct the affine type \(A\) crystal. - For type \(A\) this corresponds to the Dynkin diagram automorphism which \(i \mapsto 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> b = K.classical_decomposition()(rows=[[Integer(1),Integer(2)],[Integer(3),Integer(4)]]) >>> K.promotion()(b) [[1, 3], [2, 4]] 
 - promotion_inverse()[source]¶
- Specifies the inverse promotion operator used to construct the affine type \(A\) crystal. - For type \(A\) this corresponds to the Dynkin diagram automorphism which \(i \mapsto 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> b = K.classical_decomposition()(rows=[[Integer(1),Integer(3)],[Integer(2),Integer(4)]]) >>> K.promotion_inverse()(b) [[1, 2], [3, 4]] >>> b = K.classical_decomposition()(rows=[[Integer(1),Integer(2)],[Integer(3),Integer(3)]]) >>> 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)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal- 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_boxthat 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) - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(1)) >>> K Kirillov-Reshetikhin crystal of type ['BC', 2, 2]^* with (r,s)=(1,1) >>> b = K(rows=[[-Integer(1)]]) >>> b.f(Integer(0)) [[1]] >>> b.e(Integer(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(sort=True)); Gnew.add_edges([(u,v,f[i]) for (u,v,i) in Gdual.edges(sort=True)]) sage: G.is_isomorphic(Gnew, edge_labels = True) True - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]) >>> K = crystals.KirillovReshetikhin(C,Integer(1),Integer(1)) >>> Kdual = crystals.KirillovReshetikhin(C.dual(),Integer(1),Integer(1)) >>> G = K.digraph() >>> Gdual = Kdual.digraph() >>> f = {Integer(0):Integer(2), Integer(1):Integer(1), Integer(2):Integer(0)} >>> Gnew = DiGraph(); Gnew.add_vertices(Gdual.vertices(sort=True)); Gnew.add_edges([(u,v,f[i]) for (u,v,i) in Gdual.edges(sort=True)]) >>> G.is_isomorphic(Gnew, edge_labels = True) True - Element[source]¶
- alias of - KR_type_A2Element
 - ambient_crystal()[source]¶
- Return the ambient crystal \(B^{r,s}\) of type \(B_{n+1}^{(1)}\) associated to the Kirillov-Reshetikhin crystal of type \(A_{2n}^{(2)}\) 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) - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(2), Integer(3)) >>> K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['B', 3, 1] with (r,s)=(2,3) 
 - ambient_dict_pm_diagrams()[source]¶
- Return a dictionary of all self-dual \(\pm\) diagrams for the ambient crystal whose keys are 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]]} - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(1)) >>> K.ambient_dict_pm_diagrams() {[1]: [[0, 0], [1]]} >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(2)) >>> K.ambient_dict_pm_diagrams() {[]: [[1, 1], [0]], [2]: [[0, 0], [2]]} >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(2), Integer(2)) >>> 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()[source]¶
- Return a dictionary of all \(\{2,\ldots,n+1\}\)-highest weight vectors in the ambient crystal. - The key is the inner shape of their corresponding \(\pm\) diagram, or equivalently, their \(\{2,\ldots,n+1\}\) 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]]} - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(2)) >>> K.ambient_highest_weight_dict() {[]: [[1, -1]], [2]: [[2, 2]]} 
 - classical_decomposition()[source]¶
- Return the classical crystal underlying the Kirillov-Reshetikhin crystal of type \(A_{2n}^{(2)}\) with \(B_n\) as classical subdiagram. - It is given by \(B^{r,s} \cong \bigoplus_{\Lambda} B(\Lambda)\), where \(B(\Lambda)\) is a highest weight crystal of type \(B_n\) of highest weight \(\Lambda\). The sum is over all weights \(\Lambda\) obtained from a rectangle of width \(s\) and height \(r\) by removing horizontal dominoes. Here we identify the fundamental weight \(\Lambda_i\) with a column of height \(i\). - 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 sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(2), Integer(2)) >>> K.classical_decomposition() The crystal of tableaux of type ['B', 2] and shape(s) [[], [2], [2, 2]] 
 - from_ambient_crystal()[source]¶
- Return a map from the ambient crystal of type \(B_{n+1}^{(1)}\) to the Kirillov-Reshetikhin crystal of type \(A_{2n}^{(2)}\). - Note that this map is only well-defined on type \(A_{2n}^{(2)}\) 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]] - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(2)) >>> b = K.ambient_crystal()(rows=[[Integer(2),Integer(2)]]) >>> K.from_ambient_crystal()(b) [[1, 1]] 
 - highest_weight_dict()[source]¶
- Return a dictionary of the classical highest weight vectors of - selfwhose keys are 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]]} - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(2)) >>> K.highest_weight_dict() {[]: [], [2]: [[1, 1]]} 
 - module_generator()[source]¶
- Return the unique module generator of classical weight \(s \Lambda_r\) of a Kirillov-Reshetikhin crystal \(B^{r,s}\). - EXAMPLES: - sage: ct = CartanType(['A',8,2]).dual() sage: K = crystals.KirillovReshetikhin(ct, 3, 5) sage: K.module_generator() [[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3]] - >>> from sage.all import * >>> ct = CartanType(['A',Integer(8),Integer(2)]).dual() >>> K = crystals.KirillovReshetikhin(ct, Integer(3), Integer(5)) >>> K.module_generator() [[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3]] 
 - to_ambient_crystal()[source]¶
- Return a map from the Kirillov-Reshetikhin crystal of type \(A_{2n}^{(2)}\) to the ambient crystal of type \(B_{n+1}^{(1)}\). - 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) - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(2)) >>> b=K(rows=[[Integer(1),Integer(1)]]) >>> K.to_ambient_crystal()(b) [[2, 2]] >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(2), Integer(2)) >>> b=K(rows=[[Integer(1),Integer(1)]]) >>> K.to_ambient_crystal()(b) [[1, 2], [2, -1]] >>> 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[source]¶
- Bases: - 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'> - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(2)) >>> type(K.module_generators[Integer(0)]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2_with_category.element_class'> - e0()[source]¶
- Return \(e_0\) on - selfby mapping- selfto 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]] - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(1)) >>> b = K(rows=[[Integer(1)]]) >>> b.e(Integer(0)) # indirect doctest [[-1]] 
 - epsilon0()[source]¶
- Calculate \(\varepsilon_0\) of - selfby mapping the element to the ambient crystal and calculating- \varepsilon_1there.- 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 - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(1)) >>> b=K(rows=[[Integer(1)]]) >>> b.epsilon(Integer(0)) # indirect doctest 1 
 - f0()[source]¶
- Return \(f_0\) on - selfby mapping- selfto 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]] - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(1)) >>> b = K(rows=[[-Integer(1)]]) >>> b.f(Integer(0)) # indirect doctest [[1]] 
 - phi0()[source]¶
- Calculate \(\varphi_0\) of - selfby 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 - >>> from sage.all import * >>> C = CartanType(['A',Integer(4),Integer(2)]).dual() >>> K = sage.combinat.crystals.kirillov_reshetikhin.KR_type_A2(C, Integer(1), Integer(1)) >>> b = K(rows=[[-Integer(1)]]) >>> b.phi(Integer(0)) # indirect doctest 1 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_Bn(cartan_type, r, s, dual=None)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal- 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> K Kirillov-Reshetikhin crystal of type ['B', 3, 1] with (r,s)=(3,2) >>> b = K(rows=[[Integer(1)],[Integer(2)],[Integer(3)]]) >>> b.f(Integer(0)) >>> b.e(Integer(0)) [[3]] >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> [b.weight() for b in K if b.is_highest_weight([Integer(1),Integer(2),Integer(3)])] [-Lambda[0] + Lambda[1], -2*Lambda[0] + 2*Lambda[3]] >>> [b.weight() for b in K if b.is_highest_weight([Integer(0),Integer(2),Integer(3)])] [Lambda[0] - Lambda[1], -2*Lambda[1] + 2*Lambda[3]] - Element[source]¶
- alias of - KR_type_BnElement
 - ambient_crystal()[source]¶
- Return the ambient crystal \(B^{n,s}\) of type \(A_{2n-1}^{(2)}\) associated to the Kirillov-Reshetikhin crystal. - The 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) - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['B', 3, 1]^* with (r,s)=(3,2) 
 - ambient_highest_weight_dict()[source]¶
- Return a dictionary of the classical highest weight vectors of the ambient crystal of - selfwhose keys are 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]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> K.ambient_highest_weight_dict() {(2,): [[1, 1]], (2, 1, 1): [[1, 1], [2], [3]], (2, 2, 2): [[1, 1], [2, 2], [3, 3]]} >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(3)) >>> 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()[source]¶
- Return the classical crystal underlying the Kirillov-Reshetikhin crystal \(B^{n,s}\) of type \(B_n^{(1)}\). - It is the same as for \(r < n\), given by \(B^{n,s} \cong \bigoplus_{\Lambda} B(\Lambda)\), where \(\Lambda\) are weights obtained from a rectangle of width \(s/2\) and height \(n\) by removing horizontal dominoes. Here we identify the fundamental weight \(\Lambda_i\) with a column of height \(i\) for \(i<n\) and a column of width \(1/2\) for \(i=n\). - 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)], Integer(3), Integer(2)) >>> K.classical_decomposition() The crystal of tableaux of type ['B', 3] and shape(s) [[1], [1, 1, 1]] >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)], Integer(3), Integer(3)) >>> 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()[source]¶
- Return a map from the ambient crystal of type \(A_{2n-1}^{(2)}\) 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) [++-, []] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(1)) >>> [b == K.from_ambient_crystal()(K.to_ambient_crystal()(b)) for b in K] [True, True, True, True, True, True, True, True] >>> b = K.ambient_crystal()(rows=[[Integer(1)],[Integer(2)],[-Integer(3)]]) >>> K.from_ambient_crystal()(b) [++-, []] 
 - highest_weight_dict()[source]¶
- Return a dictionary of the classical highest weight vectors of - selfwhose keys are 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]]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> K.highest_weight_dict() {(2,): [[1]], (2, 2, 2): [[1], [2], [3]]} >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(3)) >>> K.highest_weight_dict() {(3, 1, 1): [+++, [[1]]], (3, 3, 3): [+++, [[1], [2], [3]]]} 
 - similarity_factor()[source]¶
- Set 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} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> K.similarity_factor() {1: 2, 2: 2, 3: 1} 
 - to_ambient_crystal()[source]¶
- Return a map from - selfto the ambient crystal of type \(A_{2n-1}^{(2)}\).- 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]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(1)) >>> [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[source]¶
- Bases: - 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'> - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B', Integer(3), Integer(1)], Integer(3), Integer(2)) >>> type(K.module_generators[Integer(0)]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_Bn_with_category.element_class'> - e0()[source]¶
- Return \(e_0\) on - selfby mapping- selfto 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 [--+, []] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(3),Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.e(Integer(0)) # indirect doctest [--+, []] 
 - epsilon0()[source]¶
- Calculate \(\varepsilon_0\) of - selfby 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B', Integer(3), Integer(1)], Integer(3), Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.epsilon(Integer(0)) # indirect doctest 1 
 - f0()[source]¶
- Return \(f_0\) on - selfby mapping- selfto 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B', Integer(3), Integer(1)], Integer(3), Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.f(Integer(0)) # indirect doctest 
 - phi0()[source]¶
- Calculate \(\varphi_0\) of - selfby 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['B', Integer(3), Integer(1)], Integer(3), Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.phi(Integer(0)) # indirect doctest 0 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_C(cartan_type, r, s, dual=None)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal- 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(2),Integer(1)], Integer(1),Integer(2)) >>> K Kirillov-Reshetikhin crystal of type ['C', 2, 1] with (r,s)=(1,2) >>> b = K(rows=[]) >>> b.f(Integer(0)) [[1, 1]] >>> b.e(Integer(0)) [[-1, -1]] - Element[source]¶
- alias of - KR_type_CElement
 - ambient_crystal()[source]¶
- Return the ambient crystal \(B^{r,s}\) of type \(A_{2n+1}^{(2)}\) associated to the Kirillov-Reshetikhin crystal of type \(C_n^{(1)}\). - 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) - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(3)) >>> K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['B', 4, 1]^* with (r,s)=(2,3) 
 - ambient_dict_pm_diagrams()[source]¶
- Return a dictionary of all self-dual \(\pm\) diagrams for the ambient crystal whose keys are 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]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(2),Integer(1)], Integer(1),Integer(2)) >>> K.ambient_dict_pm_diagrams() {[]: [[1, 1], [0]], [2]: [[0, 0], [2]]} >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.ambient_dict_pm_diagrams() {[]: [[1, 1], [0, 0], [0]], [2]: [[0, 0], [1, 1], [0]], [2, 2]: [[0, 0], [0, 0], [2]]} >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(3)) >>> 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()[source]¶
- Return a dictionary of all \(\{2,\ldots,n+1\}\)-highest weight vectors in the ambient crystal. - The key is the inner shape of their corresponding \(\pm\) diagram, or equivalently, their \(\{2,\ldots,n+1\}\) 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]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.ambient_highest_weight_dict() {[]: [[2], [-2]], [2]: [[1, 2], [2, -1]], [2, 2]: [[2, 2], [3, 3]]} 
 - classical_decomposition()[source]¶
- Return the classical crystal underlying the Kirillov-Reshetikhin crystal of type \(C_n^{(1)}\). - It is given by \(B^{r,s} \cong \bigoplus_{\Lambda} B(\Lambda)\), where \(\Lambda\) are weights obtained from a rectangle of width \(s\) and height \(r\) by removing horizontal dominoes. Here we identify the fundamental weight \(\Lambda_i\) with a column of height \(i\). - 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.classical_decomposition() The crystal of tableaux of type ['C', 3] and shape(s) [[], [2], [2, 2]] 
 - from_ambient_crystal()[source]¶
- Return a map from the ambient crystal of type \(A_{2n+1}^{(2)}\) to the Kirillov-Reshetikhin crystal of type \(C_n^{(1)}\). - Note that this map is only well-defined on type \(C_n^{(1)}\) 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> b = K.ambient_crystal()(rows=[[Integer(2),Integer(2)],[Integer(3),Integer(3)]]) >>> K.from_ambient_crystal()(b) [[1, 1], [2, 2]] 
 - highest_weight_dict()[source]¶
- Return a dictionary of the classical highest weight vectors of - selfwhose keys are 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]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.highest_weight_dict() {[]: [], [2]: [[1, 1]], [2, 2]: [[1, 1], [2, 2]]} 
 - to_ambient_crystal()[source]¶
- Return a map from the Kirillov-Reshetikhin crystal of type \(C_n^{(1)}\) to the ambient crystal of type \(A_{2n+1}^{(2)}\). - 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) - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> b=K(rows=[[Integer(1),Integer(1)]]) >>> K.to_ambient_crystal()(b) [[1, 2], [2, -1]] >>> b=K(rows=[]) >>> K.to_ambient_crystal()(b) [[2], [-2]] >>> 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[source]¶
- Bases: - 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'> - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C', Integer(3), Integer(1)], Integer(1), Integer(2)) >>> type(K.module_generators[Integer(0)]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_C_with_category.element_class'> - e0()[source]¶
- Return \(e_0\) on - selfby mapping- selfto 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C', Integer(3), Integer(1)], Integer(1), Integer(2)) >>> b = K(rows=[]) >>> b.e(Integer(0)) # indirect doctest [[-1, -1]] 
 - epsilon0()[source]¶
- Calculate \(\varepsilon_0\) of - selfby 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(2),Integer(1)], Integer(1),Integer(2)) >>> b=K(rows=[[Integer(1),Integer(1)]]) >>> b.epsilon(Integer(0)) # indirect doctest 2 
 - f0()[source]¶
- Return \(f_0\) on - selfby mapping- selfto 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C', Integer(3), Integer(1)], Integer(1), Integer(2)) >>> b = K(rows=[]) >>> b.f(Integer(0)) # indirect doctest [[1, 1]] 
 - phi0()[source]¶
- Calculate \(\varphi_0\) of - selfby 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(2),Integer(1)], Integer(1),Integer(2)) >>> b=K(rows=[[-Integer(1),-Integer(1)]]) >>> b.phi(Integer(0)) # indirect doctest 2 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_Cn(cartan_type, r, s, dual=None)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal- 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]]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)],Integer(3),Integer(1)) >>> [[b,b.f(Integer(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[source]¶
- alias of - KR_type_CnElement
 - classical_decomposition()[source]¶
- Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal \(B^{n,s}\) of type \(C_n^{(1)}\). - The classical decomposition is given by \(B^{n,s} \cong B(s \Lambda_n)\). - 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> 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)[source]¶
- This gives the bijection between an element - bin the classical decomposition of the KR crystal that is \({2,3,..,n}\)-highest weight and \(\pm\) 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> T = K.classical_decomposition() >>> b = T(rows=[[Integer(2), Integer(2)], [Integer(3), Integer(3)], [-Integer(3), -Integer(1)]]) >>> pm = K.from_highest_weight_vector_to_pm_diagram(b); pm [[0, 0], [1, 0], [0, 1], [0]] >>> pm.pp() . . . + - - >>> hw = [ b for b in T if all(b.epsilon(i)==Integer(0) for i in [Integer(2),Integer(3)]) ] >>> 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)[source]¶
- This gives the bijection between a \(\pm\) diagram and an element - bin 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)],Integer(3),Integer(2)) >>> pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[Integer(0), Integer(0)], [Integer(1), Integer(0)], [Integer(0), Integer(1)], [Integer(0)]]) >>> K.from_pm_diagram_to_highest_weight_vector(pm) [[2, 2], [3, 3], [-3, -1]] 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_CnElement[source]¶
- Bases: - 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'> - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C', Integer(3), Integer(1)], Integer(3), Integer(2)) >>> type(K.module_generators[Integer(0)]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_Cn_with_category.element_class'> - e0()[source]¶
- Return \(e_0\) on - selfby going to the \(\pm\)-diagram corresponding to the \(\{2,...,n\}\)-highest weight vector in the component of- self, 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C', Integer(3), Integer(1)], Integer(3), Integer(2)) >>> b = K.module_generators[Integer(0)] >>> b.e(Integer(0)) # indirect doctest [[1, 2], [2, 3], [3, -1]] >>> b = K(rows=[[Integer(1),Integer(2)],[Integer(2),Integer(3)],[Integer(3),-Integer(1)]]) >>> b.e(Integer(0)) [[2, 2], [3, 3], [-1, -1]] >>> b=K(rows=[[Integer(1), -Integer(3)], [Integer(3), -Integer(2)], [-Integer(3), -Integer(1)]]) >>> b.e(Integer(0)) [[3, -3], [-3, -2], [-1, -1]] 
 - epsilon0()[source]¶
- Calculate \(\varepsilon_0\) of - selfusing 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C', Integer(3), Integer(1)], Integer(3), Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.epsilon(Integer(0)) # indirect doctest 1 
 - f0()[source]¶
- Return \(e_0\) on - selfby going to the \(\pm\)-diagram corresponding to the \(\{2,...,n\}\)-highest weight vector in the component of- self, 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)],Integer(3),Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.f(Integer(0)) # indirect doctest 
 - phi0()[source]¶
- 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C', Integer(3), Integer(1)], Integer(3), Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.phi(Integer(0)) # indirect doctest 0 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_D_tri1(ct, s)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal- 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. - class Element[source]¶
- Bases: - KirillovReshetikhinGenericCrystalElement- coordinates()[source]¶
- Return - selfas coordinates.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['D',4,3], 1, 3) sage: all(K.from_coordinates(x.coordinates()) == x for x in K) True - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(3)], Integer(1), Integer(3)) >>> all(K.from_coordinates(x.coordinates()) == x for x in K) True 
 - e0()[source]¶
- Return the action of \(e_0\) 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] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(3)], Integer(1),Integer(1)) >>> [x.e0() for x in K] [[[-1]], [], [[-3]], [[-2]], None, None, None, None] 
 - epsilon0()[source]¶
- Return \(\varepsilon_0\) 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] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(3)], Integer(1), Integer(5)) >>> [mg.epsilon0() for mg in K.module_generators] [5, 6, 7, 8, 9, 10] 
 - f0()[source]¶
- Return the action of \(f_0\) 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]], []] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(3)], Integer(1),Integer(1)) >>> [x.f0() for x in K] [[[1]], None, None, None, None, [[2]], [[3]], []] 
 - phi0()[source]¶
- Return \(\varphi_0\) 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] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(3)], Integer(1), Integer(5)) >>> [mg.phi0() for mg in K.module_generators] [5, 4, 3, 2, 1, 0] 
 
 - classical_decomposition()[source]¶
- 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(3)], Integer(1), Integer(5)) >>> K.classical_decomposition() The crystal of tableaux of type ['G', 2] and shape(s) [[], [1], [2], [3], [4], [5]] 
 - from_coordinates(coords)[source]¶
- Return an element of - selffrom the coordinates- coords.- 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(3)], Integer(1), Integer(5)) >>> K.from_coordinates((Integer(0), Integer(2), Integer(3), Integer(1), Integer(0), Integer(1))) [[2, 2, 3, 0, -1]] 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_Dn_twisted(cartan_type, r, s, dual=None)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal- 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], [[-+-, []], [++-, []]], [[--+, []], [+-+, []]], [[---, []], [+--, []]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(1)) >>> [[b,b.f(Integer(0))] for b in K] [[[+++, []], None], [[++-, []], None], [[+-+, []], None], [[-++, []], [+++, []]], [[+--, []], None], [[-+-, []], [++-, []]], [[--+, []], [+-+, []]], [[---, []], [+--, []]]] - Element[source]¶
- alias of - KR_type_Dn_twistedElement
 - classical_decomposition()[source]¶
- Return the classical crystal underlying the Kirillov-Reshetikhin crystal \(B^{n,s}\) of type \(D_{n+1}^{(2)}\). - The classical decomposition is given by \(B^{n,s} \cong B(s \Lambda_n)\). - 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(1)) >>> K.classical_decomposition() The crystal of tableaux of type ['B', 3] and shape(s) [[1/2, 1/2, 1/2]] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(2)) >>> 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)[source]¶
- This gives the bijection between an element - bin the classical decomposition of the KR crystal that is \(\{2,3,\ldots,n\}\)-highest weight and \(\pm\) 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]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(1)) >>> T = K.classical_decomposition() >>> hw = [ b for b in T if all(b.epsilon(i)==Integer(0) for i in [Integer(2),Integer(3)]) ] >>> [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]]] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(2)) >>> T = K.classical_decomposition() >>> hw = [ b for b in T if all(b.epsilon(i)==Integer(0) for i in [Integer(2),Integer(3)]) ] >>> [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 \(B_n\), there can be (at most one) entry \(0\) in the \(\{2,3,\ldots,n\}\)-highest weight elements at height \(n\). In the following implementation this is realized as an empty column of height \(n\) since this uniquely specifies the existence of the \(0\). - EXAMPLES: - sage: b = hw[1] sage: pm = K.from_highest_weight_vector_to_pm_diagram(b) sage: pm.pp() . . . . . . - >>> from sage.all import * >>> b = hw[Integer(1)] >>> pm = K.from_highest_weight_vector_to_pm_diagram(b) >>> pm.pp() . . . . . . 
 - from_pm_diagram_to_highest_weight_vector(pm)[source]¶
- This gives the bijection between a \(\pm\) diagram and an element - bin the classical decomposition of the KR crystal that is \(\{2,3,\ldots,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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(2)) >>> pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[Integer(0), Integer(0)], [Integer(0), Integer(0)], [Integer(0), Integer(0)], [Integer(2)]]) >>> K.from_pm_diagram_to_highest_weight_vector(pm) [[2], [3], [0]] 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_Dn_twistedElement[source]¶
- Bases: - 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'> - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D', Integer(4), Integer(2)], Integer(3), Integer(2)) >>> type(K.module_generators[Integer(0)]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_Dn_twisted_with_category.element_class'> - e0()[source]¶
- Return \(e_0\) on - selfby going to the \(\pm\)-diagram corresponding to the \(\{2,\ldots,n\}\)-highest weight vector in the component of- self, 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]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D', Integer(4), Integer(2)], Integer(3), Integer(3)) >>> b = K.module_generators[Integer(0)] >>> b.e(Integer(0)) # indirect doctest [+++, [[2], [3], [0]]] 
 - epsilon0()[source]¶
- Calculate \(\varepsilon_0\) of - selfusing 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D', Integer(4), Integer(2)], Integer(3), Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.epsilon(Integer(0)) # indirect doctest 1 
 - f0()[source]¶
- Return \(e_0\) on - selfby going to the \(\pm\)-diagram corresponding to the \(\{2,\ldots,n\}\)-highest weight vector in the component of- self, 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(2)) >>> b = K.module_generators[Integer(0)] >>> b.f(Integer(0)) # indirect doctest 
 - phi0()[source]¶
- 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)],Integer(3),Integer(1)) >>> b = K.module_generators[Integer(0)] >>> b.phi(Integer(0)) # indirect doctest 0 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_E6(cartan_type, r, s)[source]¶
- Bases: - KirillovReshetikhinCrystalFromPromotion- 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 = next(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) sage: b [(-1, 3)] sage: b.e(0) [(-1, -2, 3)] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> K.module_generator().e(Integer(0)) [] >>> K.module_generator().e(Integer(0)).f(Integer(0)) [[(2, -1), (1,)]] >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)], Integer(1),Integer(1)) >>> b = K.module_generator() >>> b [(1,)] >>> b.e(Integer(0)) [(-2, 1)] >>> b = next(t for t in K if t.epsilon(Integer(1)) == Integer(1) and t.phi(Integer(3)) == Integer(1) and t.phi(Integer(2)) == Integer(0) and t.epsilon(Integer(2)) == Integer(0)) >>> b [(-1, 3)] >>> b.e(Integer(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) [] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> La = K.cartan_type().classical().root_system().weight_lattice().fundamental_weights() >>> H = crystals.HighestWeight(La[Integer(2)]) >>> t = H.module_generator() >>> t [[(2, -1), (1,)]] >>> type(K.retract(t)) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_E6_with_category.element_class'> >>> K.retract(t).e(Integer(0)) [] - affine_weight(b)[source]¶
- Return the affine level zero weight corresponding to the element - bof the classical crystal underlying- self.- For the coefficients to calculate the level, see Table Aff 1 in [Ka1990]. - 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)] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> [K.affine_weight(x.lift()) for x in K ... if all(x.epsilon(i) == Integer(0) for i in [Integer(2),Integer(3),Integer(4),Integer(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)[source]¶
- Act with the Dynkin diagram automorphism on affine weights as outputted by the - affine_weightmethod.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: sorted([x[0], K.automorphism_on_affine_weight(x[0])] ....: for x in K.highest_weight_dict().values()) [[(-2, 0, 1, 0, 0, 0, 0), (0, -2, 0, 1, 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)], [(0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 0)], [(0, 0, 0, 0, 0, 1, -2), (-2, 0, 1, 0, 0, 0, 0)]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> sorted([x[Integer(0)], K.automorphism_on_affine_weight(x[Integer(0)])] ... for x in K.highest_weight_dict().values()) [[(-2, 0, 1, 0, 0, 0, 0), (0, -2, 0, 1, 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)], [(0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 0)], [(0, 0, 0, 0, 0, 1, -2), (-2, 0, 1, 0, 0, 0, 0)]] 
 - classical_decomposition()[source]¶
- Specifies the classical crystal underlying the KR crystal of type \(E_6^{(1)}\). - 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],) - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)], Integer(2),Integer(2)) >>> 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]) >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)], Integer(1),Integer(2)) >>> 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)[source]¶
- Specifies the Dynkin diagram automorphism underlying the promotion action on the crystal elements. - 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] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> [K.dynkin_diagram_automorphism(i) for i in K.index_set()] [1, 6, 3, 5, 4, 2, 0] 
 - highest_weight_dict()[source]¶
- Return a dictionary between \(\{1,2,3,4,5\}\)-highest weight elements, and a tuple of affine weights and its classical component. - EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',6,1],2,1) sage: sorted(K.highest_weight_dict().items(), key=str) [([[(2, -1), (1,)]], ((-2, 0, 1, 0, 0, 0, 0), 1)), ([[(3, -1, -6), (1,)]], ((-1, 0, 0, 1, 0, 0, -1), 1)), ([[(5, -2, -6), (-6, 2)]], ((0, 0, 0, 0, 0, 1, -2), 1)), ([[(6, -2), (-6, 2)]], ((0, 0, 0, 0, 0, 0, 0), 1)), ([], ((0, 0, 0, 0, 0, 0, 0), 0))] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> sorted(K.highest_weight_dict().items(), key=str) [([[(2, -1), (1,)]], ((-2, 0, 1, 0, 0, 0, 0), 1)), ([[(3, -1, -6), (1,)]], ((-1, 0, 0, 1, 0, 0, -1), 1)), ([[(5, -2, -6), (-6, 2)]], ((0, 0, 0, 0, 0, 1, -2), 1)), ([[(6, -2), (-6, 2)]], ((0, 0, 0, 0, 0, 0, 0), 1)), ([], ((0, 0, 0, 0, 0, 0, 0), 0))] 
 - highest_weight_dict_inv()[source]¶
- Return a dictionary between a tuple of affine weights and a classical component, and \(\{2,3,4,5,6\}\)-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)]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> 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()[source]¶
- Return the \({2,3,4,5}\) 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)]]) - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(2),Integer(1)) >>> 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()[source]¶
- Specifies the promotion operator used to construct the affine type \(E_6^{(1)}\) 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)], Integer(2),Integer(1)) >>> promotion = K.promotion() >>> all(promotion(promotion(promotion(b))) == b for b in K.classical_decomposition()) True >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(1),Integer(1)) >>> promotion = K.promotion() >>> all(promotion(promotion(promotion(b))) == b for b in K.classical_decomposition()) True 
 - promotion_inverse()[source]¶
- Return 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)], Integer(2),Integer(1)) >>> p = K.promotion() >>> p_inv = K.promotion_inverse() >>> all(p_inv(p(b)) == b for b in K.classical_decomposition()) True 
 - promotion_on_highest_weight_vectors()[source]¶
- Return a dictionary of the promotion map on \(\{1,2,3,4,5\}\)-highest weight elements to \(\{2,3,4,5,6\}\)-highest weight elements in - self.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',6,1], 2, 1) sage: dic = K.promotion_on_highest_weight_vectors() sage: sorted(dic.items(), key=str) [([[(2, -1), (1,)]], [[(-1,), (-1, 3)]]), ([[(3, -1, -6), (1,)]], [[(5, -3), (-1, 3)]]), ([[(5, -2, -6), (-6, 2)]], [[(2, -1), (1,)]]), ([[(6, -2), (-6, 2)]], []), ([], [[(1, -3), (-1, 3)]])] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)], Integer(2), Integer(1)) >>> dic = K.promotion_on_highest_weight_vectors() >>> sorted(dic.items(), key=str) [([[(2, -1), (1,)]], [[(-1,), (-1, 3)]]), ([[(3, -1, -6), (1,)]], [[(5, -3), (-1, 3)]]), ([[(5, -2, -6), (-6, 2)]], [[(2, -1), (1,)]]), ([[(6, -2), (-6, 2)]], []), ([], [[(1, -3), (-1, 3)]])] 
 - promotion_on_highest_weight_vectors_function()[source]¶
- Return a lambda function on - xdefined by- self.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)]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)], Integer(2), Integer(1)) >>> f = K.promotion_on_highest_weight_vectors_function() >>> f(K.module_generator().lift()) [[(-1,), (-1, 3)]] 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_E7(ct, r, s)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal- The Kirillov-Reshetikhin crystal \(B^{7,s}\) of type \(E_7^{(1)}\). - A7_decomposition()[source]¶
- Return the decomposition of - selfinto \(A_7\) highest weight crystals.- The \(A_7\) decomposition of \(B^{7,s}\) is given by the parameters \(m_4, m_5, m_6, m_7 \geq 0\) such that \(m_4 + m_5 \leq m_7\) and \(s = m_4 + m_5 + m_6 + m_7\). The corresponding \(A_7\) highest weight crystal has highest weight \(\lambda = (m_7 - m_4 - m_5) \Lambda_6 + m_5 \Lambda_4 + m_6 \Lambda_2\). - EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',7,1], 7, 3) sage: K.A7_decomposition() The crystal of tableaux of type ['A', 7] and shape(s) [[3, 3, 3, 3, 3, 3], [3, 3, 2, 2, 2, 2], [3, 3, 1, 1, 1, 1], [3, 3], [2, 2, 2, 2, 1, 1], [2, 2, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(7),Integer(1)], Integer(7), Integer(3)) >>> K.A7_decomposition() The crystal of tableaux of type ['A', 7] and shape(s) [[3, 3, 3, 3, 3, 3], [3, 3, 2, 2, 2, 2], [3, 3, 1, 1, 1, 1], [3, 3], [2, 2, 2, 2, 1, 1], [2, 2, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1]] 
 - class Element[source]¶
- Bases: - KirillovReshetikhinGenericCrystalElement- e0()[source]¶
- Return the action of \(e_0\) on - self.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',7,1], 7, 2) sage: mg = K.module_generator() sage: mg.e0() [[(7,), (-1, 7)]] sage: mg.e0().e0() [[(-1, 7), (-1, 7)]] sage: mg.e_string([0,0,0]) is None True - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(7),Integer(1)], Integer(7), Integer(2)) >>> mg = K.module_generator() >>> mg.e0() [[(7,), (-1, 7)]] >>> mg.e0().e0() [[(-1, 7), (-1, 7)]] >>> mg.e_string([Integer(0),Integer(0),Integer(0)]) is None True 
 - f0()[source]¶
- Return the action of \(f_0\) on - self.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',7,1], 7, 2) sage: mg = K.module_generator() sage: x = mg.f_string([7,6,5,4,3,2,4,5,6,1,3,4,5,2,4,3,1]) sage: x.f0() [[(7,), (7,)]] sage: mg.f0() is None True - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(7),Integer(1)], Integer(7), Integer(2)) >>> mg = K.module_generator() >>> x = mg.f_string([Integer(7),Integer(6),Integer(5),Integer(4),Integer(3),Integer(2),Integer(4),Integer(5),Integer(6),Integer(1),Integer(3),Integer(4),Integer(5),Integer(2),Integer(4),Integer(3),Integer(1)]) >>> x.f0() [[(7,), (7,)]] >>> mg.f0() is None True 
 
 - classical_decomposition()[source]¶
- Return the classical decomposition of - self.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',7,1], 7, 4) sage: K.classical_decomposition() The crystal of tableaux of type ['E', 7] and shape(s) [[4]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(7),Integer(1)], Integer(7), Integer(4)) >>> K.classical_decomposition() The crystal of tableaux of type ['E', 7] and shape(s) [[4]] 
 - from_A7_crystal()[source]¶
- Return the inclusion of the KR crystal \(B^{7,s}\) of type \(E_7^{(1)}\) into type \(A_7\) highest weight crystals. - EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',7,1], 7, 2) sage: K.from_A7_crystal() ['A', 6] -> ['E', 7, 1] Virtual Crystal morphism: From: The crystal of tableaux of type ['A', 7] and shape(s) [[2, 2, 2, 2, 2, 2], [2, 2, 1, 1, 1, 1], [2, 2], [1, 1, 1, 1], []] To: Kirillov-Reshetikhin crystal of type ['E', 7, 1] with (r,s)=(7,2) Defn: ... - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(7),Integer(1)], Integer(7), Integer(2)) >>> K.from_A7_crystal() ['A', 6] -> ['E', 7, 1] Virtual Crystal morphism: From: The crystal of tableaux of type ['A', 7] and shape(s) [[2, 2, 2, 2, 2, 2], [2, 2, 1, 1, 1, 1], [2, 2], [1, 1, 1, 1], []] To: Kirillov-Reshetikhin crystal of type ['E', 7, 1] with (r,s)=(7,2) Defn: ... 
 - to_A7_crystal()[source]¶
- Return the map decomposing the KR crystal \(B^{7,s}\) of type \(E_7^{(1)}\) into type \(A_7\) highest weight crystals. - EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['E',7,1], 7, 2) sage: K.to_A7_crystal() ['A', 6] relabelled by {1: 1, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7} -> ['A', 7] Virtual Crystal morphism: From: Kirillov-Reshetikhin crystal of type ['E', 7, 1] with (r,s)=(7,2) To: The crystal of tableaux of type ['A', 7] and shape(s) [[2, 2, 2, 2, 2, 2], [2, 2, 1, 1, 1, 1], [2, 2], [1, 1, 1, 1], []] Defn: ... - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['E',Integer(7),Integer(1)], Integer(7), Integer(2)) >>> K.to_A7_crystal() ['A', 6] relabelled by {1: 1, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7} -> ['A', 7] Virtual Crystal morphism: From: Kirillov-Reshetikhin crystal of type ['E', 7, 1] with (r,s)=(7,2) To: The crystal of tableaux of type ['A', 7] and shape(s) [[2, 2, 2, 2, 2, 2], [2, 2, 1, 1, 1, 1], [2, 2], [1, 1, 1, 1], []] Defn: ... 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_box(cartan_type, r, s)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal,- AffineCrystalFromClassical- 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)], Integer(1),Integer(1)) >>> K Kirillov-Reshetikhin crystal of type ['BC', 2, 2] with (r,s)=(1,1) >>> b = K(rows=[]) >>> b.f(Integer(0)) [[1]] >>> b.e(Integer(0)) [[-1]] - Element[source]¶
- alias of - KR_type_boxElement
 - ambient_crystal()[source]¶
- Return the ambient crystal \(B^{r,2s}\) of type \(C_n^{(1)}\) associated to the Kirillov-Reshetikhin crystal. - The 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) - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)], Integer(2),Integer(2)) >>> K.ambient_crystal() Kirillov-Reshetikhin crystal of type ['C', 2, 1] with (r,s)=(2,4) 
 - ambient_highest_weight_dict()[source]¶
- Return a dictionary of the classical highest weight vectors of the ambient crystal of - selfwhose keys are 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]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(6),Integer(2)], Integer(2),Integer(2)) >>> 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()[source]¶
- Return the classical crystal underlying the Kirillov-Reshetikhin crystal of type \(A_{2n}^{(2)}\) and \(D_{n+1}^{(2)}\). - It is given by \(B^{r,s} \cong \bigoplus_{\Lambda} B(\Lambda)\), where \(\Lambda\) are weights obtained from a rectangle of width \(s\) and height \(r\) by removing boxes. Here we identify the fundamental weight \(\Lambda_i\) with a column of height \(i\). - 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)], Integer(2),Integer(2)) >>> K.classical_decomposition() The crystal of tableaux of type ['C', 2] and shape(s) [[], [1], [2], [1, 1], [2, 1], [2, 2]] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)], Integer(2),Integer(3)) >>> 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()[source]¶
- Return a map from the ambient crystal of type \(C_n^{(1)}\) 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) [] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)], Integer(1),Integer(1)) >>> b = K.ambient_crystal()(rows=[[Integer(3),-Integer(3)]]) >>> K.from_ambient_crystal()(b) [[0]] >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)], Integer(1),Integer(1)) >>> b = K.ambient_crystal()(rows=[]) >>> K.from_ambient_crystal()(b) [] 
 - highest_weight_dict()[source]¶
- Return a dictionary of the classical highest weight vectors of - selfwhose keys are 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]]} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(6),Integer(2)], Integer(2),Integer(2)) >>> 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()[source]¶
- Set 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} - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(6),Integer(2)], Integer(2),Integer(2)) >>> K.similarity_factor() {1: 2, 2: 2, 3: 2} >>> K = crystals.KirillovReshetikhin(['D',Integer(5),Integer(2)], Integer(1),Integer(1)) >>> K.similarity_factor() {1: 2, 2: 2, 3: 2, 4: 1} 
 - to_ambient_crystal()[source]¶
- Return a map from - selfto the ambient crystal of type \(C_n^{(1)}\).- 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]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(2)], Integer(1),Integer(1)) >>> [K.to_ambient_crystal()(b) for b in K] [[], [[1, 1]], [[2, 2]], [[3, 3]], [[3, -3]], [[-3, -3]], [[-2, -2]], [[-1, -1]]] >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)], Integer(1),Integer(1)) >>> [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[source]¶
- Bases: - 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'> - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)],Integer(1),Integer(2)) >>> type(K.module_generators[Integer(0)]) <class 'sage.combinat.crystals.kirillov_reshetikhin.KR_type_box_with_category.element_class'> - e0()[source]¶
- Return \(e_0\) on - selfby mapping- selfto 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)],Integer(1),Integer(1)) >>> b = K(rows=[]) >>> b.e(Integer(0)) # indirect doctest [[-1]] 
 - epsilon0()[source]¶
- Return \(\varepsilon_0\) of - selfby 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)], Integer(1),Integer(1)) >>> b = K(rows=[[Integer(1)]]) >>> b.epsilon(Integer(0)) # indirect doctest 2 
 - f0()[source]¶
- Return \(f_0\) on - selfby mapping- selfto 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(4),Integer(2)],Integer(1),Integer(1)) >>> b = K(rows=[]) >>> b.f(Integer(0)) # indirect doctest [[1]] 
 - phi0()[source]¶
- Return \(\varphi_0\) of - selfby 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(3),Integer(2)], Integer(1),Integer(1)) >>> b = K(rows=[[-Integer(1)]]) >>> b.phi(Integer(0)) # indirect doctest 2 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_spin(cartan_type, r, s)[source]¶
- Bases: - KirillovReshetikhinCrystalFromPromotion- 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]]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(4),Integer(1)); K Kirillov-Reshetikhin crystal of type ['D', 4, 1] with (r,s)=(4,1) >>> [[b,b.f(Integer(0))] for b in K] [[[++++, []], None], [[++--, []], None], [[+-+-, []], None], [[-++-, []], None], [[+--+, []], None], [[-+-+, []], None], [[--++, []], [++++, []]], [[----, []], [++--, []]]] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(4),Integer(2)); K Kirillov-Reshetikhin crystal of type ['D', 4, 1] with (r,s)=(4,2) >>> [[b,b.f(Integer(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]]]] - classical_decomposition()[source]¶
- Return the classical crystal underlying the Kirillov-Reshetikhin crystal \(B^{r,s}\) of type \(D_n^{(1)}\) for \(r=n-1,n\). - The classical decomposition is given by \(B^{n,s} \cong B(s \Lambda_r)\). - 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(4),Integer(1)) >>> K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[1/2, 1/2, 1/2, 1/2]] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(3),Integer(1)) >>> K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[1/2, 1/2, 1/2, -1/2]] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(3),Integer(2)) >>> K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[1, 1, 1, -1]] 
 - dynkin_diagram_automorphism(i)[source]¶
- Specifies the Dynkin diagram automorphism underlying the promotion action on the crystal elements. - 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(4),Integer(1)) >>> K.dynkin_diagram_automorphism(Integer(0)) 1 >>> K.dynkin_diagram_automorphism(Integer(1)) 0 >>> K.dynkin_diagram_automorphism(Integer(4)) 4 
 - promotion()[source]¶
- Return the promotion operator on \(B^{r,s}\) of type \(D_n^{(1)}\) for \(r = n-1,n\). - 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("{} {}".format(t, promotion(t))) [+++-, []] [-++-, []] [++-+, []] [-+-+, []] [+-++, []] [--++, []] [-+++, []] [++++, []] [+---, []] [----, []] [-+--, []] [++--, []] [--+-, []] [+-+-, []] [---+, []] [+--+, []] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(3),Integer(1)) >>> T = K.classical_decomposition() >>> promotion = K.promotion() >>> for t in T: ... print("{} {}".format(t, promotion(t))) [+++-, []] [-++-, []] [++-+, []] [-+-+, []] [+-++, []] [--++, []] [-+++, []] [++++, []] [+---, []] [----, []] [-+--, []] [++--, []] [--+-, []] [+-+-, []] [---+, []] [+--+, []] 
 - promotion_inverse()[source]¶
- Return the inverse promotion operator on \(B^{r,s}\) of type \(D_n^{(1)}\) for \(r=n-1,n\). - 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(3),Integer(1)) >>> T = K.classical_decomposition() >>> promotion = K.promotion() >>> promotion_inverse = K.promotion_inverse() >>> all(promotion_inverse(promotion(t)) == t for t in T) True 
 - promotion_on_highest_weight_vectors()[source]¶
- Return the promotion operator on \(\{2,3,\ldots,n\}\)-highest weight vectors. - A \(\{2,3,\ldots,n\}\)-highest weight vector in \(B(s\Lambda_n)\) of weight \(w = (w_1,\ldots,w_n)\) is mapped to a \(\{2,3,\ldots,n\}\)-highest weight vector in \(B(s\Lambda_{n-1})\) of weight \((-w_1,w_2,\ldots,w_n)\) and vice versa. - 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("{} {}".format(t, prom[t])) [[1], [2], [3], [4]] [[2], [3], [4], [-1]] [[2], [3], [-4], [4]] [[2], [3], [4], [-4]] [[2], [3], [-4], [-1]] [[1], [2], [3], [-4]] 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("{} {}".format(t, prom[t])) [++++, []] [-+++, []] [-++-, []] [+++-, []] - >>> from sage.all import * >>> KR = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(4),Integer(2)) >>> prom = KR.promotion_on_highest_weight_vectors() >>> T = KR.classical_decomposition() >>> HW = [t for t in T if t.is_highest_weight([Integer(2),Integer(3),Integer(4)])] >>> for t in HW: ... print("{} {}".format(t, prom[t])) [[1], [2], [3], [4]] [[2], [3], [4], [-1]] [[2], [3], [-4], [4]] [[2], [3], [4], [-4]] [[2], [3], [-4], [-1]] [[1], [2], [3], [-4]] >>> KR = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(4),Integer(1)) >>> prom = KR.promotion_on_highest_weight_vectors() >>> T = KR.classical_decomposition() >>> HW = [t for t in T if t.is_highest_weight([Integer(2),Integer(3),Integer(4)])] >>> for t in HW: ... print("{} {}".format(t, prom[t])) [++++, []] [-+++, []] [-++-, []] [+++-, []] 
 - promotion_on_highest_weight_vectors_inverse()[source]¶
- Return the inverse promotion operator on \(\{2,3,\ldots,n\}\)-highest weight vectors. - 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 - >>> from sage.all import * >>> KR = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(3),Integer(2)) >>> prom = KR.promotion_on_highest_weight_vectors() >>> prom_inv = KR.promotion_on_highest_weight_vectors_inverse() >>> T = KR.classical_decomposition() >>> HW = [t for t in T if t.is_highest_weight([Integer(2),Integer(3),Integer(4)])] >>> all(prom_inv[prom[t]] == t for t in HW) True 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KR_type_vertical(cartan_type, r, s)[source]¶
- Bases: - KirillovReshetikhinCrystalFromPromotion- 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]]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> b = K(rows=[]) >>> b.f(Integer(0)) [[1], [2]] >>> b.f(Integer(0)).f(Integer(0)) [[1, 1], [2, 2]] >>> b.e(Integer(0)) [[-2], [-1]] >>> b.e(Integer(0)).e(Integer(0)) [[-2, -2], [-1, -1]] >>> K = crystals.KirillovReshetikhin(['D',Integer(5),Integer(1)], Integer(3),Integer(1)) >>> b = K(rows=[[Integer(1)]]) >>> b.e(Integer(0)) [[3], [-3], [-2]] >>> K = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)], Integer(1),Integer(1)) >>> [[b,b.f(Integer(0))] for b in K] [[[[1]], None], [[[2]], None], [[[3]], None], [[[0]], None], [[[-3]], None], [[[-2]], [[1]]], [[[-1]], [[2]]]] >>> K = crystals.KirillovReshetikhin(['A',Integer(5),Integer(2)], Integer(1),Integer(1)) >>> [[b,b.f(Integer(0))] for b in K] [[[[1]], None], [[[2]], None], [[[3]], None], [[[-3]], None], [[[-2]], [[1]]], [[[-1]], [[2]]]] - classical_decomposition()[source]¶
- Specifies the classical crystal underlying the Kirillov-Reshetikhin crystal of type \(D_n^{(1)}\), \(B_n^{(1)}\), and \(A_{2n-1}^{(2)}\). - It is given by \(B^{r,s} \cong \bigoplus_\Lambda B(\Lambda)\), where \(\Lambda\) are weights obtained from a rectangle of width \(s\) and height \(r\) by removing vertical dominoes. Here we identify the fundamental weight \(\Lambda_i\) with a column of height \(i\). - 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> K.classical_decomposition() The crystal of tableaux of type ['D', 4] and shape(s) [[], [1, 1], [2, 2]] 
 - dynkin_diagram_automorphism(i)[source]¶
- 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(1),Integer(1)) >>> K.dynkin_diagram_automorphism(Integer(0)) 1 >>> K.dynkin_diagram_automorphism(Integer(1)) 0 >>> K.dynkin_diagram_automorphism(Integer(4)) 4 
 - from_highest_weight_vector_to_pm_diagram(b)[source]¶
- This gives the bijection between an element - bin the classical decomposition of the KR crystal that is \({2, 3, \ldots, n}\)-highest weight and \(\pm\) 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 sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> T = K.classical_decomposition() >>> b = T(rows=[[Integer(2)],[-Integer(2)]]) >>> pm = K.from_highest_weight_vector_to_pm_diagram(b); pm [[1, 1], [0, 0], [0]] >>> pm.pp() + - >>> b = T(rows=[]) >>> pm=K.from_highest_weight_vector_to_pm_diagram(b); pm [[0, 2], [0, 0], [0]] >>> pm.pp() >>> hw = [ b for b in T if all(b.epsilon(i)==Integer(0) for i in [Integer(2),Integer(3),Integer(4)]) ] >>> 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)[source]¶
- This gives the bijection between a \(\pm\) diagram and an element - bin the classical decomposition of the KR crystal that is \({2, 3, \ldots, 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[Integer(1), Integer(1)], [Integer(0), Integer(0)], [Integer(0)]]) >>> K.from_pm_diagram_to_highest_weight_vector(pm) [[2], [-2]] 
 - promotion()[source]¶
- Specifies the promotion operator used to construct the affine type \(D_n^{(1)}\) 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 \(\pm\) 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> promotion = K.promotion() >>> b = K.classical_decomposition()(rows=[]) >>> promotion(b) [[1, 2], [-2, -1]] >>> b = K.classical_decomposition()(rows=[[Integer(1),Integer(3)],[Integer(2),-Integer(1)]]) >>> promotion(b) [[1, 3], [2, -1]] >>> b = K.classical_decomposition()(rows=[[Integer(1)],[-Integer(3)]]) >>> promotion(b) [[2, -3], [-2, -1]] 
 - promotion_inverse()[source]¶
- 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> promotion = K.promotion() >>> promotion_inverse = K.promotion_inverse() >>> all( promotion_inverse(promotion(b.lift())) == b.lift() for b in K ) True 
 - promotion_on_highest_weight_vector(b)[source]¶
- Calculate promotion on a \({2, 3, \ldots, n}\) highest weight vector \(b\). - 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_vector(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]]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> T = K.classical_decomposition() >>> hw = [ b for b in T if all(b.epsilon(i)==Integer(0) for i in [Integer(2),Integer(3),Integer(4)]) ] >>> [K.promotion_on_highest_weight_vector(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)[source]¶
- 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 - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2), Integer(1)) >>> K2 = crystals.kirillov_reshetikhin.KashiwaraNakashimaTableaux(['A',Integer(3),Integer(1)], Integer(2), Integer(1)) >>> K is K2 True 
- sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystal(cartan_type, r, s, model='KN')[source]¶
- 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 using- rigged configurations. Another tableaux model comes from the bijection between rigged configurations and tensor products of tableaux called- Kirillov-Reshetikhin tableauxLastly there is a model of Kirillov-Reshetikhin crystals for \(s = 1\) from crystals of- LS paths.- INPUT: - cartan_type– an affine Cartan type
- r– a label of finite Dynkin diagram
- s– positive integer
- model– (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'> - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2), Integer(1)) >>> K.index_set() (0, 1, 2, 3) >>> K.list() [[[1], [2]], [[1], [3]], [[2], [3]], [[1], [4]], [[2], [4]], [[3], [4]]] >>> b=K(rows=[[Integer(1)],[Integer(2)]]) >>> b.weight() -Lambda[0] + Lambda[2] >>> K = crystals.KirillovReshetikhin(['A',Integer(3),Integer(1)], Integer(2),Integer(2)) >>> K.automorphism(K.module_generators[Integer(0)]) [[2, 2], [3, 3]] >>> K.module_generators[Integer(0)].e(Integer(0)) [[1, 2], [2, 4]] >>> K.module_generators[Integer(0)].f(Integer(2)) [[1, 1], [2, 3]] >>> K.module_generators[Integer(0)].f(Integer(1)) >>> K.module_generators[Integer(0)].phi(Integer(0)) 0 >>> K.module_generators[Integer(0)].phi(Integer(1)) 0 >>> K.module_generators[Integer(0)].phi(Integer(2)) 2 >>> K.module_generators[Integer(0)].epsilon(Integer(0)) 2 >>> K.module_generators[Integer(0)].epsilon(Integer(1)) 0 >>> K.module_generators[Integer(0)].epsilon(Integer(2)) 0 >>> b = K(rows=[[Integer(1),Integer(2)],[Integer(2),Integer(3)]]) >>> b [[1, 2], [2, 3]] >>> b.f(Integer(2)) [[1, 2], [3, 3]] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2), Integer(1)) >>> K.cartan_type() ['D', 4, 1] >>> type(K.module_generators[Integer(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)[source]¶
- 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 see- KirillovReshetikhinCrystal().- 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 - >>> from sage.all import * >>> K = crystals.kirillov_reshetikhin.LSPaths(['A',Integer(2),Integer(1)],Integer(2)) # indirect doctest >>> KR = crystals.KirillovReshetikhin(['A',Integer(2),Integer(1)],Integer(2),Integer(1)) >>> G = K.digraph() >>> GR = KR.digraph() >>> G.is_isomorphic(GR, edge_labels = True) True >>> K = crystals.kirillov_reshetikhin.LSPaths(['C',Integer(3),Integer(1)],Integer(2)) >>> KR = crystals.KirillovReshetikhin(['C',Integer(3),Integer(1)],Integer(2),Integer(1)) >>> G = K.digraph() >>> GR = KR.digraph() >>> G.is_isomorphic(GR, edge_labels = True) True >>> K = crystals.kirillov_reshetikhin.LSPaths(['E',Integer(6),Integer(1)],Integer(1)) >>> KR = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(1),Integer(1)) >>> G = K.digraph() >>> GR = KR.digraph() >>> G.is_isomorphic(GR, edge_labels = True) True >>> K.cardinality() 27 >>> K = crystals.kirillov_reshetikhin.LSPaths(['G',Integer(2),Integer(1)],Integer(1)) >>> K.cardinality() 7 >>> K = crystals.kirillov_reshetikhin.LSPaths(['B',Integer(3),Integer(1)],Integer(2)) >>> KR = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)],Integer(2),Integer(1)) >>> KR.cardinality() 22 >>> K.cardinality() 22 >>> G = K.digraph() >>> GR = KR.digraph() >>> G.is_isomorphic(GR, edge_labels = True) True 
- class sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystalFromPromotion(cartan_type, r, s)[source]¶
- Bases: - KirillovReshetikhinGenericCrystal,- AffineCrystalFromClassicalAndPromotion- This generic class assumes that the Kirillov-Reshetikhin crystal is constructed from a classical crystal using the - classical_decompositionand an automorphism- promotionand 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
 
- class sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystalFromPromotionElement[source]¶
- Bases: - AffineCrystalFromClassicalAndPromotionElement,- KirillovReshetikhinGenericCrystalElement- Element for a Kirillov-Reshetikhin crystal from promotion. 
- class sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystal(cartan_type, r, s, dual=None)[source]¶
- Bases: - AffineCrystalFromClassical- Generic class for Kirillov-Reshetikhin crystal \(B^{r,s}\) of the given type. - Input is a Dynkin node - r, a positive integer- s, and a Cartan type- cartan_type.- classically_highest_weight_vectors()[source]¶
- Return the classically highest weight vectors of - self.- EXAMPLES: - sage: K = crystals.KirillovReshetikhin(['D', 4, 1], 2, 2) sage: K.classically_highest_weight_vectors() ([], [[1], [2]], [[1, 1], [2, 2]]) - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['D', Integer(4), Integer(1)], Integer(2), Integer(2)) >>> K.classically_highest_weight_vectors() ([], [[1], [2]], [[1, 1], [2, 2]]) 
 - kirillov_reshetikhin_tableaux()[source]¶
- 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) - >>> from sage.all import * >>> KRC = crystals.KirillovReshetikhin(['D', Integer(4), Integer(1)], Integer(2), Integer(2)) >>> KRC.kirillov_reshetikhin_tableaux() Kirillov-Reshetikhin tableaux of type ['D', 4, 1] and shape (2, 2) 
 - module_generator()[source]¶
- Return the unique module generator of classical weight \(s \Lambda_r\) of a Kirillov-Reshetikhin crystal \(B^{r,s}\) - 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]] - >>> from sage.all import * >>> K = crystals.KirillovReshetikhin(['C',Integer(2),Integer(1)],Integer(1),Integer(2)) >>> K.module_generator() [[1, 1]] >>> K = crystals.KirillovReshetikhin(['E',Integer(6),Integer(1)],Integer(1),Integer(1)) >>> K.module_generator() [(1,)] >>> K = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)],Integer(2),Integer(1)) >>> K.module_generator() [[1], [2]] 
 
- class sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinGenericCrystalElement[source]¶
- Bases: - AffineCrystalFromClassicalElement- Abstract class for all Kirillov-Reshetikhin crystal elements. - lusztig_involution()[source]¶
- 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]] - >>> from sage.all import * >>> KRC = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(2)) >>> elt = KRC(-Integer(1),Integer(2)); elt [[2], [-1]] >>> elt.lusztig_involution() [[1], [-2]] 
 - pp()[source]¶
- 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 + + - >>> from sage.all import * >>> C = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(1)) >>> C(Integer(2),Integer(1)).pp() 1 2 >>> C = crystals.KirillovReshetikhin(['B',Integer(3),Integer(1)], Integer(3),Integer(3)) >>> C.module_generators[Integer(0)].pp() + (X) 1 + + 
 - to_kirillov_reshetikhin_tableau()[source]¶
- Construct the corresponding - KirillovReshetikhinTableauxElementfrom- self.- 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]] - >>> from sage.all import * >>> KRC = crystals.KirillovReshetikhin(['A', Integer(4), Integer(1)], Integer(2), Integer(1)) >>> KRC(columns=[[Integer(2),Integer(1)]]).to_kirillov_reshetikhin_tableau() [[1], [2]] >>> KRC = crystals.KirillovReshetikhin(['D', Integer(4), Integer(1)], Integer(2), Integer(1)) >>> KRC(rows=[]).to_kirillov_reshetikhin_tableau() [[1], [-1]] 
 - to_tableau()[source]¶
- Return the - Tableaucorresponding to- self.- EXAMPLES: - sage: C = crystals.KirillovReshetikhin(['D',4,1], 2,1) sage: t = C(2,1).to_tableau(); t [[1], [2]] sage: type(t) <class 'sage.combinat.tableau.Tableaux_all_with_category.element_class'> - >>> from sage.all import * >>> C = crystals.KirillovReshetikhin(['D',Integer(4),Integer(1)], Integer(2),Integer(1)) >>> t = C(Integer(2),Integer(1)).to_tableau(); t [[1], [2]] >>> type(t) <class 'sage.combinat.tableau.Tableaux_all_with_category.element_class'> 
 
- class sage.combinat.crystals.kirillov_reshetikhin.PMDiagram(pm_diagram, from_shapes=None)[source]¶
- Bases: - 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 = Trueone can also input a \(\pm\) diagram in terms of its outer, intermediate, and inner shape by specifying a list- [n, s, outer, intermediate, inner]where- sis the width of the \(\pm\) diagram, and- outer,- intermediate, and- innerare 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]] - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram >>> pm = PMDiagram([[Integer(0),Integer(1)],[Integer(1),Integer(2)],[Integer(1)]]) >>> pm.pm_diagram [[0, 1], [1, 2], [1]] >>> pm._list [1, 1, 2, 0, 1] >>> pm.n 2 >>> pm.width 5 >>> pm.pp() . . . . . + - - >>> PMDiagram([Integer(2),Integer(5),[Integer(4),Integer(4)],[Integer(4),Integer(2)],[Integer(4),Integer(1)]], from_shapes=True) [[0, 1], [1, 2], [1]] - heights_of_addable_plus()[source]¶
- 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] - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.heights_of_addable_plus() [1, 1, 2, 3, 4, 5] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.heights_of_addable_plus() [1, 2, 3, 4] 
 - heights_of_minus()[source]¶
- 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] - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.heights_of_minus() [5, 5, 3, 3, 1, 1] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.heights_of_minus() [4, 4, 2, 2] 
 - inner_shape()[source]¶
- 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] - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram >>> pm = PMDiagram([[Integer(0),Integer(1)],[Integer(1),Integer(2)],[Integer(1)]]) >>> pm.inner_shape() [4, 1] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.inner_shape() [7, 5, 3, 1] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.inner_shape() [10, 7, 5, 3, 1] 
 - intermediate_shape()[source]¶
- 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] - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram >>> pm = PMDiagram([[Integer(0),Integer(1)],[Integer(1),Integer(2)],[Integer(1)]]) >>> pm.intermediate_shape() [4, 2] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.intermediate_shape() [8, 6, 4, 2] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.intermediate_shape() [11, 8, 6, 4, 2] >>> pm = PMDiagram([[Integer(1),Integer(0)],[Integer(0),Integer(1)],[Integer(2),Integer(0)],[Integer(0),Integer(0)],[Integer(0)]]) >>> pm.intermediate_shape() [4, 2, 2] >>> pm = PMDiagram([[Integer(1), Integer(0)], [Integer(0), Integer(0)], [Integer(0), Integer(0)], [Integer(0), Integer(0)], [Integer(0)]]) >>> pm.intermediate_shape() [1] 
 - outer_shape()[source]¶
- 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] - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram >>> pm = PMDiagram([[Integer(0),Integer(1)],[Integer(1),Integer(2)],[Integer(1)]]) >>> pm.outer_shape() [4, 4] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.outer_shape() [8, 8, 4, 4] >>> pm = PMDiagram([[Integer(1),Integer(2)],[Integer(1),Integer(2)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1)]]) >>> pm.outer_shape() [13, 8, 8, 4, 4] 
 - pp()[source]¶
- 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() - >>> from sage.all import * >>> from sage.combinat.crystals.kirillov_reshetikhin import PMDiagram >>> pm = PMDiagram([[Integer(1),Integer(0)],[Integer(0),Integer(1)],[Integer(2),Integer(0)],[Integer(0),Integer(0)],[Integer(0)]]) >>> pm.pp() . . . + . . - - + + - - >>> pm = PMDiagram([[Integer(0),Integer(2)], [Integer(0),Integer(0)], [Integer(0)]]) >>> pm.pp() 
 - sigma()[source]¶
- 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]] - >>> from sage.all import * >>> pm = sage.combinat.crystals.kirillov_reshetikhin.PMDiagram([[Integer(0),Integer(1)],[Integer(1),Integer(2)],[Integer(1)]]) >>> pm.sigma() [[1, 0], [2, 1], [1]] 
 
- sage.combinat.crystals.kirillov_reshetikhin.horizontal_dominoes_removed(r, s)[source]¶
- Return 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]] - >>> from sage.all import * >>> sage.combinat.crystals.kirillov_reshetikhin.horizontal_dominoes_removed(Integer(2),Integer(2)) [[], [2], [2, 2]] >>> sage.combinat.crystals.kirillov_reshetikhin.horizontal_dominoes_removed(Integer(3),Integer(2)) [[], [2], [2, 2], [2, 2, 2]] 
- sage.combinat.crystals.kirillov_reshetikhin.partitions_in_box(r, s)[source]¶
- Return 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]] - >>> from sage.all import * >>> sage.combinat.crystals.kirillov_reshetikhin.partitions_in_box(Integer(3),Integer(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)[source]¶
- Return 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]] - >>> from sage.all import * >>> sage.combinat.crystals.kirillov_reshetikhin.vertical_dominoes_removed(Integer(2),Integer(2)) [[], [1, 1], [2, 2]] >>> sage.combinat.crystals.kirillov_reshetikhin.vertical_dominoes_removed(Integer(3),Integer(2)) [[2], [2, 1, 1], [2, 2, 2]] >>> sage.combinat.crystals.kirillov_reshetikhin.vertical_dominoes_removed(Integer(4),Integer(2)) [[], [1, 1], [1, 1, 1, 1], [2, 2], [2, 2, 1, 1], [2, 2, 2, 2]]