By default, invariantRing uses an optimising algorithm which tests for the existence of an homogeneous system of parameters (hsop) (f1,...,fn) with positive degrees corresponding to (d1,...,dn) in ZZn. If it is known that an hsop exists for a certain collection of degrees, this can be assigned, as a List, to the optional argument DegreeVector. The hsop output by invariantRing will then have degrees corresponding to this List. If however no such hsop exists, invariantRing outputs an error message.
DegreeVector is also an optional argument for the method primaryInvariants; see primaryInvariants(..., DegreeVector => ...) for more information.
The example below computes a set of primary and secondary invariants for the invariant ring of the symmetric group S3acting on QQ[x,y,z] by permuting the variables. The optional argument DegreeVector is set to {2,3,4}, so that invariantRing will find primary invariants of degrees 2,3 and 4.
i1 : A=matrix{{0,1,0},{0,0,1},{1,0,0}}; 3 3 o1 : Matrix ZZ <--- ZZ |
i2 : B=matrix{{0,1,0},{1,0,0},{0,0,1}}; 3 3 o2 : Matrix ZZ <--- ZZ |
i3 : S3=generateGroup({A,B},QQ) o3 = {| 1 0 0 |, | 0 0 1 |, | 0 0 1 |, | 1 0 0 |, | 0 1 0 |, | 0 1 0 |} | 0 1 0 | | 0 1 0 | | 1 0 0 | | 0 0 1 | | 1 0 0 | | 0 0 1 | | 0 0 1 | | 1 0 0 | | 0 1 0 | | 0 1 0 | | 0 0 1 | | 1 0 0 | o3 : List |
i4 : invariantRing(QQ[x,y,z],S3,DegreeVector=>{2,3,4}) 2 2 2 2 2 2 2 2 2 o4 = ({x + y + z , x*y*z, x y + x z + y z }, {1, x + y + z, x*y + x*z + ------------------------------------------------------------------------ 3 3 3 y*z, x + y + z }) o4 : Sequence |