
D.7.1.4 primary_invariants_random
Procedure from library finvar.lib (see finvar_lib).
 Usage:
 primary_invariants_random(G1,G2,...,r[,flags]);
G1,G2,...: <matrices> generating a finite matrix group, r: an <int>
where r to r is the range of coefficients of the random
combinations of bases elements, 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 does not occur 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>), 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 random
linear combinations are chosen as primary invariants that lower the
dimension of the ideal generated by the previously found invariants
(see "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_random(A,1);
print(L[1]);
==> z2,x2+y2,x4+y4z4

