PrintDegreePolynomial takes a Boolean value and is set to false by default. If it is set to true, then secondaryInvariants will print a polynomial in the variable T. This polynomial encodes the degrees of the secondary invariants (given by the exponents of T appearing in it) and the number of secondary invariants of a given degree (the coefficient of the corresponding term in the polynomial). Specifically, if secondaryInvariants takes as input a set of primary invariants of degrees d1,...,dn for an invariant ring SG of a finite group G, and H(SG,T)denotes the Molien (Hilbert) series of SG, then secondaryInvariants will compute the polynomial H(SG,T)*(1-Td1)*...*(1-Tdn).
The example below computes the secondary invariants for the dihedral group with 6 elements, given a set of primary invariants P. The optional argument PrintDegreePolynomial is set to true in order to see which degrees the secondary invariants should have.
i1 : K=toField(QQ[a]/(a^2+a+1)); |
i2 : R=K[x,y]; |
i3 : A=matrix{{a,0},{0,a^2}}; 2 2 o3 : Matrix K <--- K |
i4 : B=sub(matrix{{0,1},{1,0}},K); 2 2 o4 : Matrix K <--- K |
i5 : D6=finiteAction({A,B},R) o5 = R <- {| a 0 |, | 0 1 |} | 0 -a-1 | | 1 0 | o5 : FiniteGroupAction |
i6 : P={x^3+y^3,-(x^3-y^3)^2}; |
i7 : secondaryInvariants(P,D6,PrintDegreePolynomial=>true) 4 2 t + t + 1 2 2 o7 = {1, x*y, x y } o7 : List |