AUTHORS:
Generalized Young walls are certain generalizations of Young tableaux
introduced in [KS10] and designed to be a realization of the crystals
and
in type
.
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 ![]() |
[KLRS] | S.-J. Kang, K.-H. Lee, H. Ryu, and B. Salisbury.
A combinatorial description of the affine Gindikin-Karpelevich formula of
type ![]() |
Bases: sage.combinat.crystals.generalized_young_walls.InfinityCrystalOfGeneralizedYoungWalls
The crystal of generalized Young walls of the given
type with highest weight
.
These were characterized in Theorem 4.1 of [KS10]. See GeneralizedYoungWall.in_highest_weight_crystal().
INPUT:
EXAMPLES:
sage: La = RootSystem(['A',3,1]).weight_lattice().fundamental_weights()[1]
sage: YLa = crystals.GeneralizedYoungWalls(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 = crystals.infinity.GeneralizedYoungWalls(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 = crystals.LSPaths(['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 = crystals.GeneralizedYoungWalls(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
Return a subset of self up to max_depth.
EXAMPLES:
sage: Y = crystals.GeneralizedYoungWalls(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]]]
Bases: sage.combinat.crystals.generalized_young_walls.GeneralizedYoungWall
Element of the highest weight crystal of generalized Young walls.
Compute the action of restricted to the highest weight crystal.
EXAMPLES:
sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: hwy = crystals.GeneralizedYoungWalls(2,La)([[],[1,0],[2,1]])
sage: hwy.e(1)
[[], [1, 0], [2]]
sage: hwy.e(2)
sage: hwy.e(3)
Compute the action of restricted to the highest weight crystal.
EXAMPLES:
sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: GYW = crystals.infinity.GeneralizedYoungWalls(2)
sage: y = GYW([[],[1,0],[2,1]])
sage: y.f(1)
[[], [1, 0], [2, 1], [], [1]]
sage: hwy = crystals.GeneralizedYoungWalls(2,La)([[],[1,0],[2,1]])
sage: hwy.f(1)
Return the weight of self in the highest weight crystal as an
element of the weight lattice .
EXAMPLES:
sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: hwy = crystals.GeneralizedYoungWalls(2,La)([[],[1,0],[2,1]])
sage: hwy.weight()
Lambda[0] - Lambda[1] + Lambda[2]
Bases: sage.combinat.combinat.CombinatorialObject, sage.structure.element.Element
A generalized Young wall.
For more information, see InfinityCrystalOfGeneralizedYoungWalls.
EXAMPLES:
sage: Y = crystals.infinity.GeneralizedYoungWalls(4)
sage: mg = Y.module_generators[0]; mg.pp()
0
sage: mg.f_string([1,2,0,1]).pp()
1|2|
0|1|
|
Return where
is self.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(3)([[0],[1,0,3,2],[2,1],[3,2,1,0,3,2],[0],[],[2]])
sage: y.Epsilon()
Lambda[0] + 3*Lambda[2]
Return where
is self.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(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 = crystals.infinity.GeneralizedYoungWalls(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]
Return the number of
-colored boxes in the k-th
column of self.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(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
Return the list of boxes from the k-th column of self.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(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 = crystals.infinity.GeneralizedYoungWalls(5)([])
sage: hw.column(1)
[]
Return total number of blocks in self.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(2)([[0],[1,0],[2,1,0,2],[],[1]])
sage: y.content()
8
sage: x = crystals.infinity.GeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.content()
13
Return the application of the Kashiwara raising operator
on self.
This will remove the -colored box corresponding to the
rightmost
in self.signature(i).
EXAMPLES:
sage: x = crystals.infinity.GeneralizedYoungWalls(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)
Return the number of -colored arrows in the
-string above
self in the crystal graph.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(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
Return the application of the Kashiwara lowering operator
on self.
This will add an -colored colored box to the site corresponding
to the leftmost plus in self.signature(i).
EXAMPLES:
sage: hw = crystals.infinity.GeneralizedYoungWalls(2)([])
sage: hw.f(1)
[[], [1]]
sage: _.f(2)
[[], [1], [2]]
sage: _.f(0)
[[], [1, 0], [2]]
sage: _.f(0)
[[0], [1, 0], [2]]
The -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 = crystals.infinity.GeneralizedYoungWalls(2)([[0],[1,0],[2,1,0,2],[],[1]])
sage: y.generate_signature(1)
([['+', 2, 5], ['-', 4, 1]], ' ')
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 represents a
vertex in the highest weight crystal
, with
a dominant integral weight of level
, if it satisfies the
following condition. For each positive integer
, if there exists
such that
, then for some
,
where is the set of simple coroots attached
to
.
EXAMPLES:
sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()[1]
sage: GYW = crystals.infinity.GeneralizedYoungWalls(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
Generate LaTeX code for self but the output is larger. Requires TikZ.
EXAMPLES:
sage: x = crystals.infinity.GeneralizedYoungWalls(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'
Return the value of
on self.In [KLRS], the statistic
was defined on elements inEXAMPLES:
sage: Y = crystals.infinity.GeneralizedYoungWalls(3)
sage: y = Y([[0],[],[],[],[0],[],[],[],[0]])
sage: y.number_of_parts()
1
sage: Y = crystals.infinity.GeneralizedYoungWalls(3)
sage: y = Y([[0,3,2],[1,0],[],[],[0,3],[1,0],[],[],[0]])
sage: y.number_of_parts()
4
sage: Y = crystals.infinity.GeneralizedYoungWalls(2)
sage: y = Y([[0,2,1],[1,0],[2,1,0,2,1,0,2,1,0],[],[2,1,0,2,1,0]])
sage: y.number_of_parts()
8
Return the value , where
is the
-th simple
coroot and
is self.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(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
Return an ASCII drawing of self.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(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|
Return the sequence from obtained from all
-admissible
slots and removable
-boxes without canceling any
-pairs.
The result also notes the row and column of the sign.
EXAMPLES:
sage: x = crystals.infinity.GeneralizedYoungWalls(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]]
Return the -signature of self.
The signature is obtained by reading self in columns bottom to top starting from the left.
Then add a at every
-box which may be removed from self and still obtain a legal
generalized Young wall, and add a
at each site for which an
-box may be added and still
obtain a valid generalized Young wall. Then successively cancel any
-pair to obtain a
sequence of the form
. This resulting sequence is the output.
EXAMPLES:
sage: y = crystals.infinity.GeneralizedYoungWalls(2)([[0],[1,0],[2,1,0,2],[],[1]])
sage: y.signature(1)
''
sage: x = crystals.infinity.GeneralizedYoungWalls(3)([[],[1,0,3,2],[2,1],[3,2,1,0,3,2],[],[],[2]])
sage: x.signature(2)
'---'
Return the value of
on self.Let be the set of
generalized Young walls which have no rows whose right-most box is
colored
. For
,
where is the number of nonempty rows in
whose right-most
box is colored
.
EXAMPLES:
sage: Y = crystals.infinity.GeneralizedYoungWalls(2)
sage: y = Y([[0,2,1,0,2],[1,0,2],[],[0,2],[1,0],[],[0],[1,0]])
sage: y.sum_of_weighted_row_lengths()
15
Returns the weight of self as an element of the root lattice
.
EXAMPLES:
sage: x = crystals.infinity.GeneralizedYoungWalls(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]
Bases: sage.structure.parent.Parent, sage.structure.unique_representation.UniqueRepresentation
The crystal of generalized Young walls of
type
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 -th row from the
bottom and the
-th column from the right is
. There are
several growth conditions on elements in
:
There is a crystal structure on defined as follows.
Define maps
by
where is the number of
-boxes in
,
is the number of
in the
-signature of
, and
See GeneralizedYoungWall.e(), GeneralizedYoungWall.f(),
and GeneralizedYoungWall.signature() for more about
,
, and
-signatures.
INPUT:
EXAMPLES:
sage: Yinf = crystals.infinity.GeneralizedYoungWalls(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) # long time
sage: view(G, tightpage=True) # not tested
alias of GeneralizedYoungWall
Construct the subcrystal of self trucated at depth max_depth.
EXAMPLES:
sage: Y = crystals.infinity.GeneralizedYoungWalls(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]]]