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
- _tableauShape :: Tableau a -> [Int]
- tableauShape :: Tableau a -> Partition
- tableauWeight :: Tableau a -> Int
- dualTableau :: Tableau a -> Tableau a
- tableauContent :: 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
- isSemiStandardTableau :: Tableau Int -> Bool
- semiStandardYoungTableaux :: Int -> Partition -> [Tableau Int]
- countSemiStandardYoungTableaux :: Int -> Partition -> Integer
- isStandardTableau :: Tableau Int -> Bool
- standardYoungTableaux :: Partition -> [Tableau Int]
- countStandardYoungTableaux :: Partition -> Integer
Basic stuff
asciiTableau :: Show a => Tableau a -> ASCII Source
ASCII diagram of a tableau
_tableauShape :: Tableau a -> [Int] Source
tableauShape :: Tableau a -> Partition Source
The shape of a tableau
tableauWeight :: Tableau a -> Int Source
Number of entries
dualTableau :: Tableau a -> Tableau a Source
The dual of the tableau is the mirror image to the main diagonal.
tableauContent :: Tableau a -> [a] Source
The content of a tableau is the list of its entries. The ordering is from the left to the right and then from the top to the bottom
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
rowWord :: Tableau a -> [a] Source
The row word of a tableau is the list of its entry read from the right to the left and then from the top to the bottom.
rowWordToTableau :: Ord a => [a] -> Tableau a Source
Semistandard tableaux can be reconstructed from their row words
columnWord :: Tableau a -> [a] Source
The column word of a tableau is the list of its entry read from the bottom to the top and then from the left to the right
columnWordToTableau :: Ord a => [a] -> Tableau a Source
Standard tableaux can be reconstructed from either their column or row words
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
Semistandard Young tableaux
isSemiStandardTableau :: Tableau Int -> Bool Source
A tableau is semistandard if its entries are weekly increasing horizontally and strictly increasing vertically
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)
Standard Young tableaux
isStandardTableau :: Tableau Int -> Bool Source
A tableau is standard if it is semistandard and its content is exactly [1..n]
,
where n
is the weight.
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