Let R=K[V]^G be the invariant ring of the group G over the field K.
Let d >= 0 be a fixed integer. The homogeneous invariants in R of degree
d form a vector space R_d over K.
There are two ways of explicitly constructing homogeneous invariants in R
of degree d: the linear algebra method and the
Reynolds operator method. Both methods are described in detail
in the Magma Invariant Theory paper. The Reynolds operator method only works in the
non-modular case. It takes a monomial of degree d and yields either
the zero polynomial or a non-zero invariant of degree d. By applying
it to several different monomials, a complete basis of R_d can be
constructed. The linear algebra method works in both the modular and
non-modular cases. It simply finds a basis for R_d in one step --
it is not possible to find a single invariant alone by this method.
If G is permutation group, a simplified version of the Reynolds operator
can always be used which is independent of the field K.
Magma provides the function InvariantsOfDegree to automatically
compute a basis of R_d by the best appropriate method -- the method
can be selected by a parameter.
The function InvariantsOfDegree can also be given a positive integer
k which is less than or equal to the dimension of R_d: in such a case,
only k linearly independent invariants are computed.
See also the functions MonomialsOfDegree and
MonomialsOfWeightedDegree in the multivariate polynomial rings chapter.
ReynoldsOperator(f, G) : RngMPolElt, GrpMat -> RngMPolElt
Given a polynomial f and a matrix group G such that G can act on f, return the application of the Reynolds operator of G to f. (f need not be a monomial but may be a non-homogeneous polynomial.)
Invariants: MonStgElt Default: "Both"
Construct a K-basis of the space R_d of the homogeneous invariants of degree d in the invariant ring R=K[V]^G of the group G over the field K as a sequence of polynomials. Either the invariant ring R, the group G (if a matrix group), or the group G (if a permutation group) together with the field K may be passed. A specific polynomial ring P compatible with G and K may be passed so that the returned invariants lie in P. The parameter Invariants may be supplied to select the method of the construction of the invariants: "Reynolds" (use the Reynolds operator), "Linear" (use the linear algebra method), or "both" (use an appropriate combination of both methods). The default is "both".
Invariants: MonStgElt Default: "Both"
Construct k linearly independent homogeneous invariants of degree d in the invariant ring R=K[V]^G of the group G over the field K as a sequence of polynomials. k must be greater than or equal to 1 and less than or equal to the dimension of the space R_d. Either the invariant ring R, the group G (if a matrix group), or the group G (if a permutation group) together with the field K may be passed. A specific polynomial ring P compatible with G and K may be passed so that the returned invariants lie in P. The parameter Invariants may be supplied to select the method of the construction of the invariants -- see the last function.
> K<z> := CyclotomicField(5); > w := -z^3 - z^2; > G := MatrixGroup<3,K | > [1,0,-w, 0,0,-1, 0,1,-w], > [-1,-1,w, -w,0,w, -w,0,1]>; > P<x1,x2,x3> := PolynomialRing(K, 3); > time ReynoldsOperator(x1^4, G); (-z^3 - z^2 + 1)*x1^4 + (12/5*z^3 + 12/5*z^2 - 4/5)*x1^3*x2 + (12/5*z^3 + 12/5*z^2 - 4/5)*x1^3*x3 + (-14/5*z^3 - 14/5*z^2 + 14/5)*x1^2*x2^2 + (4/5*z^3 + 4/5*z^2 + 4/5)*x1^2*x2*x3 + (-14/5*z^3 - 14/5*z^2 + 14/5)*x1^2*x3^2 + (12/5*z^3 + 12/5*z^2 - 4/5)*x1*x2^3 + (4/5*z^3 + 4/5*z^2 + 4/5)*x1*x2^2*x3 + (4/5*z^3 + 4/5*z^2 + 4/5)*x1*x2*x3^2 + (12/5*z^3 + 12/5*z^2 - 4/5)*x1*x3^3 + (-z^3 - z^2 + 1)*x2^4 + (12/5*z^3 + 12/5*z^2 - 4/5)*x2^3*x3 + (-14/5*z^3 - 14/5*z^2 + 14/5)*x2^2*x3^2 + (12/5*z^3 + 12/5*z^2 - 4/5)*x2*x3^3 + (-z^3 - z^2 + 1)*x3^4 Time: 0.090 > time I20_1 := InvariantsOfDegree(G, 20, 1); 0.259 > time I20 := InvariantsOfDegree(G, 20); 3.589 > [LeadingMonomial(f): f in I20]; [ x1^20, x1^18*x2^2, x1^16*x2^4, x1^15*x2^5, x1^14*x2^6, x1^13*x2^7, x1^12*x2^8 ] > G := CyclicGroup(4); > K := GF(2); > InvariantsOfDegree(G, K, 4); [ x1^4 + x2^4 + x3^4 + x4^4, x1^3*x2 + x1*x4^3 + x2^3*x3 + x3^3*x4, x1^3*x3 + x1*x3^3 + x2^3*x4 + x2*x4^3, x1^3*x4 + x1*x2^3 + x2*x3^3 + x3*x4^3, x1^2*x2^2 + x1^2*x4^2 + x2^2*x3^2 + x3^2*x4^2, x1^2*x2*x3 + x1*x2*x4^2 + x1*x3^2*x4 + x2^2*x3*x4, x1^2*x2*x4 + x1*x2^2*x3 + x1*x3*x4^2 + x2*x3^2*x4, x1^2*x3^2 + x2^2*x4^2, x1^2*x3*x4 + x1*x2^2*x4 + x1*x2*x3^2 + x2*x3*x4^2, x1*x2*x3*x4 ]
(Procedure.) Given an invariant ring R=K[V]^G, an integer d >= 0, and a sequence Q consisting of k degree-d homogeneous invariants of G, set the internal list of all linearly-independent homogeneous invariants of degree d of R to be Q. Thus the elements of Q must describe a basis of the space of all homogeneous invariants of degree d of R. If the Hilbert Series of R is known, it will be used to check that the length of Q (the dimension of the basis) is correct.
> R := InvariantRing(CyclicGroup(4), GF(2)); > P<x1,x2,x3,x4> := PolynomialRing(R); > L := [ > x1^2 + x2^2 + x3^2 + x4^2, > x1*x2 + x1*x4 + x2*x3 + x3*x4, > x1*x3 + x2*x4 > ]; > SetAllInvariantsOfDegree(R, 2, L); > InvariantsOfDegree(R, 2); [ x1^2 + x2^2 + x3^2 + x4^2, x1*x2 + x1*x4 + x2*x3 + x3*x4, x1*x3 + x2*x4 ] > PrimaryInvariants(R); [ x1 + x2 + x3 + x4, x1*x2 + x1*x4 + x2*x3 + x3*x4, x1*x3 + x2*x4, x1*x2*x3*x4 ]