
D.7.1.3 primary_invariants
Procedure from library finvar.lib (see finvar_lib).
 Usage:
 primary_invariants(G1,G2,...[,flags]);
G1,G2,...: <matrices> generating a finite matrix group, flags: an
optional <intvec> with three entries, if the first one equals 0 (also
the default), the programme attempts to compute the Molien series and
Reynolds operator, if it equals 1, the programme is told that the
Molien series should not be computed, if it equals 1 characteristic 0
is simulated, i.e. the Molien series is computed as if the base field
were characteristic 0 (the user must choose a field of large prime
characteristic, e.g. 32003) and if the first one is anything else, it
means that the characteristic of the base field divides the group
order, the second component should give the size of intervals between
canceling common factors in the expansion of the Molien series, 0 (the
default) means only once after generating all terms, in prime
characteristic also a negative number can be given to indicate that
common factors should always be canceled when the expansion is simple
(the root of the extension field occurs not among the coefficients)
 Display:
 information about the various stages of the programme if the third
flag does not equal 0
 Return:
 primary invariants (type <matrix>) of the invariant ring and if
computable Reynolds operator (type <matrix>) and Molien series (type
<matrix>) or ring name (type string) where the Molien series
can be found in the char p case; if the first flag is 1 and we are in
the nonmodular case then an <intvec> is returned giving some of the
degrees where no nontrivial homogeneous invariants can be found
 Theory:
 Bases of homogeneous invariants are generated successively and those
are chosen as primary invariants that lower the dimension of the ideal
generated by the previously found invariants (see paper "Generating a
Noetherian Normalization of the Invariant Ring of a Finite Group" by
Decker, Heydtmann, Schreyer (1998)).
Example:
 LIB "finvar.lib";
ring R=0,(x,y,z),dp;
matrix A[3][3]=0,1,0,1,0,0,0,0,1;
list L=primary_invariants(A);
print(L[1]);
==> z2,x2+y2,x2y2

