Let R=K[V]^G be the invariant ring of the group G over the field K and suppose the degree of G is n. Suppose also that primary invariants { f_1, ..., f_n } for R have been constructed, together with minimal secondary invariants S = { g_1, ..., g_m } 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[f_1, ..., f_n] 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[t_1, ..., t_n] (with the weighted degree of the variable t_i defined to be the degree of f_i) 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 g_i (and with the weighted degree of column i equal to the degree of g_i). The algebra A' is isomorphic to A under the map t_i |-> f_i, and the module M is isomorphic to R (considered as a module) under the map M.i |-> g_i (extended by the isomorphism from A' onto A). (See the chapter on modules over K[x_1, ..., x_n] 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 sum_(i=1)(k) a_i g_i with a_i in A in terms of the primary and secondary invariants. This representation is also unique up to the relations given by the syzygies of the g_i.
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.
Module(R) : RngInvar -> ModMPol, Map
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