# TableauxBumpers SΒΆ

TableauBumpers implements the Schenstead-Knuth correspondence between sequences and pairs of Young tableaux. The 2 Young tableaux are represented as a single tableau with pairs as components.

bat1: List List List S -> List List S

`bat1(llp)` unbumps a tableau `llp`. Operation `bat1` is the inverse of `tab1`.

bat: Tableau List S -> List List S

`bat(ls)` unbumps a tableau `ls`

bumprow: ((S, S) -> Boolean, List S, List List S) -> Record(fs: Boolean, sd: List S, td: List List S)

`bumprow(cf, pr, r)` is an auxiliary function which bumps a row `r` with a pair `pr` using comparison function `cf`, and returns a record

bumptab1: (List S, List List List S) -> List List List S

`bumptab1(pr, t)` bumps a tableau `t` with a pair `pr` using comparison function <, returning a new tableau

bumptab: ((S, S) -> Boolean, List S, List List List S) -> List List List S

`bumptab(cf, pr, t)` bumps a tableau `t` with a pair `pr` using comparison function `cf`, returning a new tableau

inverse: List S -> List S

`inverse(ls)` forms the inverse of a sequence `ls`

lex: List List S -> List List S

`lex(ls)` sorts a list of pairs to lexicographic order

maxrow: (List S, List List List S, List List S, List List List S, List List List S, List List List S) -> Record(f1: List S, f2: List List List S, f3: List List S, f4: List List List S)

`maxrow(a, b, c, d, e)` is an auxiliary function for `mr`

mr: List List List S -> Record(f1: List S, f2: List List List S, f3: List List S, f4: List List List S)

`mr(t)` is an auxiliary function which finds the position of the maximum element of a tableau `t` which is in the lowest row, producing a record of results

slex: List S -> List List S

`slex(ls)` sorts the argument sequence `ls`, then zips (see map) the original argument sequence with the sorted result to a list of pairs

tab1: List List S -> List List List S

`tab1(lp)` creates a tableau from a list of pairs `lp`

tab: List S -> Tableau List S

`tab(ls)` creates a tableau from `ls` by first creating a list of pairs using slex, then creating a tableau using \ `tab1`\ .

untab: (List List S, List List List S) -> List List S

`untab(lp, llp)` is an auxiliary function which unbumps a tableau `llp`, using `lp` to accumulate pairs