# Rigged configurations¶

AUTHORS:

• Travis Scrimshaw (2010-09-26): Initial version

Rigged configurations form combinatorial objects first introduced by Kirillov and Reshetikhin that arose from studies of statistical mechanical models using the Bethe Ansatz. They are sequences of rigged partitions. A rigged partition is a partition together with a label associated to each part that satisfy certain constraints. The labels are also called riggings.

Rigged configurations exist for all affine Kac-Moody Lie algebras. See for example [HKOTT2002]. In Sage they are specified by providing a Cartan type and a list of rectangular shapes $$R$$. Currently, they are only implemented for types $$A_n^{(1)}$$ and $$D_n^{(1)}$$. The list of all (highest weight) rigged configurations for given $$R$$ is computed via the Kleber algorithm (see also KleberTree).

There exists a crystal structure on the set of rigged configurations, see [CrysStructSchilling06]. The highest weight rigged configurations are those where all riggings are nonnegative. The list of all rigged configurations is computed from the highest weight ones using the crystal operators.

Rigged configurations are in bijection with tensor products of Kirillov-Reshetikhin tableaux, see [RigConBijection], [BijectionDn], and [BijectionLRT]. The list of rectangles $$R$$ corresponds to the shape of the Kirillov-Reshetikhin crystals appearing in the tensor product. Kirillov-Reshetikhin crystals are implemented in Sage, see KirillovReshetikhinCrystal, however, in the bijection with rigged configurations a different realization of the elements in the crystal are obtained, which are coined Kirillov-Reshetkihin tableaux, see KirillovReshetikhinTableaux. For more details see [AffineRigConDn].

INPUT:

• cartan_type – a Cartan type (currently only types $$A_n^{(1)}$$ and $$D_n^{(1)}$$ are supported)
• B – a list of positive integer tuples $$[r,s]$$ specifying the width $$s$$ and height $$r$$ of the sequence of rectangles

EXAMPLES:

sage: RC = RiggedConfigurations(['A', 3, 1], [[3, 2], [1, 2], [1, 1]])
sage: RC
Rigged configurations of type ['A', 3, 1] and factors ((3, 2), (1, 2), (1, 1))

sage: RC = RiggedConfigurations(['A', 3, 1], [[2,1]]); RC
Rigged configurations of type ['A', 3, 1] and factors ((2, 1),)
sage: RC.cardinality()
6
sage: len(RC.list()) == RC.cardinality()
True
sage: sorted(RC.list())    # random
[
(/)

(/)

(/)
,
(/)

-1[ ]-1

(/)
,
(/)

0[ ]0

-1[ ]-1
,
-1[ ]-1

0[ ]0

(/)
,
-1[ ]-1

1[ ]1

-1[ ]-1
,
0[ ]0

-1[ ]-1
-1[ ]-1

0[ ]0
]


A rigged configuration element with all riggings equal to the vacancy numbers can be created as follows:

sage: RC = RiggedConfigurations(['A', 3, 1], [[3,2], [2,1], [1,1], [1,1]]); RC
Rigged configurations of type ['A', 3, 1] and factors ((3, 2), (2, 1), (1, 1), (1, 1))
sage: elt = RC(partition_list=[[1],[],[]]); elt

0[ ]0

(/)

(/)


If on the other hand we also want to specify the riggings, this can be achieved as follows:

sage: RC = RiggedConfigurations(['D', 7, 1], [[3,3],[5,2],[4,3],[2,3],[4,4],[3,1],[1,4],[2,2]])
sage: elt = RC(partition_list=[[2],[3,2,1],[2,2,1,1],[2,2,1,1,1,1],[3,2,1,1,1,1],[2,1,1],[2,2]],
...            rigging_list=[[2],[1,0,0],[4,1,2,1],[1,0,0,0,0,0],[0,1,0,0,0,0],[0,0,0],[0,0]])
sage: elt

3[ ][ ]2

1[ ][ ][ ]1
2[ ][ ]0
1[ ]0

4[ ][ ]4
4[ ][ ]1
3[ ]2
3[ ]1

2[ ][ ]1
2[ ][ ]0
0[ ]0
0[ ]0
0[ ]0
0[ ]0

0[ ][ ][ ]0
2[ ][ ]1
0[ ]0
0[ ]0
0[ ]0
0[ ]0

0[ ][ ]0
0[ ]0
0[ ]0

0[ ][ ]0
0[ ][ ]0


To obtain the Kirillov-Reshetikhin (KR) tableaux under the bijection between rigged configurations and KR tableaux, we can type the following. This example was checked against Reiho Sakamoto’s Mathematica program on rigged configurations:

sage: output = elt.to_tensor_product_of_Kirillov_Reshetikhin_tableaux(); output
[[1, 1, 1], [2, 3, 3], [3, 4, -5]] (X) [[1, 1], [2, 2], [3, 3], [5, -6], [6, -5]] (X) [[1, 1, 2], [2, 2, 3], [3, 3, 7], [4, 4, -7]] (X) [[1, 1, 1], [2, 2, 2]] (X) [[1, 1, 1, 3], [2, 2, 3, 4], [3, 3, 4, 5], [4, 4, 5, 6]] (X) [[1], [2], [3]] (X) [[1, 1, 1, 1]] (X) [[1, 1], [2, 2]]
sage: elt.to_tensor_product_of_Kirillov_Reshetikhin_tableaux().to_rigged_configuration() == elt
True
sage: output.to_rigged_configuration().to_tensor_product_of_Kirillov_Reshetikhin_tableaux() == output
True


TESTS:

sage: RC = HighestWeightRiggedConfigurations(['A', 3, 1], [[3,2], [2,1], [1,1], [1,1]])
sage: RC.cardinality()
17
sage: RC = RiggedConfigurations(['D', 4, 1], [[1, 1]])
sage: RC.cardinality()
8
sage: RC = RiggedConfigurations(['D', 4, 1], [[2, 1]])
sage: c= RC.cardinality(); c
29
sage: K = KirillovReshetikhinCrystal(['D',4,1],2,1)
sage: K.cardinality() == c
True


Todo

Implement affine crystal structure and remove conversion to classical Cartan type.

REFERENCES:

 [HKOTT2002] G. Hatayama, A. Kuniba, M. Okado, T. Takagi, Z. Tsuboi. Paths, Crystals and Fermionic Formulae Prog.Math.Phys. 23 (2002) 205-272
 [CrysStructSchilling06] (1, 2, 3) Anne Schilling. Crystal structure on rigged configurations. International Mathematics Research Notices. Volume 2006. 2006. Article ID 97376. Pages 1-27.
 [RigConBijection] (1, 2, 3) Masato Okado, Anne Schilling, Mark Shimozono. A crystal to rigged configuration bijection for non-exceptional affine algebras. Algebraic Combinatorics and Quantum Groups. Edited by N. Jing. World Scientific. 2003. Pages 85-124.
 [BijectionDn] (1, 2) Anne Schilling. A bijection between type $$D_n^{(1)}$$ crystals and rigged configurations. J. Algebra. 285. 2005. 292-334
 [BijectionLRT] (1, 2, 3) Anatol N. Kirillov, Anne Schilling, Mark Shimozono. A bijection between Littlewood-Richardson tableaux and rigged configurations. Selecta Mathematica (N.S.). 8. 2002. 67-135 (MathSciNet MR1890195).
 [AffineRigConDn] Masato Okado, Reiho Sakamoto, Anne Schilling. Affine crystal structure on rigged configurations of type $$D_n^{(1)}$$. J. Algebraic Combinatorics, to appear, doi:10.1007/s10801-012-0383-z (Arxiv 1109.3523)
class sage.combinat.rigged_configurations.rigged_configurations.AbstractRiggedConfigurations(cartan_type, B, biject_class)

Abstract root class for all rigged configurations.

This class should never be created directly. Instead see RiggedConfigurations.

cartan_type()

Return the classical Cartan type of this set of rigged configurations.

EXAMPLES:

sage: RC = RiggedConfigurations(['A', 4, 1], [[2, 2]])
sage: RC.cartan_type()
['A', 4]

kleber_tree()

Return the underlying Kleber tree used to generate all admissible configurations.

EXAMPLES:

sage: RC = RiggedConfigurations(['A', 4, 1], [[2, 2]])
sage: RC.kleber_tree
Kleber tree of Cartan type ['A', 4] and root weight [0, 2, 0, 0]

tensor_product_of_Kirillov_Reshetikhin_tableaux()

Return the corresponding tensor product of Kirillov-Reshetikhin tableaux.

EXAMPLES:

sage: RC = RiggedConfigurations(['A', 3, 1], [[3, 2], [1, 2]])
sage: RC.tensor_product_of_Kirillov_Reshetikhin_tableaux()
Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and tableau shape(s) [[2, 2, 2], [2]]

class sage.combinat.rigged_configurations.rigged_configurations.HighestWeightRiggedConfigurations(cartan_type, B)

Class for all highest weight rigged configurations.

A rigged configuration is highest weight if all of its vacancy numbers and rigging values are non-negative.

For more on rigged configurations see RiggedConfigurations.

Element

alias of RiggedConfigurationElement

list()

Create a list of the elements by using the iterator.

EXAMPLES:

sage: RC = HighestWeightRiggedConfigurations(['D', 4, 1], [[2, 2]])
sage: len(RC.list()) == RC.cardinality()
True
sage: sorted(RC.list())    # random
[
(/)

(/)

(/)

(/)
,
0[ ]0

0[ ]0
0[ ]0

0[ ]0

0[ ]0
,
0[ ][ ]0

0[ ][ ]0
0[ ][ ]0

0[ ][ ]0

0[ ][ ]0
]

module_generators()

Module generators for this set of rigged configurations.

The module generators for rigged configurations are the highest weight rigged configurations. For more info, see HighestWeightRiggedConfigurations.

EXAMPLES:

sage: RC = HighestWeightRiggedConfigurations(['D', 4, 1], [[2,1]])
sage: for x in RC.module_generators: x
...

(/)

(/)

(/)

(/)

0[ ]0

0[ ]0
0[ ]0

0[ ]0

0[ ]0

class sage.combinat.rigged_configurations.rigged_configurations.RiggedConfigurations(cartan_type, B)

Class of rigged configurations.

Let $$\overline{I}$$ denote the classical index set associated to the Cartan type of the rigged configurations. A rigged configuration of multiplicity array $$L_i^{(a)}$$ and dominant weight $$\Lambda$$ is a sequence of partitions $$\{ \nu^{(a)} \mid a \in \overline{I} \}$$ such that

$\begin{split}\sum_{\overline{I} \times \mathbb{Z}_{>0}} i m_i^{(a)} \alpha_a = \sum_{\overline{I} \times \mathbb{Z}_{>0}} i L_i^{(a)} \Lambda_a - \Lambda\end{split}$

where $$\alpha_a$$ is a simple root, $$\Lambda_a$$ is a fundamental weight, and $$m_i^{(a)}$$ is the number of rows of length $$i$$ in the partition $$\nu^{(a)}$$.

Each sequence of partitions also comes with a sequence of values called vacancy numbers and riggings. Vacancy numbers are computed based upon the partitions and $$L_i^{(a)}$$, and the riggings must satisfy certain conditions. For more, see [RigConBijection] [CrysStructSchilling06] [BijectionLRT].

They are in bijection with TensorProductOfKirillovReshetikhinTableaux of non-exceptional affine types (see [RigConBijection], [BijectionLRT], [BijectionDn]) and all admit a classical crystal structure [CrysStructSchilling06].

INPUT:

• cartan_type – a Cartan type (currently only types $$A_n^{(1)}$$ and $$D_n^{(1)}$$ are supported)
• B – a list of positive integer tuples $$[r,s]$$ specifying the width $$s$$ and height $$r$$ of the sequence of rectangles

A rigged configuration element with all riggings equal to the vacancy numbers can be created as follows:

sage: RC = RiggedConfigurations(['A', 3, 1], [[3,2], [2,1], [1,1], [1,1]]); RC
Rigged configurations of type ['A', 3, 1] and factors ((3, 2), (2, 1), (1, 1), (1, 1))
sage: elt = RC(partition_list=[[1],[],[]]); elt

0[ ]0

(/)

(/)


If on the other hand we also want to specify the riggings, this can be achieved as follows:

sage: RC = RiggedConfigurations(['D', 7, 1], [[3,3],[5,2],[4,3],[2,3],[4,4],[3,1],[1,4],[2,2]])
sage: elt = RC(partition_list=[[2],[3,2,1],[2,2,1,1],[2,2,1,1,1,1],[3,2,1,1,1,1],[2,1,1],[2,2]],
...            rigging_list=[[2],[1,0,0],[4,1,2,1],[1,0,0,0,0,0],[0,1,0,0,0,0],[0,0,0],[0,0]])
sage: elt

3[ ][ ]2

1[ ][ ][ ]1
2[ ][ ]0
1[ ]0

4[ ][ ]4
4[ ][ ]1
3[ ]2
3[ ]1

2[ ][ ]1
2[ ][ ]0
0[ ]0
0[ ]0
0[ ]0
0[ ]0

0[ ][ ][ ]0
2[ ][ ]1
0[ ]0
0[ ]0
0[ ]0
0[ ]0

0[ ][ ]0
0[ ]0
0[ ]0

0[ ][ ]0
0[ ][ ]0


To obtain the Kirillov-Reshetikhin (KR) tableau under the bijection between rigged configurations and KR tableaux, we can type the following. This example was checked against Reiho Sakamoto’s Mathematica program on rigged configurations:

sage: output = elt.to_tensor_product_of_Kirillov_Reshetikhin_tableaux(); output
[[1, 1, 1], [2, 3, 3], [3, 4, -5]] (X) [[1, 1], [2, 2], [3, 3], [5, -6], [6, -5]] (X)
[[1, 1, 2], [2, 2, 3], [3, 3, 7], [4, 4, -7]] (X) [[1, 1, 1], [2, 2, 2]] (X)
[[1, 1, 1, 3], [2, 2, 3, 4], [3, 3, 4, 5], [4, 4, 5, 6]] (X) [[1], [2], [3]] (X) [[1, 1, 1, 1]] (X) [[1, 1], [2, 2]]
sage: elt.to_tensor_product_of_Kirillov_Reshetikhin_tableaux().to_rigged_configuration() == elt
True
sage: output.to_rigged_configuration().to_tensor_product_of_Kirillov_Reshetikhin_tableaux() == output
True


We can also convert between rigged configurations and tensor products of Kirillov-Reshetikhin crystals:

sage: RC = RiggedConfigurations(['D', 4, 1], [[2, 1]])
sage: elt = RC(partition_list=[[1],[1,1],[1],[1]])
sage: tp_krc = elt.to_tensor_product_of_Kirillov_Reshetikhin_crystals(); tp_krc
[[]]
sage: ret = RC(tp_krc)
sage: ret == elt
True

sage: RC = RiggedConfigurations(['D', 4, 1], [[4,1], [3,3]])
sage: KR1 = KirillovReshetikhinCrystal(['D', 4, 1], 4, 1)
sage: KR2 = KirillovReshetikhinCrystal(['D', 4, 1], 3, 3)
sage: T = TensorProductOfCrystals(KR1, KR2)
sage: t = T[1]; t
[[++++, []], [+++-, [[1], [2], [4], [-4]]]]
sage: ret = RC(t)
sage: ret.to_tensor_product_of_Kirillov_Reshetikhin_crystals()
[[++++, []], [+++-, [[1], [2], [4], [-4]]]]

Element

alias of RiggedConfigurationElement

module_generators()

Module generators for this set of rigged configurations.

The module generators for rigged configurations are the highest weight rigged configurations. For more info, see HighestWeightRiggedConfigurations.

EXAMPLES:

sage: RC = RiggedConfigurations(['D', 4, 1], [[2,1]])
sage: for x in RC.module_generators: x
...

(/)

(/)

(/)

(/)

0[ ]0

0[ ]0
0[ ]0

0[ ]0

0[ ]0

tensor_product_of_Kirillov_Reshetikhin_crystals()

Return the corresponding tensor product of Kirillov-Reshetikhin crystals.

EXAMPLES:

sage: RC = RiggedConfigurations(['A', 3, 1], [[3,1],[2,2]])
sage: RC.tensor_product_of_Kirillov_Reshetikhin_crystals()
Full tensor product of the crystals [Kirillov-Reshetikhin crystal of type ['A', 3, 1] with (r,s)=(3,1),
Kirillov-Reshetikhin crystal of type ['A', 3, 1] with (r,s)=(2,2)]


#### Previous topic

Rigged Configurations

#### Next topic

A specific rigged configuration