### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Crystals »

# Crystals of letters

Crystals of letters

class `sage.combinat.crystals.letters.``ClassicalCrystalOfLetters`(cartan_type, element_class, element_print_style=None, dual=None)

  Bases: `sage.structure.unique_representation.UniqueRepresentation`, `sage.structure.parent.Parent`

  A generic class for classical crystals of letters.

  All classical crystals of letters should be instances of this class or of subclasses. To define a new crystal of letters, one only needs to implement a class for the elements (which subclasses `Letter`), with appropriate \(e_i\) and \(f_i\) operations. If the module generator is not \(1\), one also needs to define the subclass `ClassicalCrystalOfLetters` for the crystal itself.

  The basic assumption is that crystals of letters are small, but used intensively as building blocks. Therefore, we explicitly build in memory the list of all elements, the crystal graph and its transitive closure, so as to make the following operations constant time: `list`, `cmp`, (todo: `phi`, `epsilon`, `e`, and `f` with caching)

  `list`()

    Return a list of the elements of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['A',5])
        sage: C.list()
        [1, 2, 3, 4, 5, 6]

  `lt_elements`(x, y)

    Return `True` if and only if there is a path from `x` to `y` in the crystal graph, when `x` is not equal to `y`.

    Because the crystal graph is classical, it is a directed acyclic graph which can be interpreted as a poset. This function implements the comparison function of this poset.

    EXAMPLES:

        sage: C = crystals.Letters(['A', 5])
        sage: x = C(1)
        sage: y = C(2)
        sage: C.lt_elements(x,y)
        True
        sage: C.lt_elements(y,x)
        False
        sage: C.lt_elements(x,x)
        False
        sage: C = crystals.Letters(['D', 4])
        sage: C.lt_elements(C(4),C(-4))
        False
        sage: C.lt_elements(C(-4),C(4))
        False

`sage.combinat.crystals.letters.``CrystalOfLetters`(cartan_type, element_print_style=None, dual=None)

  Return the crystal of letters of the given type.

  For classical types, this is a combinatorial model for the crystal with highest weight \(\Lambda_1\) (the first fundamental weight).

  Any irreducible classical crystal appears as the irreducible component of the tensor product of several copies of this crystal (plus possibly one copy of the spin crystal, see `CrystalOfSpins`). See [KN94]. Elements of this irreducible component have a fixed shape, and can be fit inside a tableau shape. Otherwise said, any irreducible classical crystal is isomorphic to a crystal of tableaux with cells filled by elements of the crystal of letters (possibly tensored with the crystal of spins).

  INPUT:

  - `T` – A Cartan type

  REFERENCES:

  [KN94] | M. Kashiwara and T. Nakashima. Crystal graphs for representations of the \(q\)-analogue of classical Lie algebras. J. Algebra 165, no. 2, pp. 295–345, 1994.

  EXAMPLES:

      sage: C = crystals.Letters(['A',5])
      sage: C.list()
      [1, 2, 3, 4, 5, 6]
      sage: C.cartan_type()
      ['A', 5]

  For type \(E_6\), one can also specify how elements are printed. This option is usually set to None and the default representation is used. If one chooses the option ‘compact’, the elements are printed in the more compact convention with 27 letters `+abcdefghijklmnopqrstuvwxyz` and the 27 letters `-ABCDEFGHIJKLMNOPQRSTUVWXYZ` for the dual crystal.

  EXAMPLES:

      sage: C = crystals.Letters(['E',6], element_print_style = 'compact')
      sage: C
      The crystal of letters for type ['E', 6]
      sage: C.list()
      [+, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
      sage: C = crystals.Letters(['E',6], element_print_style = 'compact', dual = True)
      sage: C
      The crystal of letters for type ['E', 6] (dual)
      sage: C.list()
      [-, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_A_element`

  Bases: `sage.combinat.crystals.letters.Letter`

  Type \(A\) crystal of letters elements.

  TESTS:

      sage: C = crystals.Letters(['A',3])
      sage: C.list()
      [1, 2, 3, 4]
      sage: [ [x < y for y in C] for x in C ]
      [[False, True, True, True],
       [False, False, True, True],
       [False, False, False, True],
       [False, False, False, False]]

      sage: C = crystals.Letters(['A',5])
      sage: C(1) < C(1), C(1) < C(2), C(1) < C(3), C(2) < C(1)
      (False, True, True, False)

      sage: TestSuite(C).run()

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['A',4])
        sage: [(c,i,c.e(i)) for i in C.index_set() for c in C if c.e(i) is not None]
        [(2, 1, 1), (3, 2, 2), (4, 3, 3), (5, 4, 4)]

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['A',4])
        sage: [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != 0]
        [(2, 1), (3, 2), (4, 3), (5, 4)]

  `f`(i)

    Return the action of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['A',4])
        sage: [(c,i,c.f(i)) for i in C.index_set() for c in C if c.f(i) is not None]
        [(1, 1, 2), (2, 2, 3), (3, 3, 4), (4, 4, 5)]

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['A',4])
        sage: [(c,i) for i in C.index_set() for c in C if c.phi(i) != 0]
        [(1, 1), (2, 2), (3, 3), (4, 4)]

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: [v.weight() for v in crystals.Letters(['A',3])]
        [(1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1)]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_B_element`

  Bases: `sage.combinat.crystals.letters.Letter`

  Type \(B\) crystal of letters elements.

  TESTS:

      sage: C = crystals.Letters(['B',3])
      sage: TestSuite(C).run()

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['B',4])
        sage: [(c,i,c.e(i)) for i in C.index_set() for c in C if c.e(i) is not None]
        [(2, 1, 1),
         (-1, 1, -2),
         (3, 2, 2),
         (-2, 2, -3),
         (4, 3, 3),
         (-3, 3, -4),
         (0, 4, 4),
         (-4, 4, 0)]

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['B',3])
        sage: [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != 0]
        [(2, 1), (-1, 1), (3, 2), (-2, 2), (0, 3), (-3, 3)]

  `f`(i)

    Return the actions of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['B',4])
        sage: [(c,i,c.f(i)) for i in C.index_set() for c in C if c.f(i) is not None]
        [(1, 1, 2),
         (-2, 1, -1),
         (2, 2, 3),
         (-3, 2, -2),
         (3, 3, 4),
         (-4, 3, -3),
         (4, 4, 0),
         (0, 4, -4)]

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['B',3])
        sage: [(c,i) for i in C.index_set() for c in C if c.phi(i) != 0]
        [(1, 1), (-2, 1), (2, 2), (-3, 2), (3, 3), (0, 3)]

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: [v.weight() for v in crystals.Letters(['B',3])]
        [(1, 0, 0),
         (0, 1, 0),
         (0, 0, 1),
         (0, 0, 0),
         (0, 0, -1),
         (0, -1, 0),
         (-1, 0, 0)]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_C_element`

  Bases: `sage.combinat.crystals.letters.Letter`

  Type \(C\) crystal of letters elements.

  TESTS:

      sage: C = crystals.Letters (['C',3])
      sage: C.list()
      [1, 2, 3, -3, -2, -1]
      sage: [ [x < y for y in C] for x in C ]
      [[False, True, True, True, True, True],
       [False, False, True, True, True, True],
       [False, False, False, True, True, True],
       [False, False, False, False, True, True],
       [False, False, False, False, False, True],
       [False, False, False, False, False, False]]
      sage: TestSuite(C).run()

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['C',4])
        sage: [(c,i,c.e(i)) for i in C.index_set() for c in C if c.e(i) is not None]
        [(2, 1, 1),
         (-1, 1, -2),
         (3, 2, 2),
         (-2, 2, -3),
         (4, 3, 3),
         (-3, 3, -4),
         (-4, 4, 4)]

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['C',3])
        sage: [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != 0]
        [(2, 1), (-1, 1), (3, 2), (-2, 2), (-3, 3)]

  `f`(i)

    Return the action of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['C',4])
        sage: [(c,i,c.f(i)) for i in C.index_set() for c in C if c.f(i) is not None]
        [(1, 1, 2), (-2, 1, -1), (2, 2, 3),
         (-3, 2, -2), (3, 3, 4), (-4, 3, -3), (4, 4, -4)]

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['C',3])
        sage: [(c,i) for i in C.index_set() for c in C if c.phi(i) != 0]
        [(1, 1), (-2, 1), (2, 2), (-3, 2), (3, 3)]

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: [v.weight() for v in crystals.Letters(['C',3])]
        [(1, 0, 0), (0, 1, 0), (0, 0, 1), (0, 0, -1), (0, -1, 0), (-1, 0, 0)]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_D_element`

  Bases: `sage.combinat.crystals.letters.Letter`

  Type \(D\) crystal of letters elements.

  TESTS:

      sage: C = crystals.Letters(['D',4])
      sage: C.list()
      [1, 2, 3, 4, -4, -3, -2, -1]
      sage: TestSuite(C).run()

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['D',5])
        sage: [(c,i,c.e(i)) for i in C.index_set() for c in C if c.e(i) is not None]
        [(2, 1, 1),
         (-1, 1, -2),
         (3, 2, 2),
         (-2, 2, -3),
         (4, 3, 3),
         (-3, 3, -4),
         (5, 4, 4),
         (-4, 4, -5),
         (-5, 5, 4),
         (-4, 5, 5)]

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['D',4])
        sage: [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != 0]
        [(2, 1), (-1, 1), (3, 2), (-2, 2), (4, 3), (-3, 3), (-4, 4), (-3, 4)]

  `f`(i)

    Return the action of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['D',5])
        sage: [(c,i,c.f(i)) for i in C.index_set() for c in C if c.f(i) is not None]
        [(1, 1, 2),
         (-2, 1, -1),
         (2, 2, 3),
         (-3, 2, -2),
         (3, 3, 4),
         (-4, 3, -3),
         (4, 4, 5),
         (-5, 4, -4),
         (4, 5, -5),
         (5, 5, -4)]

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['D',4])
        sage: [(c,i) for i in C.index_set() for c in C if c.phi(i) != 0]
        [(1, 1), (-2, 1), (2, 2), (-3, 2), (3, 3), (-4, 3), (3, 4), (4, 4)]

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: [v.weight() for v in crystals.Letters(['D',4])]
        [(1, 0, 0, 0),
         (0, 1, 0, 0),
         (0, 0, 1, 0),
         (0, 0, 0, 1),
         (0, 0, 0, -1),
         (0, 0, -1, 0),
         (0, -1, 0, 0),
         (-1, 0, 0, 0)]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_E6_element`

  Bases: `sage.combinat.crystals.letters.LetterTuple`

  Type \(E_6\) crystal of letters elements. This crystal corresponds to the highest weight crystal \(B(\Lambda_1)\).

  TESTS:

      sage: C = crystals.Letters(['E',6])
      sage: C.module_generators
      ((1,),)
      sage: C.list()
      [(1,), (-1, 3), (-3, 4), (-4, 2, 5), (-2, 5), (-5, 2, 6), (-2, -5, 4, 6),
      (-4, 3, 6), (-3, 1, 6), (-1, 6), (-6, 2), (-2, -6, 4), (-4, -6, 3, 5),
      (-3, -6, 1, 5), (-1, -6, 5), (-5, 3), (-3, -5, 1, 4), (-1, -5, 4), (-4, 1, 2),
      (-1, -4, 2, 3), (-3, 2), (-2, -3, 4), (-4, 5), (-5, 6), (-6,), (-2, 1), (-1, -2, 3)]
      sage: TestSuite(C).run()
      sage: all(b.f(i).e(i) == b for i in C.index_set() for b in C if b.f(i) is not None)
      True
      sage: all(b.e(i).f(i) == b for i in C.index_set() for b in C if b.e(i) is not None)
      True
      sage: G = C.digraph()
      sage: G.show(edge_labels=true, figsize=12, vertex_size=1)

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6])
        sage: C((-1,3)).e(1)
        (1,)
        sage: C((-2,-3,4)).e(2)
        (-3, 2)
        sage: C((1,)).e(1)

  `f`(i)

    Return the action of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6])
        sage: C((1,)).f(1)
        (-1, 3)
        sage: C((-6,)).f(1)

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: [v.weight() for v in crystals.Letters(['E',6])]
        [(0, 0, 0, 0, 0, -2/3, -2/3, 2/3),
         (-1/2, 1/2, 1/2, 1/2, 1/2, -1/6, -1/6, 1/6),
         (1/2, -1/2, 1/2, 1/2, 1/2, -1/6, -1/6, 1/6),
         (1/2, 1/2, -1/2, 1/2, 1/2, -1/6, -1/6, 1/6),
         (-1/2, -1/2, -1/2, 1/2, 1/2, -1/6, -1/6, 1/6),
         (1/2, 1/2, 1/2, -1/2, 1/2, -1/6, -1/6, 1/6),
         (-1/2, -1/2, 1/2, -1/2, 1/2, -1/6, -1/6, 1/6),
         (-1/2, 1/2, -1/2, -1/2, 1/2, -1/6, -1/6, 1/6),
         (1/2, -1/2, -1/2, -1/2, 1/2, -1/6, -1/6, 1/6),
         (0, 0, 0, 0, 1, 1/3, 1/3, -1/3),
         (1/2, 1/2, 1/2, 1/2, -1/2, -1/6, -1/6, 1/6),
         (-1/2, -1/2, 1/2, 1/2, -1/2, -1/6, -1/6, 1/6),
         (-1/2, 1/2, -1/2, 1/2, -1/2, -1/6, -1/6, 1/6),
         (1/2, -1/2, -1/2, 1/2, -1/2, -1/6, -1/6, 1/6),
         (0, 0, 0, 1, 0, 1/3, 1/3, -1/3),
         (-1/2, 1/2, 1/2, -1/2, -1/2, -1/6, -1/6, 1/6),
         (1/2, -1/2, 1/2, -1/2, -1/2, -1/6, -1/6, 1/6),
         (0, 0, 1, 0, 0, 1/3, 1/3, -1/3),
         (1/2, 1/2, -1/2, -1/2, -1/2, -1/6, -1/6, 1/6),
         (0, 1, 0, 0, 0, 1/3, 1/3, -1/3),
         (1, 0, 0, 0, 0, 1/3, 1/3, -1/3),
         (0, -1, 0, 0, 0, 1/3, 1/3, -1/3),
         (0, 0, -1, 0, 0, 1/3, 1/3, -1/3),
         (0, 0, 0, -1, 0, 1/3, 1/3, -1/3),
         (0, 0, 0, 0, -1, 1/3, 1/3, -1/3),
         (-1/2, -1/2, -1/2, -1/2, -1/2, -1/6, -1/6, 1/6),
         (-1, 0, 0, 0, 0, 1/3, 1/3, -1/3)]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_E6_element_dual`

  Bases: `sage.combinat.crystals.letters.LetterTuple`

  Type \(E_6\) crystal of letters elements. This crystal corresponds to the highest weight crystal \(B(\Lambda_6)\). This crystal is dual to \(B(\Lambda_1)\) of type \(E_6\).

  TESTS:

      sage: C = crystals.Letters(['E',6], dual = True)
      sage: C.module_generators
      ((6,),)
      sage: all(b==b.retract(b.lift()) for b in C)
      True
      sage: C.list()
      [(6,), (5, -6), (4, -5), (2, 3, -4), (3, -2), (1, 2, -3), (2, -1), (1, 4, -2, -3),
       (4, -1, -2), (1, 5, -4), (3, 5, -1, -4), (5, -3), (1, 6, -5), (3, 6, -1, -5), (4, 6, -3, -5),
       (2, 6, -4), (6, -2), (1, -6), (3, -1, -6), (4, -3, -6), (2, 5, -4, -6), (5, -2, -6), (2, -5),
       (4, -2, -5), (3, -4), (1, -3), (-1,)]
      sage: TestSuite(C).run()
      sage: all(b.f(i).e(i) == b for i in C.index_set() for b in C if b.f(i) is not None)
      True
      sage: all(b.e(i).f(i) == b for i in C.index_set() for b in C if b.e(i) is not None)
      True
      sage: G = C.digraph()
      sage: G.show(edge_labels=true, figsize=12, vertex_size=1)

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6], dual = True)
        sage: C((-1,)).e(1)
        (1, -3)

  `f`(i)

    Return the action of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6], dual = True)
        sage: C((6,)).f(6)
        (5, -6)
        sage: C((6,)).f(1)

  `lift`()

    Lift an element of `self` to the crystal of letters `crystals.Letters(['E',6])` by taking its inverse weight.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6], dual = True)
        sage: b = C.module_generators[0]
        sage: b.lift()
        (-6,)

  `retract`(p)

    Retract element `p`, which is an element in `crystals.Letters(['E',6])` to an element in `crystals.Letters(['E',6], dual=True)` by taking its inverse weight.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6])
        sage: Cd = crystals.Letters(['E',6], dual = True)
        sage: b = Cd.module_generators[0]
        sage: p = C((-1,3))
        sage: b.retract(p)
        (1, -3)
        sage: b.retract(None)

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6], dual = True)
        sage: b=C.module_generators[0]
        sage: b.weight()
        (0, 0, 0, 0, 1, -1/3, -1/3, 1/3)
        sage: [v.weight() for v in C]
        [(0, 0, 0, 0, 1, -1/3, -1/3, 1/3),
        (0, 0, 0, 1, 0, -1/3, -1/3, 1/3),
        (0, 0, 1, 0, 0, -1/3, -1/3, 1/3),
        (0, 1, 0, 0, 0, -1/3, -1/3, 1/3),
        (-1, 0, 0, 0, 0, -1/3, -1/3, 1/3),
        (1, 0, 0, 0, 0, -1/3, -1/3, 1/3),
        (1/2, 1/2, 1/2, 1/2, 1/2, 1/6, 1/6, -1/6),
        (0, -1, 0, 0, 0, -1/3, -1/3, 1/3),
        (-1/2, -1/2, 1/2, 1/2, 1/2, 1/6, 1/6, -1/6),
        (0, 0, -1, 0, 0, -1/3, -1/3, 1/3),
        (-1/2, 1/2, -1/2, 1/2, 1/2, 1/6, 1/6, -1/6),
        (1/2, -1/2, -1/2, 1/2, 1/2, 1/6, 1/6, -1/6),
        (0, 0, 0, -1, 0, -1/3, -1/3, 1/3),
        (-1/2, 1/2, 1/2, -1/2, 1/2, 1/6, 1/6, -1/6),
        (1/2, -1/2, 1/2, -1/2, 1/2, 1/6, 1/6, -1/6),
        (1/2, 1/2, -1/2, -1/2, 1/2, 1/6, 1/6, -1/6),
        (-1/2, -1/2, -1/2, -1/2, 1/2, 1/6, 1/6, -1/6),
        (0, 0, 0, 0, -1, -1/3, -1/3, 1/3),
        (-1/2, 1/2, 1/2, 1/2, -1/2, 1/6, 1/6, -1/6),
        (1/2, -1/2, 1/2, 1/2, -1/2, 1/6, 1/6, -1/6),
        (1/2, 1/2, -1/2, 1/2, -1/2, 1/6, 1/6, -1/6),
        (-1/2, -1/2, -1/2, 1/2, -1/2, 1/6, 1/6, -1/6),
        (1/2, 1/2, 1/2, -1/2, -1/2, 1/6, 1/6, -1/6),
        (-1/2, -1/2, 1/2, -1/2, -1/2, 1/6, 1/6, -1/6),
        (-1/2, 1/2, -1/2, -1/2, -1/2, 1/6, 1/6, -1/6),
        (1/2, -1/2, -1/2, -1/2, -1/2, 1/6, 1/6, -1/6),
        (0, 0, 0, 0, 0, 2/3, 2/3, -2/3)]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_E7_element`

  Bases: `sage.combinat.crystals.letters.LetterTuple`

  Type \(E_7\) crystal of letters elements. This crystal corresponds to the highest weight crystal \(B(\Lambda_7)\).

  TESTS:

      sage: C = crystals.Letters(['E',7])
      sage: C.module_generators
      ((7,),)
      sage: C.list()
      [(7,), (-7, 6), (-6, 5), (-5, 4), (-4, 2, 3), (-2, 3), (-3, 1, 2), (-1,
      2), (-3, -2, 1, 4), (-1, -2, 4), (-4, 1, 5), (-4, -1, 3, 5), (-3, 5),
      (-5, 6, 1), (-5, -1, 3, 6), (-5, -3, 4, 6), (-4, 2, 6), (-2, 6), (-6, 7,
      1), (-1, -6, 3, 7), (-6, -3, 7, 4), (-6, -4, 2, 7, 5), (-6, -2, 7, 5),
      (-5, 7, 2), (-5, -2, 4, 7), (-4, 7, 3), (-3, 1, 7), (-1, 7), (-7, 1),
      (-1, -7, 3), (-7, -3, 4), (-4, -7, 2, 5), (-7, -2, 5), (-5, -7, 6, 2),
      (-5, -2, -7, 4, 6), (-7, -4, 6, 3), (-3, -7, 1, 6), (-7, -1, 6), (-6,
      2), (-2, -6, 4), (-6, -4, 5, 3), (-3, -6, 1, 5), (-6, -1, 5), (-5, 3),
      (-3, -5, 4, 1), (-5, -1, 4), (-4, 1, 2), (-1, -4, 3, 2), (-3, 2), (-2,
      -3, 4), (-4, 5), (-5, 6), (-6, 7), (-7,), (-2, 1), (-2, -1, 3)]
      sage: TestSuite(C).run()
      sage: all(b.f(i).e(i) == b for i in C.index_set() for b in C if b.f(i) is not None)
      True
      sage: all(b.e(i).f(i) == b for i in C.index_set() for b in C if b.e(i) is not None)
      True
      sage: G = C.digraph()
      sage: G.show(edge_labels=true, figsize=12, vertex_size=1)

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',7])
        sage: C((7,)).e(7)
        sage: C((-7,6)).e(7)
        (7,)

  `f`(i)

    Return the action of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',7])
        sage: C((-7,)).f(7)
        sage: C((7,)).f(7)
        (-7, 6)

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: [v.weight() for v in crystals.Letters(['E',7])]
        [(0, 0, 0, 0, 0, 1, -1/2, 1/2), (0, 0, 0, 0, 1, 0, -1/2, 1/2), (0, 0, 0,
        1, 0, 0, -1/2, 1/2), (0, 0, 1, 0, 0, 0, -1/2, 1/2), (0, 1, 0, 0, 0, 0,
        -1/2, 1/2), (-1, 0, 0, 0, 0, 0, -1/2, 1/2), (1, 0, 0, 0, 0, 0, -1/2,
        1/2), (1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 0, 0), (0, -1, 0, 0, 0, 0, -1/2,
        1/2), (-1/2, -1/2, 1/2, 1/2, 1/2, 1/2, 0, 0), (0, 0, -1, 0, 0, 0, -1/2,
        1/2), (-1/2, 1/2, -1/2, 1/2, 1/2, 1/2, 0, 0), (1/2, -1/2, -1/2, 1/2,
        1/2, 1/2, 0, 0), (0, 0, 0, -1, 0, 0, -1/2, 1/2), (-1/2, 1/2, 1/2, -1/2,
        1/2, 1/2, 0, 0), (1/2, -1/2, 1/2, -1/2, 1/2, 1/2, 0, 0), (1/2, 1/2,
        -1/2, -1/2, 1/2, 1/2, 0, 0), (-1/2, -1/2, -1/2, -1/2, 1/2, 1/2, 0, 0),
        (0, 0, 0, 0, -1, 0, -1/2, 1/2), (-1/2, 1/2, 1/2, 1/2, -1/2, 1/2, 0, 0),
        (1/2, -1/2, 1/2, 1/2, -1/2, 1/2, 0, 0), (1/2, 1/2, -1/2, 1/2, -1/2, 1/2,
        0, 0), (-1/2, -1/2, -1/2, 1/2, -1/2, 1/2, 0, 0), (1/2, 1/2, 1/2, -1/2,
        -1/2, 1/2, 0, 0), (-1/2, -1/2, 1/2, -1/2, -1/2, 1/2, 0, 0), (-1/2, 1/2,
        -1/2, -1/2, -1/2, 1/2, 0, 0), (1/2, -1/2, -1/2, -1/2, -1/2, 1/2, 0, 0),
        (0, 0, 0, 0, 0, 1, 1/2, -1/2), (0, 0, 0, 0, 0, -1, -1/2, 1/2), (-1/2,
        1/2, 1/2, 1/2, 1/2, -1/2, 0, 0), (1/2, -1/2, 1/2, 1/2, 1/2, -1/2, 0, 0),
        (1/2, 1/2, -1/2, 1/2, 1/2, -1/2, 0, 0), (-1/2, -1/2, -1/2, 1/2, 1/2,
        -1/2, 0, 0), (1/2, 1/2, 1/2, -1/2, 1/2, -1/2, 0, 0), (-1/2, -1/2, 1/2,
        -1/2, 1/2, -1/2, 0, 0), (-1/2, 1/2, -1/2, -1/2, 1/2, -1/2, 0, 0), (1/2,
        -1/2, -1/2, -1/2, 1/2, -1/2, 0, 0), (0, 0, 0, 0, 1, 0, 1/2, -1/2), (1/2,
        1/2, 1/2, 1/2, -1/2, -1/2, 0, 0), (-1/2, -1/2, 1/2, 1/2, -1/2, -1/2, 0,
        0), (-1/2, 1/2, -1/2, 1/2, -1/2, -1/2, 0, 0), (1/2, -1/2, -1/2, 1/2,
        -1/2, -1/2, 0, 0), (0, 0, 0, 1, 0, 0, 1/2, -1/2), (-1/2, 1/2, 1/2, -1/2,
        -1/2, -1/2, 0, 0), (1/2, -1/2, 1/2, -1/2, -1/2, -1/2, 0, 0), (0, 0, 1,
        0, 0, 0, 1/2, -1/2), (1/2, 1/2, -1/2, -1/2, -1/2, -1/2, 0, 0), (0, 1, 0,
        0, 0, 0, 1/2, -1/2), (1, 0, 0, 0, 0, 0, 1/2, -1/2), (0, -1, 0, 0, 0, 0,
        1/2, -1/2), (0, 0, -1, 0, 0, 0, 1/2, -1/2), (0, 0, 0, -1, 0, 0, 1/2,
        -1/2), (0, 0, 0, 0, -1, 0, 1/2, -1/2), (0, 0, 0, 0, 0, -1, 1/2, -1/2),
        (-1/2, -1/2, -1/2, -1/2, -1/2, -1/2, 0, 0), (-1, 0, 0, 0, 0, 0, 1/2,
        -1/2)]

class `sage.combinat.crystals.letters.``Crystal_of_letters_type_G_element`

  Bases: `sage.combinat.crystals.letters.Letter`

  Type \(G_2\) crystal of letters elements.

  TESTS:

      sage: C = crystals.Letters(['G',2])
      sage: C.list()
      [1, 2, 3, 0, -3, -2, -1]
      sage: TestSuite(C).run()

  `e`(i)

    Return the action of \(e_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['G',2])
        sage: [(c,i,c.e(i)) for i in C.index_set() for c in C if c.e(i) is not None]
        [(2, 1, 1),
         (0, 1, 3),
         (-3, 1, 0),
         (-1, 1, -2),
         (3, 2, 2),
         (-2, 2, -3)]

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['G',2])
        sage: [(c,i,c.epsilon(i)) for i in C.index_set() for c in C if c.epsilon(i) != 0]
        [(2, 1, 1), (0, 1, 1), (-3, 1, 2), (-1, 1, 1), (3, 2, 1), (-2, 2, 1)]

  `f`(i)

    Return the action of \(f_i\) on `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['G',2])
        sage: [(c,i,c.f(i)) for i in C.index_set() for c in C if c.f(i) is not None]
        [(1, 1, 2),
         (3, 1, 0),
         (0, 1, -3),
         (-2, 1, -1),
         (2, 2, 3),
         (-3, 2, -2)]

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['G',2])
        sage: [(c,i,c.phi(i)) for i in C.index_set() for c in C if c.phi(i) != 0]
        [(1, 1, 1), (3, 1, 2), (0, 1, 1), (-2, 1, 1), (2, 2, 1), (-3, 2, 1)]

  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: [v.weight() for v in crystals.Letters(['G',2])]
        [(1, 0, -1), (1, -1, 0), (0, 1, -1), (0, 0, 0), (0, -1, 1), (-1, 1, 0), (-1, 0, 1)]

class `sage.combinat.crystals.letters.``EmptyLetter`

  Bases: `sage.structure.element.Element`

  The affine letter \(\emptyset\) thought of as a classical crystal letter in classical type \(B_n\) and \(C_n\).

  Warning

  This is not a classical letter.

  Used in the rigged configuration bijections.

  `e`(i)

    Return \(e_i\) of `self` which is `None`.

    EXAMPLES:

        sage: C = crystals.Letters(['C', 3])
        sage: C('E').e(1)

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['C', 3])
        sage: C('E').epsilon(1)
        0

  `f`(i)

    Return \(f_i\) of `self` which is `None`.

    EXAMPLES:

        sage: C = crystals.Letters(['C', 3])
        sage: C('E').f(1)

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['C', 3])
        sage: C('E').phi(1)
        0

  `value`
  `weight`()

    Return the weight of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['C', 3])
        sage: C('E').weight()
        (0, 0, 0)

class `sage.combinat.crystals.letters.``Letter`

  Bases: `sage.structure.element.Element`

  A class for letters.

  Like `ElementWrapper`, plus delegates `__lt__` (comparison) to the parent.

  EXAMPLES:

      sage: from sage.combinat.crystals.letters import Letter
      sage: a = Letter(ZZ, 1)
      sage: Letter(ZZ, 1).parent()
      Integer Ring

      sage: Letter(ZZ, 1)._repr_()
      '1'

      sage: parent1 = ZZ  # Any fake value ...
      sage: parent2 = QQ  # Any fake value ...
      sage: l11 = Letter(parent1, 1)
      sage: l12 = Letter(parent1, 2)
      sage: l21 = Letter(parent2, 1)
      sage: l22 = Letter(parent2, 2)
      sage: l11 == l11
      True
      sage: l11 == l12
      False
      sage: l11 == l21 # not tested
      False

      sage: C = crystals.Letters(['B', 3])
      sage: C(0) != C(0)
      False
      sage: C(1) != C(-1)
      True

  `value`

class `sage.combinat.crystals.letters.``LetterTuple`

  Bases: `sage.structure.element.Element`

  Abstract class for type \(E\) letters.

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6])
        sage: C((-6,)).epsilon(1)
        0
        sage: C((-6,)).epsilon(6)
        1

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Letters(['E',6])
        sage: C((1,)).phi(1)
        1
        sage: C((1,)).phi(6)
        0

  `value`

### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Crystals »