Crystals of letters#
- class sage.combinat.crystals.letters.BKKLetter#
Bases:
Letter
- e(i)#
Return the action of \(e_i\) on
self
.EXAMPLES:
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)
- f(i)#
Return the action of \(f_i\) on
self
.EXAMPLES:
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)
- weight()#
Return weight of
self
.EXAMPLES:
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)
- 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 subclassClassicalCrystalOfLetters
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
, andf
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 fromx
toy
in the crystal graph, whenx
is not equal toy
.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
- 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: 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)
- 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: 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.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: Q = crystals.Letters(['Q',3]) sage: 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: 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:
Letter
Type \(B\) crystal of letters elements.
- 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:
Letter
Type \(C\) crystal of letters elements.
- 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:
Letter
Type \(D\) crystal of letters elements.
- 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:
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: 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:
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: 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 letterscrystals.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 incrystals.Letters(['E',6])
to an element incrystals.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:
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: 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:
Letter
Type \(G_2\) crystal of letters elements.
- 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:
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 isNone
.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 isNone
.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:
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:
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#
- 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: C = crystals.Letters(['E', 8]) sage: C((-8,)).e(1) sage: C((-8,)).e(8) (-7, 8)
- epsilon(i)#
Return \(\varepsilon_i\) of
self
.EXAMPLES:
sage: C = crystals.Letters(['E', 8]) sage: C((-8,)).epsilon(1) 0 sage: C((-8,)).epsilon(8) 1
- f(i)#
Return \(f_i\) of
self
.EXAMPLES:
sage: C = crystals.Letters(['E', 8]) sage: C((8,)).f(6) sage: C((8,)).f(8) (7, -8)
- phi(i)#
Return \(\varphi_i\) of
self
.EXAMPLES:
sage: C = crystals.Letters(['E', 8]) sage: C((8,)).phi(8) 1 sage: C((8,)).phi(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: 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)]
- epsilon(i)#
Return \(\varepsilon_i\) of
self
.EXAMPLES:
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)]
- f(i)#
Return the action of \(f_i\) on
self
.EXAMPLES:
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)]
- phi(i)#
Return \(\varphi_i\) of
self
.EXAMPLES:
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)]
- weight()#
Return the weight of
self
.EXAMPLES:
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)]