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
|