Let G be a semisimple algebraic group which acts on a polynomial ring R compatibly with the grading. Let T⊆G be a maximal torus and assume the variables in R are weight vectors for the action of T.
Suppose M is a finitely generated module over R which is stable under the action of G. We assume that M was input in Macaulay2 using a specific presentation φ: E→F, where E and F are graded free R-modules of finite rank. Moreover assume the coordinate basis of F is a homogeneous basis of weight vectors for the action of T and the weight of the j-th basis vector is wj.
Use this function to obtain the decomposition of a graded component of M. The input consists of three parameter: the module M, the (multi)degree of the graded component, and the list of weights {wj}.
The output is a tally whose keys are the highest weights of certain irreducible representations and whose values are the multiplicities of those representations.
In the following example, the polynomial ring R is the symmetric algebra over C2 ⊗C4, with the natural action of G=SL2 (C) ×SL4 (C). The map φ is the unique (up to scalars) equivariant map C4 ⊗R(-1) →(C2)* ⊗R. If {f1,f2} and {e1,e2,e3,e4} are the coordinate bases of C2 and C4 respectively, then the matrix of φ with respect to the bases {f1*,f2*} and {e1,e2,e3,e4} is a generic matrix of indeterminates.
i1 : R=QQ[x_(1,1)..x_(4,2)]; |
i2 : D=dynkinType{{"A",1},{"A",3}}; |
i3 : U={{1,1,0,0},{-1,1,0,0},{1,-1,1,0},{-1,-1,1,0},{1,0,-1,1},{-1,0,-1,1},{1,0,0,-1},{-1,0,0,-1}}; |
i4 : setWeights(R,D,U); |
i5 : G=genericMatrix(R,2,4); 2 4 o5 : Matrix R <--- R |
i6 : M=coker G o6 = cokernel | x_(1,1) x_(2,1) x_(3,1) x_(4,1) | | x_(1,2) x_(2,2) x_(3,2) x_(4,2) | 2 o6 : R-module, quotient of R |
i7 : highestWeightsDecomposition(M,{2},{{-1,0,0,0},{1,0,0,0}}) o7 = Tally{{3, 2, 0, 0} => 1} o7 : Tally |
This shows that the component of M of degree 2 is the representation S3 C3 ⊗S2 C4. Here Sλ denotes the Schur functor corresponding to the partition λ.
When the polynomial ring is ℤ-graded the degree can be given as an integer instead of a list. Moreover, in the ℤ-graded case, one can decompose a range of degrees all at once as illustrated below.
i8 : highestWeightsDecomposition(M,2,{{-1,0,0,0},{1,0,0,0}}) o8 = Tally{{3, 2, 0, 0} => 1} o8 : Tally |
i9 : highestWeightsDecomposition(M,0,4,{{-1,0,0,0},{1,0,0,0}}) o9 = HashTable{0 => Tally{{1, 0, 0, 0} => 1}} 1 => Tally{{2, 1, 0, 0} => 1} 2 => Tally{{3, 2, 0, 0} => 1} 3 => Tally{{4, 3, 0, 0} => 1} 4 => Tally{{5, 4, 0, 0} => 1} o9 : HashTable |