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
]