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.