Skip to content

DeleteFromTableau ​

Reverse row insertion at the end of row rr of a Young tableau, the step inverse RSK repeats.

✓ checked against that system · ! checked, with disagreements (hover a chip)CombinatoricaDeleteFromTableau
DeleteFromTableau(tableau, r)the tableau without the last cell of row r, its entry bumped back up the rows above.
CombinatoricaDeleteFromTableau[tableau, r]
Typed signatures
TypePackageApplies
(list, integer) -> unknowncombinatoricsalways

Domain: Combinatorics

Details
  • Row insertion undone. The last cell of row rr leaves; its entry xx goes to row r−1r-1 and takes the place of the largest entry smaller than xx, which goes up in turn, and so on to row 1, where the entry that comes out is dropped. Inserting that entry into the result bumps along the same path and puts xx back at the end of row rr.
  • Inverse RSK is this step repeated: ToPermutation removes the cell of nn in the recording tableau, then n−1n-1, and so on, and each deletion from the insertion tableau drops the next letter, last first.
  • The tableau is a list of rows. Rows weakly increase and columns strictly increase (a semistandard tableau; a standard one has distinct entries), and row rr must end in a corner: it is the last row or longer than the one below it. Anything else, a row out of range or an entry that is no small integer, leaves the call unevaluated.
  • The result keeps the entries but the dropped one, so it is a tableau of those entries, not a standard one: {{1,3},{2}}\{\{1,3\},\{2\}\} at row 2 gives {{2,3}}\{\{2,3\}\}.
  • Defined in Epsil as a fold up the rows above rr; the domain check is the only TypeScript. tests/delete-from-tableau.test.ts peels the RSK pair of every permutation up to n=4n=4 and holds each step to a separate row insertion.
  • Combinatorica's name and value. Not a Wolfram head; Rsk is the forward direction, the insertions of all the letters at once.

Examples

Basic #

the lone 6 leaves and bumps the 4 up out of row 2, which bumps the 2 out of row 1

live ↗
InDeleteFromTableau([[1,2,5],[3,4],[6]],3)\mathrm{DeleteFromTableau}(\bigl\lbrack\bigl\lbrack1, 2, 5\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack, \bigl\lbrack6\bigr\rbrack\bigr\rbrack, 3)Out[[1,4,5],[3,6]]\bigl\lbrack\bigl\lbrack1, 4, 5\bigr\rbrack, \bigl\lbrack3, 6\bigr\rbrack\bigr\rbrack

the 4 ends row 2 and takes the place of the 2 above it

live ↗
InDeleteFromTableau([[1,2,5],[3,4],[6]],2)\mathrm{DeleteFromTableau}(\bigl\lbrack\bigl\lbrack1, 2, 5\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack, \bigl\lbrack6\bigr\rbrack\bigr\rbrack, 2)Out[[1,4,5],[3],[6]]\bigl\lbrack\bigl\lbrack1, 4, 5\bigr\rbrack, \bigl\lbrack3\bigr\rbrack, \bigl\lbrack6\bigr\rbrack\bigr\rbrack

row 1 ends in a corner, so nothing bumps up

live ↗
InDeleteFromTableau([[1,2,5],[3,4],[6]],1)\mathrm{DeleteFromTableau}(\bigl\lbrack\bigl\lbrack1, 2, 5\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack, \bigl\lbrack6\bigr\rbrack\bigr\rbrack, 1)Out[[1,2],[3,4],[6]]\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack, \bigl\lbrack6\bigr\rbrack\bigr\rbrack

the 1 drops out of row 1, so the result holds 2 and 3 only

live ↗
InDeleteFromTableau([[1,3],[2]],2)\mathrm{DeleteFromTableau}(\bigl\lbrack\bigl\lbrack1, 3\bigr\rbrack, \bigl\lbrack2\bigr\rbrack\bigr\rbrack, 2)Out[[2,3]]\bigl\lbrack\bigl\lbrack2, 3\bigr\rbrack\bigr\rbrack

the 4 bumps the 3, which bumps the 1

live ↗
InDeleteFromTableau([[1,5],[3,6],[4]],3)\mathrm{DeleteFromTableau}(\bigl\lbrack\bigl\lbrack1, 5\bigr\rbrack, \bigl\lbrack3, 6\bigr\rbrack, \bigl\lbrack4\bigr\rbrack\bigr\rbrack, 3)Out[[3,5],[4,6]]\bigl\lbrack\bigl\lbrack3, 5\bigr\rbrack, \bigl\lbrack4, 6\bigr\rbrack\bigr\rbrack

deleting the only cell leaves the empty tableau

live ↗
InDeleteFromTableau([[1]],1)\mathrm{DeleteFromTableau}(\bigl\lbrack\bigl\lbrack1\bigr\rbrack\bigr\rbrack, 1)Out[]\bigl\lbrack\bigr\rbrack

a semistandard tableau: the 2 takes the place of the last 1

live ↗
InDeleteFromTableau([[1,1,2],[2]],2)\mathrm{DeleteFromTableau}(\bigl\lbrack\bigl\lbrack1, 1, 2\bigr\rbrack, \bigl\lbrack2\bigr\rbrack\bigr\rbrack, 2)Out[[1,2,2]]\bigl\lbrack\bigl\lbrack1, 2, 2\bigr\rbrack\bigr\rbrack
About
Examples7
Checked againstCombinatorica 6 agree1 differ
CrosswalkCombinatorica ×2

Implementation

mappedcombinatoricapackages/oracle/src/mappings.ts

Combinatorica checks no corner, so it also answers for a row that is not one, with a result that is no tableau; ours stays unevaluated there.

See also: ToPermutation, Rsk, RskInsertion, StandardTableaux