Crystal of Rigged Configurations

AUTHORS:

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

We only consider the highest weight crystal structure, not the Kirillov-Reshetikhin structure, and we extend this to symmetrizable types.

class sage.combinat.rigged_configurations.rc_crystal.CrystalOfNonSimplyLacedRC(vct, wt, WLR)[source]

Bases: CrystalOfRiggedConfigurations

Highest weight crystal of rigged configurations in non-simply-laced type.

Element[source]

alias of RCHWNonSimplyLacedElement

from_virtual(vrc)[source]

Convert vrc in the virtual crystal into a rigged configuration of the original Cartan type.

INPUT:

  • vrc – a virtual rigged configuration

EXAMPLES:

sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
sage: vct = CartanType(['C', 3]).as_folding()
sage: RC = crystals.RiggedConfigurations(vct, La[2])
sage: elt = RC(partition_list=[[0], [1], [1]])
sage: elt == RC.from_virtual(RC.to_virtual(elt))
True
>>> from sage.all import *
>>> La = RootSystem(['C', Integer(3)]).weight_lattice().fundamental_weights()
>>> vct = CartanType(['C', Integer(3)]).as_folding()
>>> RC = crystals.RiggedConfigurations(vct, La[Integer(2)])
>>> elt = RC(partition_list=[[Integer(0)], [Integer(1)], [Integer(1)]])
>>> elt == RC.from_virtual(RC.to_virtual(elt))
True
La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
vct = CartanType(['C', 3]).as_folding()
RC = crystals.RiggedConfigurations(vct, La[2])
elt = RC(partition_list=[[0], [1], [1]])
elt == RC.from_virtual(RC.to_virtual(elt))
to_virtual(rc)[source]

Convert rc into a rigged configuration in the virtual crystal.

INPUT:

  • rc – a rigged configuration element

EXAMPLES:

sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
sage: vct = CartanType(['C', 3]).as_folding()
sage: RC = crystals.RiggedConfigurations(vct, La[2])
sage: elt = RC(partition_list=[[], [1], [1]]); elt

(/)

0[ ]0

-1[ ]-1

sage: RC.to_virtual(elt)

(/)

0[ ]0

-2[ ][ ]-2

0[ ]0

(/)
>>> from sage.all import *
>>> La = RootSystem(['C', Integer(3)]).weight_lattice().fundamental_weights()
>>> vct = CartanType(['C', Integer(3)]).as_folding()
>>> RC = crystals.RiggedConfigurations(vct, La[Integer(2)])
>>> elt = RC(partition_list=[[], [Integer(1)], [Integer(1)]]); elt
<BLANKLINE>
(/)
<BLANKLINE>
0[ ]0
<BLANKLINE>
-1[ ]-1
<BLANKLINE>
>>> RC.to_virtual(elt)
<BLANKLINE>
(/)
<BLANKLINE>
0[ ]0
<BLANKLINE>
-2[ ][ ]-2
<BLANKLINE>
0[ ]0
<BLANKLINE>
(/)
<BLANKLINE>
La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
vct = CartanType(['C', 3]).as_folding()
RC = crystals.RiggedConfigurations(vct, La[2])
elt = RC(partition_list=[[], [1], [1]]); elt
RC.to_virtual(elt)
virtual()[source]

Return the corresponding virtual crystal.

EXAMPLES:

sage: La = RootSystem(['C', 2, 1]).weight_lattice().fundamental_weights()
sage: vct = CartanType(['C', 2, 1]).as_folding()
sage: RC = crystals.RiggedConfigurations(vct, La[0])
sage: RC
Crystal of rigged configurations of type ['C', 2, 1] and weight Lambda[0]
sage: RC.virtual
Crystal of rigged configurations of type ['A', 3, 1] and weight 2*Lambda[0]
>>> from sage.all import *
>>> La = RootSystem(['C', Integer(2), Integer(1)]).weight_lattice().fundamental_weights()
>>> vct = CartanType(['C', Integer(2), Integer(1)]).as_folding()
>>> RC = crystals.RiggedConfigurations(vct, La[Integer(0)])
>>> RC
Crystal of rigged configurations of type ['C', 2, 1] and weight Lambda[0]
>>> RC.virtual
Crystal of rigged configurations of type ['A', 3, 1] and weight 2*Lambda[0]
La = RootSystem(['C', 2, 1]).weight_lattice().fundamental_weights()
vct = CartanType(['C', 2, 1]).as_folding()
RC = crystals.RiggedConfigurations(vct, La[0])
RC
RC.virtual
class sage.combinat.rigged_configurations.rc_crystal.CrystalOfRiggedConfigurations(wt, WLR)[source]

Bases: UniqueRepresentation, Parent

A highest weight crystal of rigged configurations.

The crystal structure for finite simply-laced types is given in [CrysStructSchilling06]. These were then shown to be the crystal operators in all finite types in [SS2015], all simply-laced and a large class of foldings of simply-laced types in [SS2015II], and all symmetrizable types (uniformly) in [SS2017].

INPUT:

  • cartan_type – (optional) a Cartan type or a Cartan type given as a folding

  • wt – the highest weight vector in the weight lattice

EXAMPLES:

For simplicity, we display the rigged configurations horizontally:

sage: RiggedConfigurations.options.display='horizontal'
>>> from sage.all import *
>>> RiggedConfigurations.options.display='horizontal'
RiggedConfigurations.options.display='horizontal'

We start with a simply-laced finite type:

sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
sage: RC = crystals.RiggedConfigurations(La[1] + La[2])
sage: mg = RC.highest_weight_vector()
sage: mg.f_string([1,2])
0[ ]0   0[ ]-1
sage: mg.f_string([1,2,2])
0[ ]0   -2[ ][ ]-2
sage: mg.f_string([1,2,2,2])
sage: mg.f_string([2,1,1,2])
-1[ ][ ]-1   -1[ ][ ]-1
sage: RC.cardinality()
8
sage: T = crystals.Tableaux(['A', 2], shape=[2,1])
sage: RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
True
>>> from sage.all import *
>>> La = RootSystem(['A', Integer(2)]).weight_lattice().fundamental_weights()
>>> RC = crystals.RiggedConfigurations(La[Integer(1)] + La[Integer(2)])
>>> mg = RC.highest_weight_vector()
>>> mg.f_string([Integer(1),Integer(2)])
0[ ]0   0[ ]-1
>>> mg.f_string([Integer(1),Integer(2),Integer(2)])
0[ ]0   -2[ ][ ]-2
>>> mg.f_string([Integer(1),Integer(2),Integer(2),Integer(2)])
>>> mg.f_string([Integer(2),Integer(1),Integer(1),Integer(2)])
-1[ ][ ]-1   -1[ ][ ]-1
>>> RC.cardinality()
8
>>> T = crystals.Tableaux(['A', Integer(2)], shape=[Integer(2),Integer(1)])
>>> RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
True
La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
RC = crystals.RiggedConfigurations(La[1] + La[2])
mg = RC.highest_weight_vector()
mg.f_string([1,2])
mg.f_string([1,2,2])
mg.f_string([1,2,2,2])
mg.f_string([2,1,1,2])
RC.cardinality()
T = crystals.Tableaux(['A', 2], shape=[2,1])
RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)

We construct a non-simply-laced affine type:

sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
sage: RC = crystals.RiggedConfigurations(La[2])
sage: mg = RC.highest_weight_vector()
sage: mg.f_string([2,3])
(/)   1[ ]1   -1[ ]-1
sage: T = crystals.Tableaux(['C', 3], shape=[1,1])
sage: RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
True
>>> from sage.all import *
>>> La = RootSystem(['C', Integer(3)]).weight_lattice().fundamental_weights()
>>> RC = crystals.RiggedConfigurations(La[Integer(2)])
>>> mg = RC.highest_weight_vector()
>>> mg.f_string([Integer(2),Integer(3)])
(/)   1[ ]1   -1[ ]-1
>>> T = crystals.Tableaux(['C', Integer(3)], shape=[Integer(1),Integer(1)])
>>> RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
True
La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
RC = crystals.RiggedConfigurations(La[2])
mg = RC.highest_weight_vector()
mg.f_string([2,3])
T = crystals.Tableaux(['C', 3], shape=[1,1])
RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)

We can construct rigged configurations using a diagram folding of a simply-laced type. This yields an equivalent but distinct crystal:

sage: vct = CartanType(['C', 3]).as_folding()
sage: RC = crystals.RiggedConfigurations(vct, La[2])
sage: mg = RC.highest_weight_vector()
sage: mg.f_string([2,3])
(/)   0[ ]0   -1[ ]-1
sage: T = crystals.Tableaux(['C', 3], shape=[1,1])
sage: RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
True
>>> from sage.all import *
>>> vct = CartanType(['C', Integer(3)]).as_folding()
>>> RC = crystals.RiggedConfigurations(vct, La[Integer(2)])
>>> mg = RC.highest_weight_vector()
>>> mg.f_string([Integer(2),Integer(3)])
(/)   0[ ]0   -1[ ]-1
>>> T = crystals.Tableaux(['C', Integer(3)], shape=[Integer(1),Integer(1)])
>>> RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
True
vct = CartanType(['C', 3]).as_folding()
RC = crystals.RiggedConfigurations(vct, La[2])
mg = RC.highest_weight_vector()
mg.f_string([2,3])
T = crystals.Tableaux(['C', 3], shape=[1,1])
RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)

We reset the global options:

sage: RiggedConfigurations.options._reset()
>>> from sage.all import *
>>> RiggedConfigurations.options._reset()
RiggedConfigurations.options._reset()

REFERENCES:

Element[source]

alias of RCHighestWeightElement

options = Current options for RiggedConfigurations   - convention:              English   - display:                 vertical   - element_ascii_art:       True   - half_width_boxes_type_B: True[source]
weight_lattice_realization()[source]

Return the weight lattice realization used to express the weights of elements in self.

EXAMPLES:

sage: La = RootSystem(['A', 2, 1]).weight_lattice(extended=True).fundamental_weights()
sage: RC = crystals.RiggedConfigurations(La[0])
sage: RC.weight_lattice_realization()
Extended weight lattice of the Root system of type ['A', 2, 1]
>>> from sage.all import *
>>> La = RootSystem(['A', Integer(2), Integer(1)]).weight_lattice(extended=True).fundamental_weights()
>>> RC = crystals.RiggedConfigurations(La[Integer(0)])
>>> RC.weight_lattice_realization()
Extended weight lattice of the Root system of type ['A', 2, 1]
La = RootSystem(['A', 2, 1]).weight_lattice(extended=True).fundamental_weights()
RC = crystals.RiggedConfigurations(La[0])
RC.weight_lattice_realization()