Crystals of Generalized Young Walls

AUTHORS:

  • Lucas David-Roesler: Initial version
  • Ben Salisbury: Initial version
  • Travis Scrimshaw: Initial version

Generalized Young walls are certain generalizations of Young tableaux introduced in [KS10] and designed to be a realization of the crystals \mathcal{B}(\infty) and \mathcal{B}(\lambda) in type A_n^{(1)}.

Warning

Does not work with TensorProductOfCrystals().

REFERENCES:

[KS10](1, 2, 3, 4) J.-A. Kim and D.-U. Shin. Generalized Young walls and crystal bases for quantum affine algebra of type A. Proc. Amer. Math. Soc. 138(11), pp. 3877–3889, 2010.
class sage.combinat.crystals.generalized_young_walls.CrystalOfGeneralizedYoungWalls(n)

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

The crystal \mathcal{Y}(\infty) of generalized Young walls of type A_n^{(1)} as defined in [KS10].

A generalized Young wall is a collection of boxes stacked on a fixed board, such that color of the box at the site located in the j-th row from the bottom and the i-th column from the right is j-1 \bmod n+1. There are several growth conditions on elements in Y \in \mathcal{Y}(\infty):

  • Walls grow in rows from right to left. That is, for every box y\in Y that is not in the rightmost column, there must be a box immediately to the right of y.
  • For all p>q such that p-q \equiv 0 \bmod n+1, the p-th row has most as many boxes as the q-th row.
  • There does not exist a column in the wall such that if one i-colored box, for every i = 0,1,\ldots,n, is removed from that column, then the result satisfies the above conditions.

There is a crystal structure on \mathcal{Y}(\infty) defined as follows. Define maps

\widetilde{e}_i,\ \widetilde{f}_i \colon \mathcal{Y}(\infty)
\longrightarrow \mathcal{Y}(\infty) \sqcup \{0\}, \qquad
\varepsilon_i,\ \varphi_i \colon \mathcal{Y}(\infty)
\longrightarrow \ZZ, \qquad
\mathrm{wt}\colon \mathcal{Y}(\infty) \longrightarrow
\bigoplus_{i=0}^n \ZZ \Lambda_i,

by

\mathrm{wt}(Y) = -\sum_{i=0}^n m_i(Y) \alpha_i,

where m_i(Y) is the number of i-boxes in Y, \varepsilon_i(Y) is the number of - in the i-signature of Y, and

\varphi_i(Y)  = \varepsilon_i(Y) + \langle h_i, \mathrm{wt}(Y) \rangle.

See GeneralizedYoungWall.e(), GeneralizedYoungWall.f(), and GeneralizedYoungWall.signature() for more about \widetilde{e}_i, \widetilde{f}_i, and i-signatures.

INPUT:

  • n – type A_n^{(1)}

EXAMPLES:

sage: Yinf = CrystalOfGeneralizedYoungWalls(3)
sage: y = Yinf([[0],[1,0,3,2],[],[3,2,1],[0],[1,0]])
sage: y.pp()
    0|1|
      0|
  1|2|3|
       |
2|3|0|1|
      0|
sage: y.weight()
-4*alpha[0] - 3*alpha[1] - 2*alpha[2] - 2*alpha[3]
sage: y.f(0)
[[0], [1, 0, 3, 2], [], [3, 2, 1], [0], [1, 0], [], [], [0]]
sage: y.e(0).pp()
    0|1|
       |
  1|2|3|
       |
2|3|0|1|
      0|

To display the crystal down to depth 3:

sage: S = Yinf.subcrystal(max_depth=3)
sage: G = Yinf.digraph(subset=S)
sage: view(G, tightpage=True) # not tested
Element

alias of GeneralizedYoungWall

subset(max_depth=4)

Construct the subcrystal of self trucated at depth max_depth.

EXAMPLES:

sage: Y = CrystalOfGeneralizedYoungWalls(2)
sage: S = Y.subset(max_depth=2)
sage: S
[[], [[], [1]], [[], [], [2]], [[0]], [[0, 2]], [[0], [1]], [[], [], [2], [], [], [2]],
[[], [1], [2]], [[0], [], [], [0]], [[0], [], [2]], [[], [], [2, 1]], [[], [1], [], [], [1]], [[], [1, 0]]]
class sage.combinat.crystals.generalized_young_walls.GeneralizedYoungWall(parent, data)

Bases: sage.combinat.combinat.CombinatorialObject, sage.structure.element.Element

A generalized Young wall.

For more information, see CrystalOfGeneralizedYoungWalls.

EXAMPLES:

sage: Y = CrystalOfGeneralizedYoungWalls(4)
sage: mg = Y.module_generators[0]; mg.pp()
0
sage: mg.f_string([1,2,0,1]).pp()
1|2|
0|1|
   |
Epsilon()

Return \sum_{i=0}^n \varepsilon_i(Y) \Lambda_i where Y is self.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(3)([[0],[1,0,3,2],[2,1],[3,2,1,0,3,2],[0],[],[2]])
sage: y.Epsilon()
Lambda[0] + 3*Lambda[2]
Phi()

Return \sum_{i=0}^n \varphi_i(Y) \Lambda_i where Y is self.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(3)([[0],[1,0,3,2],[2,1],[3,2,1,0,3,2],[0],[],[2]])
sage: y.Phi()
-Lambda[0] + 3*Lambda[1] - Lambda[2] + 3*Lambda[3]

sage: x=CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.Phi()
2*Lambda[0] + Lambda[1] - Lambda[2] + Lambda[3]
a(i, k)

Return the number a_i(k) of i-colored boxes in the k-th column of self.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(3)([[0],[1,0,3,2],[2,1],[3,2,1,0,3,2],[0],[],[2]])
sage: y.a(1,2)
1
sage: y.a(0,2)
1
sage: y.a(3,2)
0
column(k)

Return the list of boxes from the k-th column of self.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(3)([[0],[1,0,3,2],[2,1],[3,2,1,0,3,2],[0],[],[2]])
sage: y.column(2)
[None, 0, 1, 2, None, None, None]

sage: hw = CrystalOfGeneralizedYoungWalls(5)([])
sage: hw.column(1)
[]
content()

Return total number of blocks in self.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(2)([[0],[1,0],[2,1,0,2],[],[1]])
sage: y.content()
8

sage: x = CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.content()
13
e(i)

Return the application of the Kashiwara raising operator \widetilde{e}_i on self.

This will remove the i-colored box corresponding to the rightmost + in self.signature(i).

EXAMPLES:

sage: x=CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.e(2)
[[], [1, 0, 3, 2], [2, 1], [3, 2, 1, 0, 3, 2]]
sage: _.e(2)
[[], [1, 0, 3], [2, 1], [3, 2, 1, 0, 3, 2]]
sage: _.e(2)
[[], [1, 0, 3], [2, 1], [3, 2, 1, 0, 3]]
sage: _.e(2)
epsilon(i)

Return the number of i-colored arrows in the i-string above self in the crystal graph.

EXAMPLES:

sage: y=CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: y.epsilon(1)
0
sage: y.epsilon(2)
3
sage: y.epsilon(0)
0
f(i)

Return the application of the Kashiwara lowering operator \widetilde{f}_i on self.

This will add an i-colored colored box to the site corresponding to the leftmost plus in self.signature(i).

EXAMPLES:

sage: hw = CrystalOfGeneralizedYoungWalls(2)([])
sage: hw.f(1)
[[], [1]]
sage: _.f(2)
[[], [1], [2]]
sage: _.f(0)
[[], [1, 0], [2]]
sage: _.f(0)
[[0], [1, 0], [2]]
generate_signature(i)

The i-signature of self (with whitespace where cancellation occurs) together with the unreduced sequence from \{+,-\}. The result also records to the row and column position of the sign.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(2)([[0],[1,0],[2,1,0,2],[],[1]])
sage: y.generate_signature(1)
([['+', 2, 5], ['-', 4, 1]], '  ')
in_highest_weight_crystal(La)

Return a boolean indicating if the generalized Young wall element is in the highest weight crystal cut out by the given highest weight La.

By Theorem 4.1 of [KS10], a generalized Young wall Y represents a vertex in the highest weight crystal Y(\lambda), with \lambda = \Lambda_{i_1} + \Lambda_{i_2} + \cdots + \Lambda_{i_\ell} a dominant integral weight of level \ell > 0, if it satisfies the following condition. For each positive integer k, if there exists j \in I such that a_j(k) - a_{j-1}(k) > 0, then for some p = 1, \ldots, \ell,

j + k \equiv i_p + 1 \bmod n+1 \text{ and } a_j(k) - a_{j-1}(k)
\le \lambda(h_{i_p}),

where \{h_0, h_1, \ldots, h_n\} is the set of simple coroots attached to A_n^{(1)}.

EXAMPLES:

sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: GYW = CrystalOfGeneralizedYoungWalls(2)
sage: y = GYW([[],[1,0],[2,1]])
sage: y.in_highest_weight_crystal(La)
True
sage: x = GYW([[],[1],[2],[],[],[2],[],[],[2]])
sage: x.in_highest_weight_crystal(La)
False
latex_large()

Generate LaTeX code for self but the output is larger. Requires TikZ.

EXAMPLES:

sage: x = CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.latex_large()
'\\begin{tikzpicture}[baseline=5,scale=.45] \n \\foreach \\x [count=\\s from 0] in \n{{},{1,0,3,2},{2,1},{3,2,1,0,3,2},{},{},{2}} \n{\\foreach \\y [count=\\t from 0] in \\x {  \\node[font=\\scriptsize] at (-\\t,\\s) {$\\y$}; \n \\draw (-\\t+.5,\\s+.5) to (-\\t-.5,\\s+.5); \n \\draw (-\\t+.5,\\s-.5) to (-\\t-.5,\\s-.5); \n \\draw (-\\t-.5,\\s-.5) to (-\\t-.5,\\s+.5);  } \n \\draw[-,thick] (.5,\\s+1) to (.5,-.5) to (-\\t-1,-.5); } \n \\end{tikzpicture} \n'
phi(i)

Return the value \varepsilon_i(Y) + \langle h_i,
\mathrm{wt}(Y)\rangle, where h_i is the i-th simple coroot and Y is self.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(3)([[0],[1,0,3,2],[2,1],[3,2,1,0,3,2],[0],[],[2]])
sage: y.phi(1)
3
sage: y.phi(2)
-1
pp()

Return an ASCII drawing of self.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(2)([[0,2,1],[1,0,2,1,0],[],[0],[1,0,2],[],[],[1]])
sage: y.pp()
        1|
         |
         |
    2|0|1|
        0|
         |
0|1|2|0|1|
    1|2|0|
raw_signature(i)

Return the sequence from \{+,-\} obtained from all i-admissible slots and removable i-boxes without canceling any (+,-)-pairs. The result also notes the row and column of the sign.

EXAMPLES:

sage: x = CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.raw_signature(2)
[['-', 3, 6], ['-', 1, 4], ['-', 6, 1]]
signature(i)

Return the i-signature of self.

The signature is obtained by reading self in columns bottom to top starting from the left. Then add a - at every i-box which may be removed from self and still obtain a legal generalized Young wall, and add a + at each site for which an i-box may be added and still obtain a valid generalized Young wall. Then successively cancel any (+,-)-pair to obtain a sequence of the form - \cdots -+ \cdots +. This resulting sequence is the output.

EXAMPLES:

sage: y = CrystalOfGeneralizedYoungWalls(2)([[0],[1,0],[2,1,0,2],[],[1]])
sage: y.signature(1)
''

sage: x = CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.signature(2)
'---'
weight()

Returns the weight of self as an element of the root lattice \bigoplus_{i=0}^n \ZZ \alpha_i.

EXAMPLES:

sage: x=CrystalOfGeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.weight()
-2*alpha[0] - 3*alpha[1] - 5*alpha[2] - 3*alpha[3]
class sage.combinat.crystals.generalized_young_walls.HighestWeightCrystalOfGYW(n, La)

Bases: sage.combinat.crystals.generalized_young_walls.CrystalOfGeneralizedYoungWalls

The crystal \mathcal{Y}(\lambda) of generalized Young walls of the given type with highest weight \lambda.

These were characterized in Theorem 4.1 of [KS10]. See GeneralizedYoungWall.in_highest_weight_crystal().

INPUT:

  • n – type A_n^{(1)}
  • weight – dominant integral weight

EXAMPLES:

sage: La = RootSystem(['A',3,1]).weight_lattice().fundamental_weights()[1]
sage: YLa = HighestWeightCrystalOfGYW(3,La)
sage: y = YLa([[0],[1,0,3,2,1],[2,1,0],[3]])
sage: y.pp()
        3|
    0|1|2|
1|2|3|0|1|
        0|
sage: y.weight()
-Lambda[0] + Lambda[2] + Lambda[3]
sage: y.in_highest_weight_crystal(La)
True
sage: y.f(1)
[[0], [1, 0, 3, 2, 1], [2, 1, 0], [3], [], [1]]
sage: y.f(1).f(1)
sage: yy = CrystalOfGeneralizedYoungWalls(3)([[0], [1, 0, 3, 2, 1], [2, 1, 0], [3], [], [1]])
sage: yy.f(1)
[[0], [1, 0, 3, 2, 1], [2, 1, 0], [3], [], [1], [], [], [], [1]]
sage: yyy = yy.f(1)
sage: yyy.in_highest_weight_crystal(La)
False

sage: LS = CrystalOfLSPaths(['A',3,1],[1,0,0,0])
sage: C = LS.subcrystal(max_depth=4)
sage: G = LS.digraph(subset=C)
sage: P = LS.weight_lattice_realization()
sage: La = P.fundamental_weights()
sage: YW = HighestWeightCrystalOfGYW(3,La[0])
sage: CW = YW.subcrystal(max_depth=4)
sage: GW = YW.digraph(subset=CW)
sage: GW.is_isomorphic(G,edge_labels=True)
True

To display the crystal down to a specified depth:

sage: S = YLa.subset(max_depth=4)
sage: sorted(list(S))
[[], [[], [1]], [[], [1], [2]], [[], [1], [2], [3]], [[], [1, 0]], [[], [1, 0], [2]], [[], [1, 0], [2], [3]], [[], [1, 0], [2, 1]], [[], [1, 0, 3]], [[], [1, 0, 3], [2]], [[], [1, 0, 3, 2]]]
sage: G = YLa.digraph(subset=S)
sage: view(G, tightpage=True) # not tested
Element

alias of HighestWeightCrystalofGYWElement

subset(max_depth=4)

Return a subset of self up to max_depth.

EXAMPLES:

sage: Y = HighestWeightCrystalOfGYW(2,RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[0])
sage: S = Y.subset(max_depth=3)
sage: S
[[], [[0]], [[0, 2]], [[0], [1]], [[0, 2, 1]], [[0, 2], [1]]]
class sage.combinat.crystals.generalized_young_walls.HighestWeightCrystalofGYWElement(parent, data)

Bases: sage.combinat.crystals.generalized_young_walls.GeneralizedYoungWall

Element of the highest weight crystal of generalized Young walls.

e(i)

Compute the action of \widetilde{e}_i restricted to the highest weight crystal.

EXAMPLES:

sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: hwy = HighestWeightCrystalOfGYW(2,La)([[],[1,0],[2,1]])
sage: hwy.e(1)
[[], [1, 0], [2]]
sage: hwy.e(2)
sage: hwy.e(3)
f(i)

Compute the action of \widetilde{f}_i restricted to the highest weight crystal.

EXAMPLES:

sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: GYW = CrystalOfGeneralizedYoungWalls(2)
sage: y = GYW([[],[1,0],[2,1]])
sage: y.f(1)
[[], [1, 0], [2, 1], [], [1]]
sage: hwy = HighestWeightCrystalOfGYW(2,La)([[],[1,0],[2,1]])
sage: hwy.f(1)
weight()

Return the weight of self in the highest weight crystal as an element of the weight lattice \bigoplus_{i=0}^n \ZZ \Lambda_i.

EXAMPLES:

sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: hwy = HighestWeightCrystalOfGYW(2,La)([[],[1,0],[2,1]])
sage: hwy.weight()
Lambda[0] - Lambda[1] + Lambda[2]

Previous topic

Tensor Products of Crystals

Next topic

Posets

This Page