Rigged Configurations of \(\mathcal{B}(\infty)\)

AUTHORS:

  • Travis Scrimshaw (2013-04-16): Initial version

class sage.combinat.rigged_configurations.rc_infinity.InfinityCrystalOfNonSimplyLacedRC(vct)[source]

Bases: InfinityCrystalOfRiggedConfigurations

Rigged configurations for \(\mathcal{B}(\infty)\) in non-simply-laced types.

class Element(parent, rigged_partitions=[], **options)[source]

Bases: RCNonSimplyLacedElement

A rigged configuration in \(\mathcal{B}(\infty)\) in non-simply-laced types.

weight()[source]

Return the weight of self.

EXAMPLES:

sage: vct = CartanType(['C', 3]).as_folding()
sage: RC = crystals.infinity.RiggedConfigurations(vct)
sage: elt = RC(partition_list=[[1],[1,1],[1]], rigging_list=[[0],[-1,-1],[0]])
sage: elt.weight()
(-1, -1, 0)

sage: vct = CartanType(['F', 4, 1]).as_folding()
sage: RC = crystals.infinity.RiggedConfigurations(vct)
sage: mg = RC.highest_weight_vector()
sage: elt = mg.f_string([1,0,3,4,2,2]); ascii_art(elt)
-1[ ]-1  0[ ]1  -2[ ][ ]-2  0[ ]1  -1[ ]-1
sage: wt = elt.weight(); wt
-Lambda[0] + Lambda[1] - 2*Lambda[2] + 3*Lambda[3] - Lambda[4] - delta
sage: al = RC.weight_lattice_realization().simple_roots()
sage: wt == -(al[0] + al[1] + 2*al[2] + al[3] + al[4])
True
>>> from sage.all import *
>>> vct = CartanType(['C', Integer(3)]).as_folding()
>>> RC = crystals.infinity.RiggedConfigurations(vct)
>>> elt = RC(partition_list=[[Integer(1)],[Integer(1),Integer(1)],[Integer(1)]], rigging_list=[[Integer(0)],[-Integer(1),-Integer(1)],[Integer(0)]])
>>> elt.weight()
(-1, -1, 0)

>>> vct = CartanType(['F', Integer(4), Integer(1)]).as_folding()
>>> RC = crystals.infinity.RiggedConfigurations(vct)
>>> mg = RC.highest_weight_vector()
>>> elt = mg.f_string([Integer(1),Integer(0),Integer(3),Integer(4),Integer(2),Integer(2)]); ascii_art(elt)
-1[ ]-1  0[ ]1  -2[ ][ ]-2  0[ ]1  -1[ ]-1
>>> wt = elt.weight(); wt
-Lambda[0] + Lambda[1] - 2*Lambda[2] + 3*Lambda[3] - Lambda[4] - delta
>>> al = RC.weight_lattice_realization().simple_roots()
>>> wt == -(al[Integer(0)] + al[Integer(1)] + Integer(2)*al[Integer(2)] + al[Integer(3)] + al[Integer(4)])
True
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: vct = CartanType(['C', 2]).as_folding()
sage: RC = crystals.infinity.RiggedConfigurations(vct)
sage: elt = RC(partition_list=[[3],[2]], rigging_list=[[-2],[0]])
sage: vrc_elt = RC.to_virtual(elt)
sage: ret = RC.from_virtual(vrc_elt); ret

-3[ ][ ][ ]-2

-1[ ][ ]0

sage: ret == elt
True
>>> from sage.all import *
>>> vct = CartanType(['C', Integer(2)]).as_folding()
>>> RC = crystals.infinity.RiggedConfigurations(vct)
>>> elt = RC(partition_list=[[Integer(3)],[Integer(2)]], rigging_list=[[-Integer(2)],[Integer(0)]])
>>> vrc_elt = RC.to_virtual(elt)
>>> ret = RC.from_virtual(vrc_elt); ret
<BLANKLINE>
-3[ ][ ][ ]-2
<BLANKLINE>
-1[ ][ ]0
<BLANKLINE>
>>> ret == elt
True
to_virtual(rc)[source]

Convert rc into a rigged configuration in the virtual crystal.

INPUT:

  • rc – a rigged configuration element

EXAMPLES:

sage: vct = CartanType(['C', 2]).as_folding()
sage: RC = crystals.infinity.RiggedConfigurations(vct)
sage: mg = RC.highest_weight_vector()
sage: elt = mg.f_string([1,2,2,1,1]); elt

-3[ ][ ][ ]-2

-1[ ][ ]0

sage: velt = RC.to_virtual(elt); velt

-3[ ][ ][ ]-2

-2[ ][ ][ ][ ]0

-3[ ][ ][ ]-2

sage: velt.parent()
The infinity crystal of rigged configurations of type ['A', 3]
>>> from sage.all import *
>>> vct = CartanType(['C', Integer(2)]).as_folding()
>>> RC = crystals.infinity.RiggedConfigurations(vct)
>>> mg = RC.highest_weight_vector()
>>> elt = mg.f_string([Integer(1),Integer(2),Integer(2),Integer(1),Integer(1)]); elt
<BLANKLINE>
-3[ ][ ][ ]-2
<BLANKLINE>
-1[ ][ ]0
<BLANKLINE>
>>> velt = RC.to_virtual(elt); velt
<BLANKLINE>
-3[ ][ ][ ]-2
<BLANKLINE>
-2[ ][ ][ ][ ]0
<BLANKLINE>
-3[ ][ ][ ]-2
<BLANKLINE>
>>> velt.parent()
The infinity crystal of rigged configurations of type ['A', 3]
virtual()[source]

Return the corresponding virtual crystal.

EXAMPLES:

sage: vct = CartanType(['C', 3]).as_folding()
sage: RC = crystals.infinity.RiggedConfigurations(vct)
sage: RC
The infinity crystal of rigged configurations of type ['C', 3]
sage: RC.virtual
The infinity crystal of rigged configurations of type ['A', 5]
>>> from sage.all import *
>>> vct = CartanType(['C', Integer(3)]).as_folding()
>>> RC = crystals.infinity.RiggedConfigurations(vct)
>>> RC
The infinity crystal of rigged configurations of type ['C', 3]
>>> RC.virtual
The infinity crystal of rigged configurations of type ['A', 5]
class sage.combinat.rigged_configurations.rc_infinity.InfinityCrystalOfRiggedConfigurations(cartan_type)[source]

Bases: UniqueRepresentation, Parent

Rigged configuration model for \(\mathcal{B}(\infty)\).

The crystal is generated by the empty rigged configuration with the same crystal structure given by the highest weight model except we remove the condition that the resulting rigged configuration needs to be valid when applying \(f_a\).

INPUT:

  • cartan_type – a Cartan type

EXAMPLES:

For simplicity, we display all of the rigged configurations horizontally:

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

We begin with a simply-laced finite type:

sage: RC = crystals.infinity.RiggedConfigurations(['A', 3]); RC
The infinity crystal of rigged configurations of type ['A', 3]

sage: RC.options(display='horizontal')

sage: mg = RC.highest_weight_vector(); mg
(/)  (/)  (/)
sage: elt = mg.f_string([2,1,3,2]); elt
0[ ]0   -2[ ]-1   0[ ]0
        -2[ ]-1
sage: elt.e(1)
sage: elt.e(3)
sage: mg.f_string([2,1,3,2]).e(2)
-1[ ]-1  0[ ]1  -1[ ]-1
sage: mg.f_string([2,3,2,1,3,2])
0[ ]0  -3[ ][ ]-1  -1[ ][ ]-1
       -2[ ]-1
>>> from sage.all import *
>>> RC = crystals.infinity.RiggedConfigurations(['A', Integer(3)]); RC
The infinity crystal of rigged configurations of type ['A', 3]

>>> RC.options(display='horizontal')

>>> mg = RC.highest_weight_vector(); mg
(/)  (/)  (/)
>>> elt = mg.f_string([Integer(2),Integer(1),Integer(3),Integer(2)]); elt
0[ ]0   -2[ ]-1   0[ ]0
        -2[ ]-1
>>> elt.e(Integer(1))
>>> elt.e(Integer(3))
>>> mg.f_string([Integer(2),Integer(1),Integer(3),Integer(2)]).e(Integer(2))
-1[ ]-1  0[ ]1  -1[ ]-1
>>> mg.f_string([Integer(2),Integer(3),Integer(2),Integer(1),Integer(3),Integer(2)])
0[ ]0  -3[ ][ ]-1  -1[ ][ ]-1
       -2[ ]-1

Next we consider a non-simply-laced finite type:

sage: RC = crystals.infinity.RiggedConfigurations(['C', 3])
sage: mg = RC.highest_weight_vector()
sage: mg.f_string([2,1,3,2])
0[ ]0   -1[ ]0    0[ ]0
        -1[ ]-1
sage: mg.f_string([2,3,2,1,3,2])
0[ ]-1   -1[ ][ ]-1   -1[ ][ ]0
         -1[ ]0
>>> from sage.all import *
>>> RC = crystals.infinity.RiggedConfigurations(['C', Integer(3)])
>>> mg = RC.highest_weight_vector()
>>> mg.f_string([Integer(2),Integer(1),Integer(3),Integer(2)])
0[ ]0   -1[ ]0    0[ ]0
        -1[ ]-1
>>> mg.f_string([Integer(2),Integer(3),Integer(2),Integer(1),Integer(3),Integer(2)])
0[ ]-1   -1[ ][ ]-1   -1[ ][ ]0
         -1[ ]0

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: VRC = crystals.infinity.RiggedConfigurations(vct)
sage: mg = VRC.highest_weight_vector()
sage: mg.f_string([2,1,3,2])
0[ ]0   -2[ ]-1   0[ ]0
        -2[ ]-1
sage: mg.f_string([2,3,2,1,3,2])
-1[ ]-1  -2[ ][ ][ ]-1  -1[ ][ ]0

sage: G = RC.subcrystal(max_depth=5).digraph()
sage: VG = VRC.subcrystal(max_depth=5).digraph()
sage: G.is_isomorphic(VG, edge_labels=True)
True
>>> from sage.all import *
>>> vct = CartanType(['C', Integer(3)]).as_folding()
>>> VRC = crystals.infinity.RiggedConfigurations(vct)
>>> mg = VRC.highest_weight_vector()
>>> mg.f_string([Integer(2),Integer(1),Integer(3),Integer(2)])
0[ ]0   -2[ ]-1   0[ ]0
        -2[ ]-1
>>> mg.f_string([Integer(2),Integer(3),Integer(2),Integer(1),Integer(3),Integer(2)])
-1[ ]-1  -2[ ][ ][ ]-1  -1[ ][ ]0

>>> G = RC.subcrystal(max_depth=Integer(5)).digraph()
>>> VG = VRC.subcrystal(max_depth=Integer(5)).digraph()
>>> G.is_isomorphic(VG, edge_labels=True)
True

We can also construct \(B(\infty)\) using rigged configurations in affine types:

sage: RC = crystals.infinity.RiggedConfigurations(['A', 3, 1])
sage: mg = RC.highest_weight_vector()
sage: mg.f_string([0,1,2,3,0,1,3])
-1[ ]0  -1[ ]-1  1[ ]1  -1[ ][ ]-1
-1[ ]0  -1[ ]-1

sage: RC = crystals.infinity.RiggedConfigurations(['C', 3, 1])
sage: mg = RC.highest_weight_vector()
sage: mg.f_string([1,2,3,0,1,2,3,3,0])
-2[ ][ ]-1   0[ ]1   0[ ]0    -4[ ][ ][ ]-2
             0[ ]0   0[ ]-1

sage: RC = crystals.infinity.RiggedConfigurations(['A', 6, 2])
sage: mg = RC.highest_weight_vector()
sage: mg.f_string([1,2,3,0,1,2,3,3,0])
0[ ]-1   0[ ]1   0[ ]0    -4[ ][ ][ ]-2
0[ ]-1   0[ ]1   0[ ]-1
>>> from sage.all import *
>>> RC = crystals.infinity.RiggedConfigurations(['A', Integer(3), Integer(1)])
>>> mg = RC.highest_weight_vector()
>>> mg.f_string([Integer(0),Integer(1),Integer(2),Integer(3),Integer(0),Integer(1),Integer(3)])
-1[ ]0  -1[ ]-1  1[ ]1  -1[ ][ ]-1
-1[ ]0  -1[ ]-1

>>> RC = crystals.infinity.RiggedConfigurations(['C', Integer(3), Integer(1)])
>>> mg = RC.highest_weight_vector()
>>> mg.f_string([Integer(1),Integer(2),Integer(3),Integer(0),Integer(1),Integer(2),Integer(3),Integer(3),Integer(0)])
-2[ ][ ]-1   0[ ]1   0[ ]0    -4[ ][ ][ ]-2
             0[ ]0   0[ ]-1

>>> RC = crystals.infinity.RiggedConfigurations(['A', Integer(6), Integer(2)])
>>> mg = RC.highest_weight_vector()
>>> mg.f_string([Integer(1),Integer(2),Integer(3),Integer(0),Integer(1),Integer(2),Integer(3),Integer(3),Integer(0)])
0[ ]-1   0[ ]1   0[ ]0    -4[ ][ ][ ]-2
0[ ]-1   0[ ]1   0[ ]-1

We reset the global options:

sage: RiggedConfigurations.options._reset()
>>> from sage.all import *
>>> RiggedConfigurations.options._reset()
class Element(parent, rigged_partitions=[], **options)[source]

Bases: RiggedConfigurationElement

A rigged configuration in \(\mathcal{B}(\infty)\) in simply-laced types.

weight()[source]

Return the weight of self.

EXAMPLES:

sage: RC = crystals.infinity.RiggedConfigurations(['A', 3, 1])
sage: elt = RC(partition_list=[[1,1]]*4, rigging_list=[[1,1], [0,0], [0,0], [-1,-1]])
sage: elt.weight()
-2*delta
>>> from sage.all import *
>>> RC = crystals.infinity.RiggedConfigurations(['A', Integer(3), Integer(1)])
>>> elt = RC(partition_list=[[Integer(1),Integer(1)]]*Integer(4), rigging_list=[[Integer(1),Integer(1)], [Integer(0),Integer(0)], [Integer(0),Integer(0)], [-Integer(1),-Integer(1)]])
>>> elt.weight()
-2*delta
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: RC = crystals.infinity.RiggedConfigurations(['A', 2, 1])
sage: RC.weight_lattice_realization()
Extended weight lattice of the Root system of type ['A', 2, 1]
>>> from sage.all import *
>>> RC = crystals.infinity.RiggedConfigurations(['A', Integer(2), Integer(1)])
>>> RC.weight_lattice_realization()
Extended weight lattice of the Root system of type ['A', 2, 1]