Construction of Invariants of Specified Degree

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 Rd over K.

There are two ways of explicitly constructing homogeneous invariants in R of degree d: the Reynolds operator method and the linear algebra method. Both methods are described in detail in [KS97].

The Reynolds operator method only works fro finite groups 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 Rd can be constructed. If G is a permutation group, a simplified version of the Reynolds operator can always be used which is independent of the field K (and thus whether we are in the modular case or not).

The linear algebra method works in both the modular and non-modular cases and, with appropriate modifications, also for linear algebraic groups. It simply finds a basis for Rd in one step -- it is not possible to find a single invariant alone by this method.

Magma provides the function InvariantsOfDegree to automatically compute a basis of Rd by a default appropriate method -- the method can also 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 Rd: in such a case, only k linearly independent invariants are computed. See also the functions MonomialsOfDegree and MonomialsOfWeightedDegree in the Ideal Theory chapter.

The following sections Construction of G-modules through Properties of Invariant Rings all deal with invariant rings of finite groups.

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.)
InvariantsOfDegree(R, d) : RngInvar, RngIntElt -> [ RngMPolElt ]
InvariantsOfDegree(G, d) : GrpMat, RngIntElt -> [ RngMPolElt ]
InvariantsOfDegree(G, K, d) : GrpPerm, Fld, RngIntElt -> [ RngMPolElt ]
InvariantsOfDegree(G, P, d) : GrpMat, RngMPol, RngIntElt -> [ RngMPolElt ]
InvariantsOfDegree(G, P, d) : GrpPerm, RngMPol, RngIntElt -> [ RngMPolElt ]
    Invariants: MonStgElt               Default: "Both"
Construct a K-basis of the space Rd 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".
InvariantsOfDegree(R, d, k) : RngInvar, RngIntElt, RngIntElt -> [ RngMPolElt ]
InvariantsOfDegree(G, d, k) : GrpMat, RngIntElt, RngIntElt -> [ RngMPolElt ]
InvariantsOfDegree(G, K, d, k) : GrpPerm, Fld, RngIntElt, RngIntElt -> [ RngMPolElt ]
InvariantsOfDegree(G, P, d, k) : GrpPerm, RngMPol, RngIntElt, RngIntElt -> [ RngMPolElt ]
    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, where k must be greater than or equal to 1 and less than or equal to the dimension of the space Rd. 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.

Example RngInvar_InvariantsOfDegree (H117E2)

We demonstrate elementary uses of ReynoldsOperator and InvariantsOfDegree.
> 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
]
SetAllInvariantsOfDegree(R, d, Q) : RngInvar, RngIntElt, [ RngMPolElt ] ->
(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.

Example RngInvar_InvariantsOfDegree (H117E3)

We demonstrate a simple use of SetAllInvariantsOfDegree.
> 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
]
V2.28, 13 July 2023