AUTHORS:
REFERENCES:
[BBF] | (1, 2, 3) B. Brubaker, D. Bump, and S. Friedberg. Weyl Group Multiple Dirichlet Series: Type A Combinatorial Theory. Ann. of Math. Stud., vol. 175, Princeton Univ. Press, New Jersey, 2011. |
[GC50] | I. M. Gelfand and M. L. Cetlin. Finite-Dimensional Representations of the Group of Unimodular Matrices. Dokl. Akad. Nauk SSSR 71, pp. 825–828, 1950. |
[Tok88] | T. Tokuyama. A Generating Function of Strict Gelfand Patterns and Some Formulas on Characters of General Linear Groups. J. Math. Soc. Japan 40 (4), pp. 671–685, 1988. |
Bases: sage.structure.list_clone.ClonableArray
A Gelfand-Tsetlin (sometimes written as Gelfand-Zetlin or Gelfand-Cetlin) pattern. They were originally defined in [GC50].
A Gelfand-Tsetlin pattern is a triangular array:
such that .
Gelfand-Tsetlin patterns are in bijection with semistandard Young tableaux
by the following algorithm. Let be a Gelfand-Tsetlin pattern with
being the
-st row (note that this is a partition).
The definition of
implies
where is the empty partition, and each skew shape
is a horizontal strip. Thus define
by inserting
into the squares of the skew shape
, for
.
To each entry in a Gelfand-Tsetlin pattern, one may attach a decoration of a circle or a box (or both or neither). These decorations appear in the study of Weyl group multiple Dirichlet series, and are implemented here following the exposition in [BBF].
Note
We use the “right-hand” rule for determining circled and boxed entries.
Warning
The entries in Sage are 0-based and are thought of as flushed to the left in a matrix. In other words, the coordinates of entries in the Gelfand-Tsetlin patterns are thought of as the matrix:
However, in the discussions, we will be using the standard numbering system.
EXAMPLES:
sage: G = GelfandTsetlinPattern([[3, 2, 1], [2, 1], [1]]); G
[[3, 2, 1], [2, 1], [1]]
sage: G.pp()
3 2 1
2 1
1
sage: G = GelfandTsetlinPattern([[7, 7, 4, 0], [7, 7, 3], [7, 5], [5]]); G.pp()
7 7 4 0
7 7 3
7 5
5
sage: G.to_tableau().pp()
1 1 1 1 1 2 2
2 2 2 2 2 3 3
3 3 3 4
Return the Tokuyama coefficient attached to self.
Following the exposition of [BBF], Tokuyama’s formula asserts
where the sum is over all strict Gelfand-Tsetlin patterns with fixed
top row , with
a partition with at most
parts and
, and
is a
Schur function.
INPUT:
EXAMPLES:
sage: P = GelfandTsetlinPattern([[3,2,1],[2,2],[2]])
sage: P.Tokuyama_coefficient()
0
sage: G = GelfandTsetlinPattern([[3,2,1],[3,1],[2]])
sage: G.Tokuyama_coefficient()
t^2 + t
sage: G = GelfandTsetlinPattern([[2,1,0],[1,1],[1]])
sage: G.Tokuyama_coefficient()
0
sage: G = GelfandTsetlinPattern([[5,3,2,1,0],[4,3,2,0],[4,2,1],[3,2],[3]])
sage: G.Tokuyama_coefficient()
t^8 + 3*t^7 + 3*t^6 + t^5
Return the position of the boxed entries of self.
Using the right-hand rule, an entry is boxed if
; i.e.,
has the same value as its
neighbor to the northwest.
EXAMPLES:
sage: G = GelfandTsetlinPattern([[3,2,1],[3,1],[1]])
sage: G.boxed_entries()
((1, 0),)
Check that this is a valid Gelfand-Tsetlin pattern.
EXAMPLES:
sage: G = GelfandTsetlinPatterns()
sage: G([[3,2,1],[2,1],[1]]).check()
Return the circled entries of self.
Using the right-hand rule, an entry is circled if
; i.e.,
has the same value as its
neighbor to the northeast.
EXAMPLES:
sage: G = GelfandTsetlinPattern([[3,2,1],[3,1],[1]])
sage: G.circled_entries()
((1, 1), (2, 0))
Return True if self is a strict Gelfand-Tsetlin pattern.
A Gelfand-Tsetlin pattern is said to be strict if every row is strictly decreasing.
EXAMPLES:
sage: GelfandTsetlinPattern([[7,3,1],[6,2],[4]]).is_strict()
True
sage: GelfandTsetlinPattern([[3,2,1],[3,1],[1]]).is_strict()
True
sage: GelfandTsetlinPattern([[6,0,0],[3,0],[2]]).is_strict()
False
Return the number of boxed entries. See boxed_entries().
EXAMPLES:
sage: G = GelfandTsetlinPattern([[3,2,1],[3,1],[1]])
sage: G.number_of_boxes()
1
Return the number of boxed entries. See circled_entries().
EXAMPLES:
sage: G = GelfandTsetlinPattern([[3,2,1],[3,1],[1]])
sage: G.number_of_circles()
2
Return the number of special entries. See special_entries().
EXAMPLES:
sage: G = GelfandTsetlinPattern([[4,2,1],[4,1],[2]])
sage: G.number_of_special_entries()
1
Pretty print self.
EXAMPLES:
sage: G = GelfandTsetlinPatterns()
sage: G([[3,2,1],[2,1],[1]]).pp()
3 2 1
2 1
1
Return the list of row sums.
For a Gelfand-Tsetlin pattern , the
-th row sum
is
EXAMPLES:
sage: G = GelfandTsetlinPattern([[5,3,2,1,0],[4,3,2,0],[4,2,1],[3,2],[3]])
sage: G.row_sums()
[11, 9, 7, 5, 3]
sage: G = GelfandTsetlinPattern([[3,2,1],[3,1],[2]])
sage: G.row_sums()
[6, 4, 2]
Return the special entries.
An entry is special if
,
that is to say, the entry is neither boxed nor circled and is not
in the first row. The name was coined by [Tok88].
EXAMPLES:
sage: G = GelfandTsetlinPattern([[3,2,1],[3,1],[1]])
sage: G.special_entries()
()
sage: G = GelfandTsetlinPattern([[4,2,1],[4,1],[2]])
sage: G.special_entries()
((2, 0),)
Return self as a semistandard Young tableau.
The conversion from a Gelfand-Tsetlin pattern to a semistandard Young
tableaux is as follows. Let be a Gelfand-Tsetlin pattern with
being the
-st row (note that this is a
partition). The definition of
implies
where is the empty partition, and each skew shape
is a horizontal strip. Thus define
by inserting
into the squares of the skew shape
, for
.
EXAMPLES:
sage: G = GelfandTsetlinPatterns()
sage: elt = G([[3,2,1],[2,1],[1]])
sage: T = elt.to_tableau(); T
[[1, 2, 3], [2, 3], [3]]
sage: T.pp()
1 2 3
2 3
3
sage: G(T) == elt
True
Return the weight of self.
Define the weight of to be the content of the tableau to which
corresponds under the bijection between Gelfand-Tsetlin patterns and
semistandard tableaux. More precisely,
where the are the row sums.
EXAMPLES:
sage: G = GelfandTsetlinPattern([[2,1,0],[1,0],[1]])
sage: G.weight()
(1, 0, 2)
sage: G = GelfandTsetlinPattern([[4,2,1],[3,1],[2]])
sage: G.weight()
(2, 2, 3)
Bases: sage.structure.parent.Parent, sage.structure.unique_representation.UniqueRepresentation
Gelfand-Tsetlin patterns.
INPUT:
TESTS:
Check that the number of Gelfand-Tsetlin patterns is equal to the number of semistandard Young tableaux:
sage: G = GelfandTsetlinPatterns(3,3)
sage: c = 0
sage: from sage.combinat.crystals.kirillov_reshetikhin import partitions_in_box
sage: for p in partitions_in_box(3,3):
... S = SemistandardTableaux(p, max_entry=3)
... c += S.cardinality()
sage: c == G.cardinality()
True
Note that the top row in reverse of the Gelfand-Tsetlin pattern is the shape of the corresponding semistandard Young tableau under the bijection described in GelfandTsetlinPattern.to_tableau():
sage: G = GelfandTsetlinPatterns(top_row=[2,2,1])
sage: S = SemistandardTableaux([2,2,1], max_entry=3)
sage: G.cardinality() == S.cardinality()
True
alias of GelfandTsetlinPattern
Bases: sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPatterns
Gelfand-Tsetlin patterns with a fixed top row.
Return the Tokuyama formula of self.
Following the exposition of [BBF], Tokuyama’s formula asserts
where the sum is over all strict Gelfand-Tsetlin patterns with fixed
top row , with
a partition with at most
parts and
, and
is a Schur
function.
INPUT:
EXAMPLES:
sage: GT = GelfandTsetlinPatterns(top_row=[2,1,0],strict=True)
sage: GT.Tokuyama_formula()
t^3*x1^2*x2 + t^2*x1*x2^2 + t^2*x1^2*x3 + t^2*x1*x2*x3 + t*x1*x2*x3 + t*x2^2*x3 + t*x1*x3^2 + x2*x3^2
sage: GT = GelfandTsetlinPatterns(top_row=[3,2,1],strict=True)
sage: GT.Tokuyama_formula()
t^3*x1^3*x2^2*x3 + t^2*x1^2*x2^3*x3 + t^2*x1^3*x2*x3^2 + t^2*x1^2*x2^2*x3^2 + t*x1^2*x2^2*x3^2 + t*x1*x2^3*x3^2 + t*x1^2*x2*x3^3 + x1*x2^2*x3^3
sage: GT = GelfandTsetlinPatterns(top_row=[1,1,1],strict=True)
sage: GT.Tokuyama_formula()
0
Return the top row of self.
EXAMPLES:
sage: G = GelfandTsetlinPatterns(top_row=[4,4,3,1])
sage: G.top_row()
(4, 4, 3, 1)