This methods returns higher Specht polynomials sorted in hash tables depending on the input received.
If the input is just a YoungTableau $S$ of shape $\lambda$ and a PolynomialRing then it calculates the standard tableaux $ST(\lambda)$ and then stores all polynomials $F_T^S$ such that $T \in ST(\lambda)$. The polynomials are stored in a hash table with the filling of $T$ as the key.
The list $ST(\lambda)$ can be provided as an input. This is used to avoid repeating this calculation when this method is called multiple times with the same shape $\lambda$.
This set forms a basis for one of the copies of the Specht module $S^\lambda$.
i1 : R = QQ[x_0..x_3] o1 = R o1 : PolynomialRing |
i2 : p = new Partition from {2,2}
o2 = Partition{2, 2}
o2 : Partition
|
i3 : S = youngTableau(p,{0,2,1,3})
o3 = | 0 2 |
| 1 3 |
o3 : YoungTableau
|
i4 : higherSpechtPolynomials(S,R)
2 2 2 2 2 2 2 2
o4 = HashTable{{0, 1, 2, 3} => x x x - x x x + x x x - x x x - x x x + x x x - x x x + x x x }
0 1 2 0 1 2 0 1 3 0 2 3 1 2 3 0 2 3 0 1 3 1 2 3
2 2 2 2 2 2 2 2
{0, 2, 1, 3} => x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x
0 1 2 0 1 2 0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3
o4 : HashTable
|
i5 : stan = standardTableaux p
o5 = {| 0 1 |, | 0 2 |}
| 2 3 | | 1 3 |
o5 : TableauList
|
i6 : higherSpechtPolynomials(S, stan,R)
2 2 2 2 2 2 2 2
o6 = HashTable{{0, 1, 2, 3} => x x x - x x x + x x x - x x x - x x x + x x x - x x x + x x x }
0 1 2 0 1 2 0 1 3 0 2 3 1 2 3 0 2 3 0 1 3 1 2 3
2 2 2 2 2 2 2 2
{0, 2, 1, 3} => x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x
0 1 2 0 1 2 0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3
o6 : HashTable
|
If only a partition $\lambda$ and a polynomial ring is given then the method calculates $ST(\lambda)$. Then it calculates all polynomials $F_T^S$ such that $S,T \in ST(\lambda)$.
This is a basis for the isotypical component $X_\lambda$ in the coinvariant algebra of the symmetric group.
The polynomials are stored by calling for each $S \in ST(\lambda) $ the previous method. The output is stored in another hash table with the key being the filling of the tableau $S$.
i7 : higherSpechtPolynomials(p,R)
o7 = HashTable{{0, 1, 2, 3} => HashTable{{0, 1, 2, 3} => x x - x x - x x + x x } }
0 1 1 2 0 3 2 3
{0, 2, 1, 3} => x x - x x - x x + x x
0 2 1 2 0 3 1 3
2 2 2 2 2 2 2 2
{0, 2, 1, 3} => HashTable{{0, 1, 2, 3} => x x x - x x x + x x x - x x x - x x x + x x x - x x x + x x x }
0 1 2 0 1 2 0 1 3 0 2 3 1 2 3 0 2 3 0 1 3 1 2 3
2 2 2 2 2 2 2 2
{0, 2, 1, 3} => x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x
0 1 2 0 1 2 0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3
o7 : HashTable
|
Finally if just a polynomial ring $R$ with $n$ elements is provided then the method calculates all higher Specht polynomials for all partitions $\lambda$ of $n$.
The polynomials are calculated by calling the previous method for every partition of $n$ and storing the values in a new hash table with the key being the partition.
i8 : higherSpechtPolynomials(R)
3 2 2 3 3 2 3 2 2 3 2 3 3 2 2 3 3 2 3 2 2 3 2 3 3 2 3 2 3 2 3 2 3 2 3 2 2 3 2 3 2 3 2 3 2 3 2 3
o8 = HashTable{Partition{1, 1, 1, 1} => HashTable{{0, 1, 2, 3} => HashTable{{0, 1, 2, 3} => x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x }}}
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3 0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3 0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3
2 2 2 2 2 2
Partition{2, 1, 1} => HashTable{{0, 1, 2, 3} => HashTable{{0, 1, 2, 3} => - x x + x x + x x - x x - x x + x x } }
0 2 0 2 0 3 2 3 0 3 2 3
2 2 2 2 2 2
{0, 2, 1, 3} => - x x + x x + x x - x x - x x + x x
0 1 0 1 0 3 1 3 0 3 1 3
2 2 2 2 2 2
{0, 3, 1, 2} => - x x + x x + x x - x x - x x + x x
0 1 0 1 0 2 1 2 0 2 1 2
2 2 2 2 2 2
{0, 2, 1, 3} => HashTable{{0, 1, 2, 3} => - x x x + x x x + x x x - x x x - x x x + x x x }
0 1 2 0 1 2 0 1 3 1 2 3 0 1 3 1 2 3
2 2 2 2 2 2
{0, 2, 1, 3} => - x x x + x x x + x x x - x x x - x x x + x x x
0 1 2 0 1 2 0 2 3 1 2 3 0 2 3 1 2 3
2 2 2 2 2 2
{0, 3, 1, 2} => - x x x + x x x + x x x - x x x - x x x + x x x
0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3
2 2 2 2 2 2 2 2 2 2 2 2
{0, 3, 1, 2} => HashTable{{0, 1, 2, 3} => - x x x + x x x + x x x - x x x - x x x + x x x }
0 1 2 0 1 2 0 1 3 1 2 3 0 1 3 1 2 3
2 2 2 2 2 2 2 2 2 2 2 2
{0, 2, 1, 3} => - x x x + x x x + x x x - x x x - x x x + x x x
0 1 2 0 1 2 0 2 3 1 2 3 0 2 3 1 2 3
2 2 2 2 2 2 2 2 2 2 2 2
{0, 3, 1, 2} => - x x x + x x x + x x x - x x x - x x x + x x x
0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3
Partition{2, 2} => HashTable{{0, 1, 2, 3} => HashTable{{0, 1, 2, 3} => x x - x x - x x + x x } }
0 1 1 2 0 3 2 3
{0, 2, 1, 3} => x x - x x - x x + x x
0 2 1 2 0 3 1 3
2 2 2 2 2 2 2 2
{0, 2, 1, 3} => HashTable{{0, 1, 2, 3} => x x x - x x x + x x x - x x x - x x x + x x x - x x x + x x x }
0 1 2 0 1 2 0 1 3 0 2 3 1 2 3 0 2 3 0 1 3 1 2 3
2 2 2 2 2 2 2 2
{0, 2, 1, 3} => x x x - x x x - x x x + x x x + x x x - x x x - x x x + x x x
0 1 2 0 1 2 0 1 3 0 1 3 0 2 3 1 2 3 0 2 3 1 2 3
Partition{3, 1} => HashTable{{0, 1, 2, 3} => HashTable{{0, 1, 2, 3} => - x + x } }
0 3
{0, 1, 3, 2} => - x + x
0 2
{0, 2, 3, 1} => - x + x
0 1
{0, 1, 3, 2} => HashTable{{0, 1, 2, 3} => - x x - x x + x x + x x }
0 1 0 2 1 3 2 3
{0, 1, 3, 2} => - x x + x x - x x + x x
0 1 1 2 0 3 2 3
{0, 2, 3, 1} => - x x + x x - x x + x x
0 2 1 2 0 3 1 3
{0, 2, 3, 1} => HashTable{{0, 1, 2, 3} => - x x x + x x x }
0 1 2 1 2 3
{0, 1, 3, 2} => - x x x + x x x
0 1 3 1 2 3
{0, 2, 3, 1} => - x x x + x x x
0 2 3 1 2 3
Partition{4} => HashTable{{0, 1, 2, 3} => HashTable{{0, 1, 2, 3} => 1}}
o8 : HashTable
|
The object higherSpechtPolynomials is a method function with options.