Tensor product of Kirillov-Reshetikhin tableaux elements - Combinatorics

Skip to content
Back to top
View this page
Edit this page

# Tensor product of Kirillov-Reshetikhin tableaux elements

A tensor product of `KirillovReshetikhinTableauxElement`.

AUTHORS:

- Travis Scrimshaw (2010-09-26): initial version

class sage.combinat.rigged_configurations.tensor_product_kr_tableaux_element.TensorProductOfKirillovReshetikhinTableauxElement(parent, list=[[]], **options)

  Bases: `TensorProductOfRegularCrystalsElement`

  An element in a tensor product of Kirillov-Reshetikhin tableaux.

  For more on tensor product of Kirillov-Reshetikhin tableaux, see `TensorProductOfKirillovReshetikhinTableaux`.

  The most common way to construct an element is to specify the option `pathlist` which is a list of lists which will be used to generate the individual factors of `KirillovReshetikhinTableauxElement`.

  EXAMPLES:

  Type \(A_n^{(1)}\) examples:

  Sage

      sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 3, 1], [[1,1], [2,1], [1,1], [2,1], [2,1], [2,1]])
      sage: T = KRT(pathlist=[[2], [4,1], [3], [4,2], [3,1], [2,1]])
      sage: T
      [[2]] (X) [[1], [4]] (X) [[3]] (X) [[2], [4]] (X) [[1], [3]] (X) [[1], [2]]
      sage: T.to_rigged_configuration()

      0[ ][ ]0
      1[ ]1

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

      0[ ][ ]0

      sage: T = KRT(pathlist=[[1], [2,1], [1], [4,1], [3,1], [2,1]])
      sage: T
      [[1]] (X) [[1], [2]] (X) [[1]] (X) [[1], [4]] (X) [[1], [3]] (X) [[1], [2]]
      sage: T.to_rigged_configuration()

      (/)

      1[ ]0
      1[ ]0

      0[ ]0

  Python

      >>> from sage.all import *
      >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', Integer(3), Integer(1)], [[Integer(1),Integer(1)], [Integer(2),Integer(1)], [Integer(1),Integer(1)], [Integer(2),Integer(1)], [Integer(2),Integer(1)], [Integer(2),Integer(1)]])
      >>> T = KRT(pathlist=[[Integer(2)], [Integer(4),Integer(1)], [Integer(3)], [Integer(4),Integer(2)], [Integer(3),Integer(1)], [Integer(2),Integer(1)]])
      >>> T
      [[2]] (X) [[1], [4]] (X) [[3]] (X) [[2], [4]] (X) [[1], [3]] (X) [[1], [2]]
      >>> T.to_rigged_configuration()
      <BLANKLINE>
      0[ ][ ]0
      1[ ]1
      <BLANKLINE>
      1[ ][ ]0
      1[ ]0
      1[ ]0
      <BLANKLINE>
      0[ ][ ]0
      <BLANKLINE>
      >>> T = KRT(pathlist=[[Integer(1)], [Integer(2),Integer(1)], [Integer(1)], [Integer(4),Integer(1)], [Integer(3),Integer(1)], [Integer(2),Integer(1)]])
      >>> T
      [[1]] (X) [[1], [2]] (X) [[1]] (X) [[1], [4]] (X) [[1], [3]] (X) [[1], [2]]
      >>> T.to_rigged_configuration()
      <BLANKLINE>
      (/)
      <BLANKLINE>
      1[ ]0
      1[ ]0
      <BLANKLINE>
      0[ ]0
      <BLANKLINE>

  Type \(D_n^{(1)}\) examples:

  Sage

      sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 1], [[1,1], [1,1], [1,1], [1,1]])
      sage: T = KRT(pathlist=[[-1], [-1], [1], [1]])
      sage: T
      [[-1]] (X) [[-1]] (X) [[1]] (X) [[1]]
      sage: T.to_rigged_configuration()

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

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

      0[ ][ ]0

      0[ ][ ]0

      sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 1], [[2,1], [1,1], [1,1], [1,1]])
      sage: T = KRT(pathlist=[[3,2], [1], [-1], [1]])
      sage: T
      [[2], [3]] (X) [[1]] (X) [[-1]] (X) [[1]]
      sage: T.to_rigged_configuration()

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

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

      1[ ]0

      1[ ]0

      sage: T.to_rigged_configuration().to_tensor_product_of_kirillov_reshetikhin_tableaux()
      [[2], [3]] (X) [[1]] (X) [[-1]] (X) [[1]]

  [Python]

      >>> from sage.all import *
      >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', Integer(4), Integer(1)], [[Integer(1),Integer(1)], [Integer(1),Integer(1)], [Integer(1),Integer(1)], [Integer(1),Integer(1)]])
      >>> T = KRT(pathlist=[[-Integer(1)], [-Integer(1)], [Integer(1)], [Integer(1)]])
      >>> T
      [[-1]] (X) [[-1]] (X) [[1]] (X) [[1]]
      >>> T.to_rigged_configuration()
      <BLANKLINE>
      0[ ][ ]0
      0[ ][ ]0
      <BLANKLINE>
      0[ ][ ]0
      0[ ][ ]0
      <BLANKLINE>
      0[ ][ ]0
      <BLANKLINE>
      0[ ][ ]0
      <BLANKLINE>
      >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', Integer(4), Integer(1)], [[Integer(2),Integer(1)], [Integer(1),Integer(1)], [Integer(1),Integer(1)], [Integer(1),Integer(1)]])
      >>> T = KRT(pathlist=[[Integer(3),Integer(2)], [Integer(1)], [-Integer(1)], [Integer(1)]])
      >>> T
      [[2], [3]] (X) [[1]] (X) [[-1]] (X) [[1]]
      >>> T.to_rigged_configuration()
      <BLANKLINE>
      0[ ]0
      0[ ]0
      0[ ]0
      <BLANKLINE>
      0[ ]0
      0[ ]0
      0[ ]0
      <BLANKLINE>
      1[ ]0
      <BLANKLINE>
      1[ ]0
      <BLANKLINE>
      >>> T.to_rigged_configuration().to_tensor_product_of_kirillov_reshetikhin_tableaux()
      [[2], [3]] (X) [[1]] (X) [[-1]] (X) [[1]]

  classical_weight()

    Return the classical weight of `self`.

    EXAMPLES:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,2]])
        sage: elt = KRT(pathlist=[[3,2,-1,1]]); elt
        [[2, 1], [3, -1]]
        sage: elt.classical_weight()
        (0, 1, 1, 0)
        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[2,2],[1,3]])
        sage: elt = KRT(pathlist=[[2,1,3,2],[1,4,4]]); elt
        [[1, 2], [2, 3]] (X) [[1, 4, 4]]
        sage: elt.classical_weight()
        (2, 2, 1, 2)

    Python

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',Integer(4),Integer(1)], [[Integer(2),Integer(2)]])
        >>> elt = KRT(pathlist=[[Integer(3),Integer(2),-Integer(1),Integer(1)]]); elt
        [[2, 1], [3, -1]]
        >>> elt.classical_weight()
        (0, 1, 1, 0)
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',Integer(3),Integer(1)], [[Integer(2),Integer(2)],[Integer(1),Integer(3)]])
        >>> elt = KRT(pathlist=[[Integer(2),Integer(1),Integer(3),Integer(2)],[Integer(1),Integer(4),Integer(4)]]); elt
        [[1, 2], [2, 3]] (X) [[1, 4, 4]]
        >>> elt.classical_weight()
        (2, 2, 1, 2)

  left_split()

    Return the image of `self` under the left column splitting map.

    EXAMPLES:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[2,2],[1,3]])
        sage: elt = KRT(pathlist=[[2,1,3,2],[1,4,4]]); elt.pp()
          1  2 (X)   1  4  4
          2  3
        sage: elt.left_split().pp()
          1 (X)   2 (X)   1  4  4
          2       3

    Python

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',Integer(3),Integer(1)], [[Integer(2),Integer(2)],[Integer(1),Integer(3)]])
        >>> elt = KRT(pathlist=[[Integer(2),Integer(1),Integer(3),Integer(2)],[Integer(1),Integer(4),Integer(4)]]); elt.pp()
          1  2 (X)   1  4  4
          2  3
        >>> elt.left_split().pp()
          1 (X)   2 (X)   1  4  4
          2       3

  lusztig_involution()

    Return the result of the classical Lusztig involution on `self`.

    EXAMPLES:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[2,2],[1,3]])
        sage: elt = KRT(pathlist=[[2,1,3,2],[1,4,4]])
        sage: li = elt.lusztig_involution(); li
        [[1, 1, 4]] (X) [[2, 3], [3, 4]]
        sage: li.parent()
        Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and factor(s) ((1, 3), (2, 2))

    Python

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',Integer(3),Integer(1)], [[Integer(2),Integer(2)],[Integer(1),Integer(3)]])
        >>> elt = KRT(pathlist=[[Integer(2),Integer(1),Integer(3),Integer(2)],[Integer(1),Integer(4),Integer(4)]])
        >>> li = elt.lusztig_involution(); li
        [[1, 1, 4]] (X) [[2, 3], [3, 4]]
        >>> li.parent()
        Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and factor(s) ((1, 3), (2, 2))

  pp()

    Pretty print `self`.

    EXAMPLES:

    Sage

        sage: TPKRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',4,1], [[2,2],[3,1],[3,3]])
        sage: TPKRT.module_generators[0].pp()
          1  1 (X)   1 (X)   1  1  1
          2  2       2       2  2  2
                     3       3  3  3

    Python

        >>> from sage.all import *
        >>> TPKRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',Integer(4),Integer(1)], [[Integer(2),Integer(2)],[Integer(3),Integer(1)],[Integer(3),Integer(3)]])
        >>> TPKRT.module_generators[Integer(0)].pp()
          1  1 (X)   1 (X)   1  1  1
          2  2       2       2  2  2
                     3       3  3  3

  right_split()

    Return the image of `self` under the right column splitting map.

    EXAMPLES:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[2,2],[1,3]])
        sage: elt = KRT(pathlist=[[2,1,3,2],[1,4,4]]); elt.pp()
          1  2 (X)   1  4  4
          2  3
        sage: elt.right_split().pp()
          1  2 (X)   1  4 (X)   4
          2  3

    Python

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',Integer(3),Integer(1)], [[Integer(2),Integer(2)],[Integer(1),Integer(3)]])
        >>> elt = KRT(pathlist=[[Integer(2),Integer(1),Integer(3),Integer(2)],[Integer(1),Integer(4),Integer(4)]]); elt.pp()
          1  2 (X)   1  4  4
          2  3
        >>> elt.right_split().pp()
          1  2 (X)   1  4 (X)   4
          2  3

    Let \(\ast\) denote the `Lusztig involution`, we check that \(\ast \circ \mathrm{ls} \circ \ast = \mathrm{rs}\):

    Sage

        sage: all(x.lusztig_involution().left_split().lusztig_involution() == x.right_split() for x in KRT)
        True

    [Python]

        >>> from sage.all import *
        >>> all(x.lusztig_involution().left_split().lusztig_involution() == x.right_split() for x in KRT)
        True

  to_rigged_configuration(display_steps=False)

    Perform the bijection from `self` to a `rigged configuration` which is described in [RigConBijection], [BijectionLRT], and [BijectionDn].

    Note

    This is only proven to be a bijection in types \(A_n^{(1)}\) and \(D_n^{(1)}\), as well as \(\bigotimes_i B^{r_i,1}\) and \(\bigotimes_i B^{1,s_i}\) for general affine types.

    INPUT:

    - `display_steps` – boolean (default: `False`); whether to output each step in the algorithm

    OUTPUT: the rigged configuration corresponding to `self`

    EXAMPLES:

    Type \(A_n^{(1)}\) example:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 3, 1], [[2,1], [2,1], [2,1]])
        sage: T = KRT(pathlist=[[4, 2], [3, 1], [2, 1]])
        sage: T
        [[2], [4]] (X) [[1], [3]] (X) [[1], [2]]
        sage: T.to_rigged_configuration()

        0[ ]0

        1[ ]1
        1[ ]0

        0[ ]0

    Python

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', Integer(3), Integer(1)], [[Integer(2),Integer(1)], [Integer(2),Integer(1)], [Integer(2),Integer(1)]])
        >>> T = KRT(pathlist=[[Integer(4), Integer(2)], [Integer(3), Integer(1)], [Integer(2), Integer(1)]])
        >>> T
        [[2], [4]] (X) [[1], [3]] (X) [[1], [2]]
        >>> T.to_rigged_configuration()
        <BLANKLINE>
        0[ ]0
        <BLANKLINE>
        1[ ]1
        1[ ]0
        <BLANKLINE>
        0[ ]0
        <BLANKLINE>

    Type \(D_n^{(1)}\) example:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 1], [[2,2]])
        sage: T = KRT(pathlist=[[2,1,4,3]])
        sage: T
        [[1, 3], [2, 4]]
        sage: T.to_rigged_configuration()

        0[ ]0

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

        0[ ]0

        (/)

    [Python]

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', Integer(4), Integer(1)], [[Integer(2),Integer(2)]])
        >>> T = KRT(pathlist=[[Integer(2),Integer(1),Integer(4),Integer(3)]])
        >>> T
        [[1, 3], [2, 4]]
        >>> T.to_rigged_configuration()
        <BLANKLINE>
        0[ ]0
        <BLANKLINE>
        -1[ ]-1
        -1[ ]-1
        <BLANKLINE>
        0[ ]0
        <BLANKLINE>
        (/)

    Type \(D_n^{(1)}\) spinor example:

    Sage

        sage: CP = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 5, 1], [[5,1],[2,1],[1,1],[1,1],[1,1]])
        sage: elt = CP(pathlist=[[-2,-5,4,3,1],[-1,2],[1],[1],[1]])
        sage: elt
        [[1], [3], [4], [-5], [-2]] (X) [[2], [-1]] (X) [[1]] (X) [[1]] (X) [[1]]
        sage: elt.to_rigged_configuration()

        2[ ][ ]1

        0[ ][ ]0
        0[ ]0

        0[ ][ ]0
        0[ ]0

        0[ ]0

        0[ ][ ]0

    Python

        >>> from sage.all import *
        >>> CP = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', Integer(5), Integer(1)], [[Integer(5),Integer(1)],[Integer(2),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)],[Integer(1),Integer(1)]])
        >>> elt = CP(pathlist=[[-Integer(2),-Integer(5),Integer(4),Integer(3),Integer(1)],[-Integer(1),Integer(2)],[Integer(1)],[Integer(1)],[Integer(1)]])
        >>> elt
        [[1], [3], [4], [-5], [-2]] (X) [[2], [-1]] (X) [[1]] (X) [[1]] (X) [[1]]
        >>> elt.to_rigged_configuration()
        <BLANKLINE>
        2[ ][ ]1
        <BLANKLINE>
        0[ ][ ]0
        0[ ]0
        <BLANKLINE>
        0[ ][ ]0
        0[ ]0
        <BLANKLINE>
        0[ ]0
        <BLANKLINE>
        0[ ][ ]0
        <BLANKLINE>

    This is invertible by calling `to_tensor_product_of_kirillov_reshetikhin_tableaux()`:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 1], [[2,2]])
        sage: T = KRT(pathlist=[[2,1,4,3]])
        sage: rc = T.to_rigged_configuration()
        sage: ret = rc.to_tensor_product_of_kirillov_reshetikhin_tableaux(); ret
        [[1, 3], [2, 4]]
        sage: ret == T
        True

    [Python]

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', Integer(4), Integer(1)], [[Integer(2),Integer(2)]])
        >>> T = KRT(pathlist=[[Integer(2),Integer(1),Integer(4),Integer(3)]])
        >>> rc = T.to_rigged_configuration()
        >>> ret = rc.to_tensor_product_of_kirillov_reshetikhin_tableaux(); ret
        [[1, 3], [2, 4]]
        >>> ret == T
        True

  to_tensor_product_of_kirillov_reshetikhin_crystals()

    Return a tensor product of Kirillov-Reshetikhin crystals corresponding to `self`.

    This works by performing the filling map on each individual factor. For more on the filling map, see `KirillovReshetikhinTableaux`.

    EXAMPLES:

    Sage

        sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[1,1],[2,2]])
        sage: elt = KRT(pathlist=[[-1],[-1,2,-1,1]]); elt
        [[-1]] (X) [[2, 1], [-1, -1]]
        sage: tp_krc = elt.to_tensor_product_of_kirillov_reshetikhin_crystals(); tp_krc
        [[[-1]], [[2], [-1]]]

    Python

        >>> from sage.all import *
        >>> KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',Integer(4),Integer(1)], [[Integer(1),Integer(1)],[Integer(2),Integer(2)]])
        >>> elt = KRT(pathlist=[[-Integer(1)],[-Integer(1),Integer(2),-Integer(1),Integer(1)]]); elt
        [[-1]] (X) [[2, 1], [-1, -1]]
        >>> tp_krc = elt.to_tensor_product_of_kirillov_reshetikhin_crystals(); tp_krc
        [[[-1]], [[2], [-1]]]

    We can recover the original tensor product of KR tableaux:

    Sage

        sage: ret = KRT(tp_krc); ret
        [[-1]] (X) [[2, 1], [-1, -1]]
        sage: ret == elt
        True

    [Python]

        >>> from sage.all import *
        >>> ret = KRT(tp_krc); ret
        [[-1]] (X) [[2, 1], [-1, -1]]
        >>> ret == elt
        True