Crystals of letters - Combinatorics

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

# Crystals of letters

class sage.combinat.crystals.letters.BKKLetter

  Bases: `Letter`

  e(i)

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

    EXAMPLES:

    Sage

        sage: C = crystals.Letters(['A', [2, 1]])
        sage: c = C(-2)
        sage: c.e(-2)
        -3
        sage: c = C(1)
        sage: c.e(0)
        -1
        sage: c = C(2)
        sage: c.e(1)
        1
        sage: c.e(-2)

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A', [Integer(2), Integer(1)]])
        >>> c = C(-Integer(2))
        >>> c.e(-Integer(2))
        -3
        >>> c = C(Integer(1))
        >>> c.e(Integer(0))
        -1
        >>> c = C(Integer(2))
        >>> c.e(Integer(1))
        1
        >>> c.e(-Integer(2))

  f(i)

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

    EXAMPLES:

    Sage

        sage: C = crystals.Letters(['A', [2, 1]])
        sage: c = C.an_element()
        sage: c.f(-2)
        -2
        sage: c = C(-1)
        sage: c.f(0)
        1
        sage: c = C(1)
        sage: c.f(1)
        2
        sage: c.f(-2)

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A', [Integer(2), Integer(1)]])
        >>> c = C.an_element()
        >>> c.f(-Integer(2))
        -2
        >>> c = C(-Integer(1))
        >>> c.f(Integer(0))
        1
        >>> c = C(Integer(1))
        >>> c.f(Integer(1))
        2
        >>> c.f(-Integer(2))

  weight()

    Return weight of `self`.

    EXAMPLES:

    Sage

        sage: C = crystals.Letters(['A', [2, 1]])
        sage: c = C(-1)
        sage: c.weight()
        (0, 0, 1, 0, 0)
        sage: c = C(2)
        sage: c.weight()
        (0, 0, 0, 0, 1)

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A', [Integer(2), Integer(1)]])
        >>> c = C(-Integer(1))
        >>> c.weight()
        (0, 0, 1, 0, 0)
        >>> c = C(Integer(2))
        >>> c.weight()
        (0, 0, 0, 0, 1)

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

  Bases: `UniqueRepresentation`, `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`, `richcmp`, (todo: `phi`, `epsilon`, `e`, and `f` with caching)

  list()

    Return a list of the elements of `self`.

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A',Integer(5)])
        >>> 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

        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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A', Integer(5)])
        >>> x = C(Integer(1))
        >>> y = C(Integer(2))
        >>> C.lt_elements(x,y)
        True
        >>> C.lt_elements(y,x)
        False
        >>> C.lt_elements(x,x)
        False
        >>> C = crystals.Letters(['D', Integer(4)])
        >>> C.lt_elements(C(Integer(4)),C(-Integer(4)))
        False
        >>> C.lt_elements(C(-Integer(4)),C(Integer(4)))
        False

class sage.combinat.crystals.letters.ClassicalCrystalOfLettersWrapped(cartan_type)

  Bases: `ClassicalCrystalOfLetters`

  Crystal of letters by wrapping another crystal.

  This is used for a crystal of letters of type \(E_8\) and \(F_4\).

  This class follows the same output as the other crystal of letters, where \(b\) is represented by the “letter” with \(\varphi_i(b)\) (resp., \(\varepsilon_i\)) number of \(i\)’s (resp., \(-i\)’s or \(\bar{i}\)’s). However, this uses an auxiliary crystal to construct these letters to avoid hardcoding the crystal elements and the corresponding edges; in particular, the 248 nodes of \(E_8\).

class sage.combinat.crystals.letters.CrystalOfBKKLetters(ct, dual)

  Bases: `ClassicalCrystalOfLetters`

  Crystal of letters for Benkart-Kang-Kashiwara supercrystals.

  This implements the \(\mathfrak{gl}(m|n)\) crystal of Benkart, Kang and Kashiwara [BKK2000].

  EXAMPLES:

  Sage

      sage: C = crystals.Letters(['A', [1, 1]]); C
      The crystal of letters for type ['A', [1, 1]]

      sage: C = crystals.Letters(['A', [2,4]], dual=True); C
      The crystal of letters for type ['A', [2, 4]] (dual)

  Python

      >>> from sage.all import *
      >>> C = crystals.Letters(['A', [Integer(1), Integer(1)]]); C
      The crystal of letters for type ['A', [1, 1]]

      >>> C = crystals.Letters(['A', [Integer(2),Integer(4)]], dual=True); C
      The crystal of letters for type ['A', [2, 4]] (dual)

  Element

    alias of `BKKLetter`

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 [KN1994]. 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).

  We also have the crystal of fundamental representation of the general linear Lie superalgebra, which are used as letters inside of tableaux following [BKK2000]. Similarly, all of these crystals appear as a subcrystal of a sufficiently large tensor power of this crystal.

  INPUT:

  - `T` – a Cartan type

  EXAMPLES:

  Sage

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

  Python

      >>> from sage.all import *
      >>> C = crystals.Letters(['A',Integer(5)])
      >>> C.list()
      [1, 2, 3, 4, 5, 6]
      >>> 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

      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]

  [Python]

      >>> from sage.all import *
      >>> C = crystals.Letters(['E',Integer(6)], element_print_style = 'compact')
      >>> C
      The crystal of letters for type ['E', 6]
      >>> 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]
      >>> C = crystals.Letters(['E',Integer(6)], element_print_style = 'compact', dual = True)
      >>> C
      The crystal of letters for type ['E', 6] (dual)
      >>> 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.CrystalOfQueerLetters(ct)

  Bases: `ClassicalCrystalOfLetters`

  Queer crystal of letters elements.

  The index set is of the form \(\{-n, \ldots, -1, 1, \ldots, n\}\). For \(1 < i \leq n\), the operators \(e_{-i}\) and \(f_{-i}\) are defined as

  \[f_{-i} = s_{w^{-1}_i} f_{-1} s_{w_i}, \quad e_{-i} = s_{w^{-1}_i} e_{-1} s_{w_i},\]

  where \(w_i = s_2 \cdots s_i s_1 \cdots s_{i-1}\) and \(s_i\) is the reflection along the \(i\)-string in the crystal. See [GJK+2014].

  Element

    alias of `QueerLetter_element`

  index_set()

    Return index set of `self`.

    EXAMPLES:

    Sage

        sage: Q = crystals.Letters(['Q',3])
        sage: Q.index_set()
        (1, 2, -2, -1)

    Python

        >>> from sage.all import *
        >>> Q = crystals.Letters(['Q',Integer(3)])
        >>> Q.index_set()
        (1, 2, -2, -1)

class sage.combinat.crystals.letters.Crystal_of_letters_type_A_element

  Bases: `Letter`

  Type \(A\) crystal of letters elements.

  e(i)

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

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A',Integer(4)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A',Integer(4)])
        >>> [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != Integer(0)]
        [(2, 1), (3, 2), (4, 3), (5, 4)]

  f(i)

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

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A',Integer(4)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['A',Integer(4)])
        >>> [(c,i) for i in C.index_set() for c in C if c.phi(i) != Integer(0)]
        [(1, 1), (2, 2), (3, 3), (4, 4)]

  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['A',Integer(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: `Letter`

  Type \(B\) crystal of letters elements.

  e(i)

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

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['B',Integer(4)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['B',Integer(3)])
        >>> [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != Integer(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['B',Integer(4)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['B',Integer(3)])
        >>> [(c,i) for i in C.index_set() for c in C if c.phi(i) != Integer(0)]
        [(1, 1), (-2, 1), (2, 2), (-3, 2), (3, 3), (0, 3)]

  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['B',Integer(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: `Letter`

  Type \(C\) crystal of letters elements.

  e(i)

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

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C',Integer(4)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C',Integer(3)])
        >>> [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != Integer(0)]
        [(2, 1), (-1, 1), (3, 2), (-2, 2), (-3, 3)]

  f(i)

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

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C',Integer(4)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C',Integer(3)])
        >>> [(c,i) for i in C.index_set() for c in C if c.phi(i) != Integer(0)]
        [(1, 1), (-2, 1), (2, 2), (-3, 2), (3, 3)]

  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['C',Integer(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: `Letter`

  Type \(D\) crystal of letters elements.

  e(i)

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

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['D',Integer(5)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['D',Integer(4)])
        >>> [(c,i) for i in C.index_set() for c in C if c.epsilon(i) != Integer(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['D',Integer(5)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['D',Integer(4)])
        >>> [(c,i) for i in C.index_set() for c in C if c.phi(i) != Integer(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

        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)]

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['D',Integer(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: `LetterTuple`

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

  e(i)

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

    EXAMPLES:

    Sage

        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)

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)])
        >>> C((-Integer(1),Integer(3))).e(Integer(1))
        (1,)
        >>> C((-Integer(2),-Integer(3),Integer(4))).e(Integer(2))
        (-3, 2)
        >>> C((Integer(1),)).e(Integer(1))

  f(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)])
        >>> C((Integer(1),)).f(Integer(1))
        (-1, 3)
        >>> C((-Integer(6),)).f(Integer(1))

  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['E',Integer(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: `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\).

  e(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)], dual = True)
        >>> C((-Integer(1),)).e(Integer(1))
        (1, -3)

  f(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)], dual = True)
        >>> C((Integer(6),)).f(Integer(6))
        (5, -6)
        >>> C((Integer(6),)).f(Integer(1))

  lift()

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)], dual = True)
        >>> b = C.module_generators[Integer(0)]
        >>> 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

        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)

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)])
        >>> Cd = crystals.Letters(['E',Integer(6)], dual = True)
        >>> b = Cd.module_generators[Integer(0)]
        >>> p = C((-Integer(1),Integer(3)))
        >>> b.retract(p)
        (1, -3)
        >>> b.retract(None)

  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)], dual = True)
        >>> b=C.module_generators[Integer(0)]
        >>> b.weight()
        (0, 0, 0, 0, 1, -1/3, -1/3, 1/3)
        >>> [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: `LetterTuple`

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

  e(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(7)])
        >>> C((Integer(7),)).e(Integer(7))
        >>> C((-Integer(7),Integer(6))).e(Integer(7))
        (7,)

  f(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(7)])
        >>> C((-Integer(7),)).f(Integer(7))
        >>> C((Integer(7),)).f(Integer(7))
        (-7, 6)

  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['E',Integer(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: `Letter`

  Type \(G_2\) crystal of letters elements.

  e(i)

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

    EXAMPLES:

    Sage

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['G',Integer(2)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['G',Integer(2)])
        >>> [(c,i,c.epsilon(i)) for i in C.index_set() for c in C if c.epsilon(i) != Integer(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['G',Integer(2)])
        >>> [(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

        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)]

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['G',Integer(2)])
        >>> [(c,i,c.phi(i)) for i in C.index_set() for c in C if c.phi(i) != Integer(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

        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)]

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['G',Integer(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: `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

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C', Integer(3)])
        >>> C('E').e(Integer(1))

  epsilon(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C', Integer(3)])
        >>> C('E').epsilon(Integer(1))
        0

  f(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C', Integer(3)])
        >>> C('E').f(Integer(1))

  phi(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C', Integer(3)])
        >>> C('E').phi(Integer(1))
        0

  value
  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['C', Integer(3)])
        >>> C('E').weight()
        (0, 0, 0)

class sage.combinat.crystals.letters.Letter

  Bases: `Element`

  A class for letters.

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

  EXAMPLES:

  Sage

      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

  Python

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

      >>> Letter(ZZ, Integer(1))._repr_()
      '1'

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

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

  value

class sage.combinat.crystals.letters.LetterTuple

  Bases: `Element`

  Abstract class for type \(E\) letters.

  epsilon(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)])
        >>> C((-Integer(6),)).epsilon(Integer(1))
        0
        >>> C((-Integer(6),)).epsilon(Integer(6))
        1

  phi(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E',Integer(6)])
        >>> C((Integer(1),)).phi(Integer(1))
        1
        >>> C((Integer(1),)).phi(Integer(6))
        0

  value

class sage.combinat.crystals.letters.LetterWrapped

  Bases: `Element`

  Element which uses another crystal implementation and converts those elements to a tuple with \(\pm i\).

  e(i)

    Return \(e_i\) of `self`.

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E', Integer(8)])
        >>> C((-Integer(8),)).e(Integer(1))
        >>> C((-Integer(8),)).e(Integer(8))
        (-7, 8)

  epsilon(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E', Integer(8)])
        >>> C((-Integer(8),)).epsilon(Integer(1))
        0
        >>> C((-Integer(8),)).epsilon(Integer(8))
        1

  f(i)

    Return \(f_i\) of `self`.

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E', Integer(8)])
        >>> C((Integer(8),)).f(Integer(6))
        >>> C((Integer(8),)).f(Integer(8))
        (7, -8)

  phi(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> C = crystals.Letters(['E', Integer(8)])
        >>> C((Integer(8),)).phi(Integer(8))
        1
        >>> C((Integer(8),)).phi(Integer(6))
        0

  value

class sage.combinat.crystals.letters.QueerLetter_element

  Bases: `Letter`

  Queer supercrystal letters elements.

  e(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> Q = crystals.Letters(['Q',Integer(3)])
        >>> [(c,i,c.e(i)) for i in Q.index_set() for c in Q if c.e(i) is not None]
        [(2, 1, 1), (3, 2, 2), (3, -2, 2), (2, -1, 1)]

  epsilon(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> Q = crystals.Letters(['Q',Integer(3)])
        >>> [(c,i) for i in Q.index_set() for c in Q if c.epsilon(i) != Integer(0)]
        [(2, 1), (3, 2), (3, -2), (2, -1)]

  f(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> Q = crystals.Letters(['Q',Integer(3)])
        >>> [(c,i,c.f(i)) for i in Q.index_set() for c in Q if c.f(i) is not None]
        [(1, 1, 2), (2, 2, 3), (2, -2, 3), (1, -1, 2)]

  phi(i)

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

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> Q = crystals.Letters(['Q',Integer(3)])
        >>> [(c,i) for i in Q.index_set() for c in Q if c.phi(i) != Integer(0)]
        [(1, 1), (2, 2), (2, -2), (1, -1)]

  weight()

    Return the weight of `self`.

    EXAMPLES:

    Sage

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

    Python

        >>> from sage.all import *
        >>> [v.weight() for v in crystals.Letters(['Q',Integer(4)])]
        [(1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1)]