Crystals of letters
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
and
operations. If the module generator is not
, 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)
Return a list of the elements of self.
EXAMPLES:
sage: C = crystals.Letters(['A',5])
sage: C.list()
[1, 2, 3, 4, 5, 6]
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
Return the crystal of letters of the given type.
For classical types, this is a combinatorial model for the crystal
with highest weight (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:
REFERENCES:
[KN94] | M. Kashiwara and T. Nakashima.
Crystal graphs for representations of the ![]() |
EXAMPLES:
sage: C = crystals.Letters(['A',5])
sage: C.list()
[1, 2, 3, 4, 5, 6]
sage: C.cartan_type()
['A', 5]
For type , 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]
Bases: sage.combinat.crystals.letters.Letter
Type 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()
Return the action of 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)]
Return 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)]
Return the action of 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)]
Return 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)]
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)]
Bases: sage.combinat.crystals.letters.Letter
Type crystal of letters elements.
TESTS:
sage: C = crystals.Letters(['B',3])
sage: TestSuite(C).run()
Return the action of 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)]
Return 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)]
Return the actions of 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)]
Return 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)]
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)]
Bases: sage.combinat.crystals.letters.Letter
Type 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()
Return the action of 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)]
Return 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)]
Return the action of 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)]
Return 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)]
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)]
Bases: sage.combinat.crystals.letters.Letter
Type 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()
Return the action of 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)]
Return 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)]
Return the action of 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)]
Return 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)]
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)]
Bases: sage.combinat.crystals.letters.LetterTuple
Type crystal of letters elements. This crystal corresponds to the highest weight
crystal
.
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)
Return the action of 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)
Return the action of on self.
EXAMPLES:
sage: C = crystals.Letters(['E',6])
sage: C((1,)).f(1)
(-1, 3)
sage: C((-6,)).f(1)
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)]
Bases: sage.combinat.crystals.letters.LetterTuple
Type crystal of letters elements. This crystal corresponds to the highest weight
crystal
. This crystal is dual to
of type
.
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)
Return the action of on self.
EXAMPLES:
sage: C = crystals.Letters(['E',6], dual = True)
sage: C((-1,)).e(1)
(1, -3)
Return the action of on self.
EXAMPLES:
sage: C = crystals.Letters(['E',6], dual = True)
sage: C((6,)).f(6)
(5, -6)
sage: C((6,)).f(1)
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 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)
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)]
Bases: sage.combinat.crystals.letters.LetterTuple
Type crystal of letters elements. This crystal corresponds to the highest weight
crystal
.
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)
Return the action of on self.
EXAMPLES:
sage: C = crystals.Letters(['E',7])
sage: C((7,)).e(7)
sage: C((-7,6)).e(7)
(7,)
Return the action of on self.
EXAMPLES:
sage: C = crystals.Letters(['E',7])
sage: C((-7,)).f(7)
sage: C((7,)).f(7)
(-7, 6)
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)]
Bases: sage.combinat.crystals.letters.Letter
Type 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()
Return the action of 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)]
Return 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)]
Return the action of 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)]
Return 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)]
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)]
Bases: sage.structure.element.Element
The affine letter thought of as a classical crystal letter
in classical type
and
.
Warning
This is not a classical letter.
Used in the rigged configuration bijections.
Return of self which is None.
EXAMPLES:
sage: C = crystals.Letters(['C', 3])
sage: C('E').e(1)
Return of self.
EXAMPLES:
sage: C = crystals.Letters(['C', 3])
sage: C('E').epsilon(1)
0
Return of self which is None.
EXAMPLES:
sage: C = crystals.Letters(['C', 3])
sage: C('E').f(1)
Return of self.
EXAMPLES:
sage: C = crystals.Letters(['C', 3])
sage: C('E').phi(1)
0
Return the weight of self.
EXAMPLES:
sage: C = crystals.Letters(['C', 3])
sage: C('E').weight()
(0, 0, 0)
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
Bases: sage.structure.element.Element
Abstract class for type letters.
Return of self.
EXAMPLES:
sage: C = crystals.Letters(['E',6])
sage: C((-6,)).epsilon(1)
0
sage: C((-6,)).epsilon(6)
1
Return of self.
EXAMPLES:
sage: C = crystals.Letters(['E',6])
sage: C((1,)).phi(1)
1
sage: C((1,)).phi(6)
0