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. (These secondary invariants may possess non-trivial module syzygies.) Then R can be considered as a module over the algebra A = K[f1, ..., fn] with the minimal (module) generating set S.
To compute with this module structure of R easily, Magma automatically constructs the graded multivariate polynomial algebra A' = K[t1, ..., tn] (with the weighted degree of the variable ti defined to be the degree of fi) which is isomorphic to A, and then constructs the graded module M = A'm/Q over A' with the quotient relations Q given by the syzygies of the gi (and with the weighted degree of column i equal to the degree of gi). The algebra A' is isomorphic to A under the map ti |-> fi, and the module M is isomorphic to R (considered as a module) under the map M.i |-> gi (extended by the isomorphism from A' onto A). (See the chapter on modules over K[x1, ..., xn] for details on how to compute with the module M and an explanation of quotient relations, the unit vectors M.i, etc.) Once the module M is created, together with the isomorphism f: R -> M, one can apply f to a general element h of R to obtain the element of M corresponding to h. This effectively yields a representation of h as a sum ∑i=1(k) ai gi with ai ∈A in terms of the primary and secondary invariants. This representation is also unique up to the relations given by the syzygies of the gi.
When creating the module M, the coefficient ring A' of M is assigned the print names "t1", "t2", etc. -- the angle bracket notation or the . operator should be used to assign the variables of A' to actual Magma variables.
The module M isomorphic to R=K[V]G, together with the isomorphism f: R -> M.
> K := GF(3); > G := MatrixGroup<4,K | [1,0,0,0, 1,1,0,0, 0,1,1,0, 0,0,1,1]>; > R := InvariantRing(G); > P<x1,x2,x3,x4> := PolynomialRing(R); > p := PrimaryInvariants(R); > s := SecondaryInvariants(R); > [TotalDegree(f): f in p]; [ 1, 2, 3, 9 ] > [TotalDegree(f): f in s]; [ 0, 3, 4, 5, 6, 7, 8, 9 ] > M, f := Module(R); > M; Full Quotient Module of degree 8 TOP Order Column weights: 0 3 4 5 6 7 8 9 Coefficient ring: Graded Polynomial ring of rank 4 over GF(3) Lexicographical Order Variables: t1, t2, t3, t4 Variable weights: 1 2 3 9 Quotient Relations: [ t1[7] + 2*t2[6] + t3[5], t1[4] + 2*t2[3] + t3[2] ] > h := x1^5*x2 + 2*x1^3*x3^3 + 2*x2^6; > h; x1^5*x2 + 2*x1^3*x3^3 + 2*x2^6 > m := f(h); > m; t1^4*t2[1] + t1^3[2] + t2^3[1] > // Evaluate in the primaries and secondaries: > p[1]^4*p[2]*s[1] + p[1]^3*s[2] + p[2]^3*s[1]; x1^5*x2 + 2*x1^3*x3^3 + 2*x2^6