Schensted row insertion into a tableau #
A semistandard tableau is recorded here by its list of rows, from top to bottom: every row is
nonempty and weakly increasing, and each row sits on top of the next one, being at least as long
and strictly smaller in every column (List.IsTableauRows).
Row insertion TauCeti.rowInsert x T inserts the letter x into the first row by
TauCeti.rowBump; the letter bumped out of that row is inserted into the second row, and so on,
until a letter is appended at the end of a row (possibly a new row at the bottom). This is
Schensted's insertion T ← x, the step iterated by the Robinson--Schensted--Knuth
correspondence. Its basic properties are:
- the result is again a tableau (
List.IsTableauRows.rowInsert); - it has the letters of
Ttogether withx(TauCeti.flatten_rowInsert_perm); - its shape is that of
Twith one cell added, at the end of the rowTauCeti.rowInsertIndex x T(TauCeti.length_getD_rowInsert), and that cell is a corner (TauCeti.length_getD_succ_rowInsertIndex_lt).
Reverse insertion TauCeti.reverseRowInsert k T removes the last entry of row k and moves it
up by TauCeti.reverseRowBump, row by row, ejecting a letter from the first row. It undoes
insertion (TauCeti.reverseRowInsert_rowInsert), and conversely, from a corner of a tableau it
produces a tableau and a letter whose insertion recovers the original tableau with the new cell
at that corner (TauCeti.rowInsert_reverseRowInsert, List.IsTableauRows.reverseRowInsert).
So insertion is a bijection between pairs of a tableau and a letter, and tableaux with a chosen
corner (TauCeti.rowInsertEquiv). Iterating it over the letters of a word, and recording the
new cells, is the Robinson--Schensted--Knuth correspondence.
Main definitions #
List.IsRowAbove: one row can sit directly on top of another in a semistandard tableau.List.IsTableauRows: the rows of a semistandard tableau.TauCeti.appendToRow: append a letter at the end of a given row of a list of rows.TauCeti.dropLastOfRow: remove the last letter of a given row of a list of rows.TauCeti.rowInsert: Schensted row insertion of a letter into a tableau.TauCeti.rowInsertIndex: the row in which row insertion adds its new cell.TauCeti.reverseRowInsert: reverse row insertion from the end of a given row.TauCeti.rowInsertEquiv: row insertion as a bijection onto tableaux with a chosen corner.
References #
- W. Fulton, Young Tableaux, Cambridge University Press (1997), Sections 1.1 and 4.1.
- B. E. Sagan, The Symmetric Group, 2nd ed., Springer GTM 203 (2001), Section 3.1.
The row upper can sit directly on top of the row lower in a semistandard tableau:
lower is no longer than upper, and each entry of lower is strictly greater than the entry
of upper above it.
The lower row is no longer than the upper row.
Each entry of the lower row is strictly greater than the entry above it.
Instances For
Any row can sit on top of the empty row.
Lengthening the upper row keeps it on top of the lower row.
Lengthening the lower row by an entry greater than the entry above it keeps the upper row on top of it.
If one row sits above a second, and the second above a third, the first sits above the third.
The rows, listed from top to bottom, of a semistandard tableau: every row is nonempty and
weakly increasing, and every row sits on top of the next one in the sense of List.IsRowAbove.
So the row lengths weakly decrease and the columns strictly increase.
No row is empty.
Every row is weakly increasing.
- isChain : IsChain IsRowAbove rows
Every row sits on top of the next one.
Instances For
The empty tableau.
Deleting the first row of a tableau leaves a tableau.
The row lengths of a tableau form a weakly decreasing list.
At a corner of the first row of a tableau, a first row with a single entry is the whole tableau: the row below it is empty.
In a nonempty tableau whose largest entry is a, the highest row ending in a ends in a
corner: the row below it is strictly shorter.
In a tableau, the largest entry ends some row.
Appending a letter to a row #
The rows of TauCeti.appendToRow a k: row k gains the letter a at its end, and every
other row is unchanged. Rows beyond the last one are read as empty.
Appending a to a row does not move any other letter.
Appending to a row preserves tableaux when the new cell is a corner of the new shape and its entry fits: it is at least every entry of its row, and greater than the entry above it.
Removing the last letter of a row #
Remove the last letter of row k of a list of rows, deleting the row if it becomes empty.
At a corner of a tableau this undoes TauCeti.appendToRow.
Instances For
Removing a letter from the empty list of rows does nothing.
Removing the last letter of row 0 drops the last letter of the first row, deleting that row
if it becomes empty.
The rows of TauCeti.dropLastOfRow k at a nonempty row: row k loses its last letter, and
every other row is unchanged, provided that deleting row k (when it has a single cell) shifts
only empty rows. Rows beyond the last one are read as empty.
At a corner of a tableau, putting back the last letter of row k after removing it recovers
the tableau.
Removing a corner preserves tableaux: deleting the last letter of a row that is longer than the next one gives a tableau.
Row insertion #
Schensted row insertion T ← x of a letter x into a tableau given by its rows T:
insert x into the first row by TauCeti.rowBump, insert the bumped letter into the next row,
and so on, until a letter is appended at the end of a row, possibly a new last row.
Instances For
The index of the row in which TauCeti.rowInsert x T adds its new cell.
Instances For
Inserting into the empty tableau adds its cell in the first row.
If nothing is bumped from the first row, the new cell is in the first row.
If a letter is bumped from the first row, the new cell is where its insertion into the remaining rows puts it.
The new cell is in an existing row or in the row just below the last one.
The shape of T ← x: the row TauCeti.rowInsertIndex x T gains one cell and every
other row keeps its length. Rows beyond the last one are read as empty.
T ← x has one more row than T exactly when the new cell starts a new row.
The row to which TauCeti.rowInsert_appendToRow moves a letter appended to row s of T
is a row of T ← x or the row just below its last one: it is s + 1 if the new cell of T ← x
is in row s, and s otherwise.
Inserting a letter at least as large as every entry of the first row appends it to the first row.
Inserting a letter at least as large as every entry of the first row adds its cell to the first row.
Insertion past a larger letter. Let k be strictly larger than x and than every entry
of rows, and append k to row s. Inserting x then gives the insertion of x into rows
with k appended to row s, unless the insertion of x into rows ends in row s: in that
case x's bumping path displaces k, which moves to the end of row s + 1.
The new cell of an insertion past a larger letter. In the situation of
TauCeti.rowInsert_appendToRow, the new cell is in the same row as for the insertion of x into
rows, unless that row is s, in which case it is the cell of k at the end of row s + 1.
Insertion preserves tableaux #
Row insertion preserves tableaux.
The row below the new cell of T ← x is strictly shorter than the row gaining the cell.
Only weakly decreasing original row lengths are needed.
A new cell below the first row sits under a longer row: if T ← x adds its cell in row
i + 1, then row i + 1 of T is strictly shorter than row i.
Reverse insertion #
Reverse row insertion from the end of row k: remove the last entry of row k
(deleting the row if it becomes empty), insert it into row k - 1 by
TauCeti.reverseRowBump, insert the letter returned into row k - 2, and so on up to the first
row. The second component is the letter returned by the first row, or none if some step
fails, which does not happen at a corner of a tableau.
Instances For
Reverse insertion into the empty tableau fails.
Reverse insertion from the end of the first row removes its last entry and returns it.
A letter returned by reverse insertion into the rows below the first is reverse bumped into the first row.
If reverse insertion into the rows below the first fails, it fails.
Reverse insertion undoes insertion: reverse inserting from the new cell of T ← x
recovers T and returns x. Only the rows of T being nonempty and weakly increasing is used.
Reverse insertion preserves tableaux at corners: reverse inserting from the end of a
row k of a tableau whose next row is strictly shorter yields a tableau.
Insertion undoes reverse insertion at a corner. If row k + 1 of a tableau T is
strictly shorter than row k, then reverse insertion from the end of row k returns a letter
x and a tableau T' such that T' ← x is T, with its new cell in row k.
A nonempty tableau has a largest entry a, and a highest row k ending in a.
Reverse insertion from a corner of P, and removal of the last letter of the same row of a
list of rows Q of the same shape, give two lists of rows of the same shape.
Insertion as a bijection #
Row insertion is a bijection between pairs of a tableau and a letter, and pairs of a
tableau and a row k ending in a corner, that is, whose next row is strictly shorter. It sends
(T, x) to T ← x with the row of its new cell; the inverse is reverse row insertion.
Instances For
rowInsertEquiv sends (T, x) to T ← x with the row of its new cell.