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.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.
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.
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.
Equations
- TauCeti.rowInsert x [] = [[x]]
- TauCeti.rowInsert x (row :: rows) = (TauCeti.rowBump x row).1 :: (TauCeti.rowBump x row).2.elim rows fun (x : α) => TauCeti.rowInsert x rows
Instances For
The index of the row in which TauCeti.rowInsert x T adds its new cell.
Equations
- TauCeti.rowInsertIndex x [] = 0
- TauCeti.rowInsertIndex x (row :: rows) = (TauCeti.rowBump x row).2.elim 0 fun (x : α) => TauCeti.rowInsertIndex x rows + 1
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.
Insertion preserves tableaux #
Row insertion preserves tableaux.
The new cell of T ← x is a corner: the row below it is strictly shorter.
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.
Equations
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.
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
rowInsertEquiv sends (T, x) to T ← x with the row of its new cell.