AUTHORS:
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 . Currently, they are only implemented for types
and
. The list of all (highest weight) rigged configurations for given
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 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:
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 ![]() |
[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 ![]() |
Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.parent.Parent
Abstract root class for all rigged configurations.
This class should never be created directly. Instead see RiggedConfigurations.
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]
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]
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]]
Bases: sage.combinat.rigged_configurations.rigged_configurations.AbstractRiggedConfigurations
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.
alias of RiggedConfigurationElement
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 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
Bases: sage.combinat.rigged_configurations.rigged_configurations.AbstractRiggedConfigurations
Class of rigged configurations.
Let denote the classical index set associated to the Cartan type
of the rigged configurations. A rigged configuration of multiplicity
array
and dominant weight
is a sequence of partitions
such that
where is a simple root,
is a fundamental weight,
and
is the number of rows of length
in the partition
.
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 , 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:
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]]]]
alias of RiggedConfigurationElement
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
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)]