Ribbon shaped tableaux - Combinatorics

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

# Ribbon shaped tableaux

class sage.combinat.ribbon_shaped_tableau.RibbonShapedTableau(parent, t)

  Bases: `SkewTableau`

  A ribbon shaped tableau.

  For the purposes of this class, a ribbon shaped tableau is a skew tableau whose shape is a skew partition which:

  - has at least one cell in row \(1\);

  - has at least one cell in column \(1\);

  - has exactly one cell in each of \(q\) consecutive diagonals, for some nonnegative integer \(q\).

  A ribbon is given by a list of the rows from top to bottom.

  EXAMPLES:

  Sage

      sage: x = RibbonShapedTableau([[None, None, None, 2, 3], [None, 1, 4, 5], [3, 2]]); x
      [[None, None, None, 2, 3], [None, 1, 4, 5], [3, 2]]
      sage: x.pp()
        .  .  .  2  3
        .  1  4  5
        3  2
      sage: x.shape()
      [5, 4, 2] / [3, 1]

  Python

      >>> from sage.all import *
      >>> x = RibbonShapedTableau([[None, None, None, Integer(2), Integer(3)], [None, Integer(1), Integer(4), Integer(5)], [Integer(3), Integer(2)]]); x
      [[None, None, None, 2, 3], [None, 1, 4, 5], [3, 2]]
      >>> x.pp()
        .  .  .  2  3
        .  1  4  5
        3  2
      >>> x.shape()
      [5, 4, 2] / [3, 1]

  The entries labeled by `None` correspond to the inner partition. Using `None` is optional; the entries will be shifted accordingly.

  Sage

      sage: x = RibbonShapedTableau([[2,3],[1,4,5],[3,2]]); x.pp()
        .  .  .  2  3
        .  1  4  5
        3  2

  [Python]

      >>> from sage.all import *
      >>> x = RibbonShapedTableau([[Integer(2),Integer(3)],[Integer(1),Integer(4),Integer(5)],[Integer(3),Integer(2)]]); x.pp()
        .  .  .  2  3
        .  1  4  5
        3  2

  height()

    Return the height of `self`.

    The height is given by the number of rows in the outer partition.

    EXAMPLES:

    Sage

        sage: RibbonShapedTableau([[2,3],[1,4,5]]).height()
        2

    Python

        >>> from sage.all import *
        >>> RibbonShapedTableau([[Integer(2),Integer(3)],[Integer(1),Integer(4),Integer(5)]]).height()
        2

  spin()

    Return the spin of `self`.

    EXAMPLES:

    Sage

        sage: RibbonShapedTableau([[2,3],[1,4,5]]).spin()
        1/2

    Python

        >>> from sage.all import *
        >>> RibbonShapedTableau([[Integer(2),Integer(3)],[Integer(1),Integer(4),Integer(5)]]).spin()
        1/2

  width()

    Return the width of the ribbon.

    This is given by the length of the longest row in the outer partition.

    EXAMPLES:

    Sage

        sage: RibbonShapedTableau([[2,3],[1,4,5]]).width()
        4
        sage: RibbonShapedTableau([]).width()
        0

    Python

        >>> from sage.all import *
        >>> RibbonShapedTableau([[Integer(2),Integer(3)],[Integer(1),Integer(4),Integer(5)]]).width()
        4
        >>> RibbonShapedTableau([]).width()
        0

class sage.combinat.ribbon_shaped_tableau.RibbonShapedTableaux(category=None)

  Bases: `SkewTableaux`

  The set of all ribbon shaped tableaux.

  Element

    alias of `RibbonShapedTableau`

  from_shape_and_word(shape, word)

    Return the ribbon corresponding to the given ribbon shape and word.

    EXAMPLES:

    Sage

        sage: RibbonShapedTableaux().from_shape_and_word([1,3],[1,3,3,7])
        [[None, None, 1], [3, 3, 7]]

    Python

        >>> from sage.all import *
        >>> RibbonShapedTableaux().from_shape_and_word([Integer(1),Integer(3)],[Integer(1),Integer(3),Integer(3),Integer(7)])
        [[None, None, 1], [3, 3, 7]]

  options = Current options for Tableaux - ascii_art: repr - convention: English - display: list - latex: diagram

class sage.combinat.ribbon_shaped_tableau.Ribbon_class(parent, t)

  Bases: `RibbonShapedTableau`

  This exists solely for unpickling `Ribbon_class` objects.

class sage.combinat.ribbon_shaped_tableau.StandardRibbonShapedTableaux(category=None)

  Bases: `StandardSkewTableaux`

  The set of all standard ribbon shaped tableaux.

  INPUT:

  - `shape` – (optional) the composition shape of the rows

  Element

    alias of `RibbonShapedTableau`

  from_permutation(p)

    Return a standard ribbon of size `len(p)` from a permutation `p`. The lengths of each row are given by the distance between the descents of the permutation `p`.

    EXAMPLES:

    Sage

        sage: import sage.combinat.ribbon_shaped_tableau as rst
        sage: [StandardRibbonShapedTableaux().from_permutation(p)
        ....:  for p in Permutations(3)]
        [[[1, 2, 3]],
         [[None, 2], [1, 3]],
         [[1, 3], [2]],
         [[None, 1], [2, 3]],
         [[1, 2], [3]],
         [[1], [2], [3]]]

    Python

        >>> from sage.all import *
        >>> import sage.combinat.ribbon_shaped_tableau as rst
        >>> [StandardRibbonShapedTableaux().from_permutation(p)
        ...  for p in Permutations(Integer(3))]
        [[[1, 2, 3]],
         [[None, 2], [1, 3]],
         [[1, 3], [2]],
         [[None, 1], [2, 3]],
         [[1, 2], [3]],
         [[1], [2], [3]]]

  from_shape_and_word(shape, word)

    Return the ribbon corresponding to the given ribbon shape and word.

    EXAMPLES:

    Sage

        sage: StandardRibbonShapedTableaux().from_shape_and_word([2,3],[1,2,3,4,5])
        [[None, None, 1, 2], [3, 4, 5]]

    Python

        >>> from sage.all import *
        >>> StandardRibbonShapedTableaux().from_shape_and_word([Integer(2),Integer(3)],[Integer(1),Integer(2),Integer(3),Integer(4),Integer(5)])
        [[None, None, 1, 2], [3, 4, 5]]

  options = Current options for Tableaux - ascii_art: repr - convention: English - display: list - latex: diagram

class sage.combinat.ribbon_shaped_tableau.StandardRibbonShapedTableaux_shape(shape)

  Bases: `StandardRibbonShapedTableaux`

  Class of standard ribbon shaped tableaux of ribbon shape `shape`.

  EXAMPLES:

  Sage

      sage: StandardRibbonShapedTableaux([2,2])
      Standard ribbon shaped tableaux of shape [2, 2]
      sage: StandardRibbonShapedTableaux([2,2]).first()
      [[None, 2, 4], [1, 3]]
      sage: StandardRibbonShapedTableaux([2,2]).last()
      [[None, 1, 2], [3, 4]]

      sage: # needs sage.graphs sage.modules
      sage: StandardRibbonShapedTableaux([2,2]).cardinality()
      5
      sage: StandardRibbonShapedTableaux([2,2]).list()
      [[[None, 1, 3], [2, 4]],
       [[None, 1, 2], [3, 4]],
       [[None, 2, 3], [1, 4]],
       [[None, 2, 4], [1, 3]],
       [[None, 1, 4], [2, 3]]]
      sage: StandardRibbonShapedTableaux([3,2,2]).cardinality()
      155

  Python

      >>> from sage.all import *
      >>> StandardRibbonShapedTableaux([Integer(2),Integer(2)])
      Standard ribbon shaped tableaux of shape [2, 2]
      >>> StandardRibbonShapedTableaux([Integer(2),Integer(2)]).first()
      [[None, 2, 4], [1, 3]]
      >>> StandardRibbonShapedTableaux([Integer(2),Integer(2)]).last()
      [[None, 1, 2], [3, 4]]

      >>> # needs sage.graphs sage.modules
      >>> StandardRibbonShapedTableaux([Integer(2),Integer(2)]).cardinality()
      5
      >>> StandardRibbonShapedTableaux([Integer(2),Integer(2)]).list()
      [[[None, 1, 3], [2, 4]],
       [[None, 1, 2], [3, 4]],
       [[None, 2, 3], [1, 4]],
       [[None, 2, 4], [1, 3]],
       [[None, 1, 4], [2, 3]]]
      >>> StandardRibbonShapedTableaux([Integer(3),Integer(2),Integer(2)]).cardinality()
      155

  first()

    Return the first standard ribbon of `self`.

    EXAMPLES:

    Sage

        sage: StandardRibbonShapedTableaux([2,2]).first()
        [[None, 2, 4], [1, 3]]

    Python

        >>> from sage.all import *
        >>> StandardRibbonShapedTableaux([Integer(2),Integer(2)]).first()
        [[None, 2, 4], [1, 3]]

  last()

    Return the last standard ribbon of `self`.

    EXAMPLES:

    Sage

        sage: StandardRibbonShapedTableaux([2,2]).last()
        [[None, 1, 2], [3, 4]]

    Python

        >>> from sage.all import *
        >>> StandardRibbonShapedTableaux([Integer(2),Integer(2)]).last()
        [[None, 1, 2], [3, 4]]