Safe Haskell | None |
---|---|

Language | Haskell2010 |

Young tableaux and similar gadgets. See e.g. William Fulton: Young Tableaux, with Applications to Representation theory and Geometry (CUP 1997).

The convention is that we use the English notation, and we store the tableaux as lists of the rows.

That is, the following standard Young tableau of shape [5,4,1]

1 3 4 6 7 2 5 8 10 9

is encoded conveniently as

[ [ 1 , 3 , 4 , 6 , 7 ] , [ 2 , 5 , 8 ,10 ] , [ 9 ] ]

- type Tableau a = [[a]]
- asciiTableau :: Show a => Tableau a -> ASCII
- _shape :: Tableau a -> [Int]
- shape :: Tableau a -> Partition
- dualTableau :: Tableau a -> Tableau a
- content :: Tableau a -> [a]
- hooks :: Partition -> Tableau (Int, Int)
- hookLengths :: Partition -> Tableau Int
- rowWord :: Tableau a -> [a]
- rowWordToTableau :: Ord a => [a] -> Tableau a
- columnWord :: Tableau a -> [a]
- columnWordToTableau :: Ord a => [a] -> Tableau a
- isLatticeWord :: [Int] -> Bool
- standardYoungTableaux :: Partition -> [Tableau Int]
- countStandardYoungTableaux :: Partition -> Integer
- semiStandardYoungTableaux :: Int -> Partition -> [Tableau Int]
- countSemiStandardYoungTableaux :: Int -> Partition -> Integer

# Basic stuff

asciiTableau :: Show a => Tableau a -> ASCII Source

dualTableau :: Tableau a -> Tableau a Source

hooks :: Partition -> Tableau (Int, Int) Source

An element `(i,j)`

of the resulting tableau (which has shape of the
given partition) means that the vertical part of the hook has length `i`

,
and the horizontal part `j`

. The *hook length* is thus `i+j-1`

.

Example:

> mapM_ print $ hooks $ toPartition [5,4,1] [(3,5),(2,4),(2,3),(2,2),(1,1)] [(2,4),(1,3),(1,2),(1,1)] [(1,1)]

hookLengths :: Partition -> Tableau Int Source

# Row and column words

rowWordToTableau :: Ord a => [a] -> Tableau a Source

columnWord :: Tableau a -> [a] Source

columnWordToTableau :: Ord a => [a] -> Tableau a Source

isLatticeWord :: [Int] -> Bool Source

Checks whether a sequence of positive integers is a *lattice word*,
which means that in every initial part of the sequence any number `i`

occurs at least as often as the number `i+1`

# Standard Young tableaux

standardYoungTableaux :: Partition -> [Tableau Int] Source

Standard Young tableaux of a given shape. Adapted from John Stembridge, http://www.math.lsa.umich.edu/~jrs/software/SFexamples/tableaux.

countStandardYoungTableaux :: Partition -> Integer Source

hook-length formula

# Semistandard Young tableaux

semiStandardYoungTableaux :: Int -> Partition -> [Tableau Int] Source

Semistandard Young tableaux of given shape, "naive" algorithm

countSemiStandardYoungTableaux :: Int -> Partition -> Integer Source

Stanley's hook formula (cf. Fulton page 55)