The Algebra of an Invariant Ring and Algebraic Relations

Let R=K[V]G be the invariant ring of a finite group G over the field K and suppose the degree of G is n. Suppose also that primary invariants { f1, ..., fn } for R have been constructed, together with minimal secondary invariants S = { g1, ..., gm } for R with respect to these primary invariants. Suppose also that the irreducible secondary invariants for R are S = { h1, ..., hr } so that the gi are power products of the hi. We write gi=pi(hi) where the pi are monomials of the indeterminates t1, ..., tr. Then R is generated as an algebra over K by the primary invariants f1, ..., fn and the irreducible secondary invariants h1, ..., hr. Magma allows the construction of a polynomial algebra A with indeterminate names "f1", "f2", etc. corresponding to the primary invariants and indeterminate names "h1", "h2", etc. corresponding to the irreducible secondary invariants. Thus R can be regarded as an homomorphic image of A and finding the algebraic relations between these (algebra) generators of R yields a presentation of R as a quotient of a polynomial algebra. The functions in this section construct the algebra A and the algebraic relations for R. When creating the algebra A, the algebra A is assigned the print names "f1", "f2", "h1", "h2", etc. -- the angle bracket notation or the . operator should be used to assign the variables of A to actual Magma variables.

Algebra(R) : RngInvar -> RngMPol, [ RngMPolElt ]
Given an invariant ring R=K[V]G, return the polynomial algebra A=K[f1, ..., fn, h1, ..., hr] of which R is an homomorphic image. This function also returns a sequence Q giving the secondary invariants in terms of the irreducible secondary invariants as monomials in A. Thus Q[i] is the monomial pi(ti) mentioned in the introduction to this section. Note that the secondary invariant 1 is not an irreducible secondary invariant so no h-variable corresponds to it (the polynomial 1 in A simply corresponds to it).
Relations(R) : RngInvar -> [ RngMPolElt ]
Given an invariant ring R=K[V]G, return a (sorted) sequence L giving the algebraic relations amongst the algebra generators of R as elements of the algebra A corresponding to R. Thus R is isomorphic as an algebra (or ring) to the quotient of A by the ideal of A generated by the relations in L.
RelationIdeal(R) : RngInvar -> RngMPol
Given an invariant ring R=K[V]G, return the ideal of algebraic relations corresponding to R. This is simply the same as taking the ideal generated by the algebra A by the sequence L returned by the function Relations(R).
PrimaryAlgebra(R) : RngInvar -> RngMPol
Given an invariant ring R=K[V]G, return the algebra corresponding to the primary invariants of R as a graded polynomial ring (with the weights corresponding to the degrees of the primary invariants).
PrimaryIdeal(R) : RngInvar -> RngMPol
Given an invariant ring R=K[V]G, return the ideal generated by the primary invariants of R (this is stored in R).

Example RngInvar_Relations (H117E12)

We create the invariant ring R=K[V]G where G is a degree-6 permutation representation of the direct product C3 x C3 of two cyclic groups both of order 3 and K is the rational field. We construct the algebra A and the sequence Q giving the secondary invariants in terms of the irreducible secondary invariants. We then note that the degree-6 secondary invariant is obtained as the product of two degree-3 irreducible secondary invariants. We then construct the list L of algebraic relations in A for R. Thus R is isomorphic to the quotient ring A/<L>. We then construct an homomorphism h from A onto R and check that the relations in L are correct. Finally, we check that the Hilbert series of the (quotient by the) ideal of A generated by L is the same as the Hilbert series of R as expected.
> G := PermutationGroup<6 | (1, 2, 3), (4, 5, 6)>;
> R := InvariantRing(G, RationalField());
> P := PrimaryInvariants(R);
> P;
[
    x1 + x2 + x3,
    x4 + x5 + x6,
    x1^2 + x2^2 + x3^2,
    x4^2 + x5^2 + x6^2,
    x1^3 + x2^3 + x3^3,
    x4^3 + x5^3 + x6^3
]
> S := SecondaryInvariants(R);
> S;
[
    1,
    x1^2*x2 + x1*x3^2 + x2^2*x3,
    x4^2*x5 + x4*x6^2 + x5^2*x6,
    x1^2*x2*x4^2*x5 + x1^2*x2*x4*x6^2 + x1^2*x2*x5^2*x6 +
        x1*x3^2*x4^2*x5 + x1*x3^2*x4*x6^2 + x1*x3^2*x5^2*x6 +
        x2^2*x3*x4^2*x5 + x2^2*x3*x4*x6^2 + x2^2*x3*x5^2*x6
]
> H := IrreducibleSecondaryInvariants(R);
> H;
[
    x1^2*x2 + x1*x3^2 + x2^2*x3,
    x4^2*x5 + x4*x6^2 + x5^2*x6
]
> A, Q := Algebra(R);
> A;
Graded Polynomial ring of rank 8 over Rational Field
Lexicographical Order
Variables: f1, f2, f3, f4, f5, f6, h1, h2
Variable weights: 1 1 2 2 3 3 3 3
> Q;
[
    1,
    h1,
    h2,
    h1*h2
]
> // Thus S[4] must be H[1]*H[2]:
> S[4];
x1^2*x2*x4^2*x5 + x1^2*x2*x4*x6^2 + x1^2*x2*x5^2*x6 +
    x1*x3^2*x4^2*x5 + x1*x3^2*x4*x6^2 + x1*x3^2*x5^2*x6 +
    x2^2*x3*x4^2*x5 + x2^2*x3*x4*x6^2 + x2^2*x3*x5^2*x6
> H[1];
x1^2*x2 + x1*x3^2 + x2^2*x3
> H[2];
x4^2*x5 + x4*x6^2 + x5^2*x6
> H[1]*H[2] eq S[4];
true
> L := Relations(R);
> L;
[
    -1/24*f1^6 + 3/8*f1^4*f3 - 1/3*f1^3*f5 - 9/8*f1^2*f3^2 +
        2*f1*f3*f5 + f1*f3*h1 + 1/8*f3^3 - f5^2 - f5*h1 - h1^2,
    -1/24*f2^6 + 3/8*f2^4*f4 - 1/3*f2^3*f6 - 9/8*f2^2*f4^2 +
        2*f2*f4*f6 + f2*f4*h2 + 1/8*f4^3 - f6^2 - f6*h2 - h2^2
]
> // Construct homomorphism h from A onto (polynomial ring of) R:
> h := hom<A -> PolynomialRing(R) | P cat H>;
> // Check images of L under h are zero so that elements of L are relations:
> h(L);
[
    0,
    0
]
> // Create relation ideal and check its Hilbert series equals that of R:
> I := RelationIdeal(R);
> I;
Ideal of Graded Polynomial ring of rank 8 over Rational Field
Lexicographical Order
Variables: f1, f2, f3, f4, f5, f6, h1, h2
Variable weights: 1 1 2 2 3 3 3 3
Basis:
[
    f1^6 - 9*f1^4*f3 + 8*f1^3*f5 + 27*f1^2*f3^2 - 48*f1*f3*f5 -
        24*f1*f3*h1 - 3*f3^3 + 24*f5^2 + 24*f5*h1 + 24*h1^2,
    f2^6 - 9*f2^4*f4 + 8*f2^3*f6 + 27*f2^2*f4^2 - 48*f2*f4*f6 -
        24*f2*f4*h2 - 3*f4^3 + 24*f6^2 + 24*f6*h2 + 24*h2^2
]
> HilbertSeries(I);
(t^4 - 2*t^3 + 3*t^2 - 2*t + 1)/(t^10 - 4*t^9 + 6*t^8 - 6*t^7 +
    9*t^6 - 12*t^5 + 9*t^4 - 6*t^3 + 6*t^2 - 4*t + 1)
> HilbertSeries(I) eq HilbertSeries(R);
true
V2.28, 13 July 2023