Procedure from library finvar.lib (see finvar_lib).
Usage:
primary_charp(REY,ringname[,v]);
REY: a <matrix> representing the Reynolds operator, ringname: a
<string> giving the name of a ring where the Molien series is stored,
v: an optional <int>
Assume:
REY is the first return value of group_reynolds or reynolds_molien and
ringname gives the name of a ring of characteristic 0 that has been
created by molien or reynolds_molien
Display:
information about the various stages of the programme if v does not
equal 0
Return:
primary invariants (type <matrix>) of the invariant ring
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=3,(x,y,z),dp;
matrix A[3][3]=0,1,0,-1,0,0,0,0,-1;
list L=group_reynolds(A);
string newring="alskdfj";
molien(L[2..size(L)],newring);
matrix P=primary_charp(L[1],newring);
kill Finvar::`newring`;
print(P);
==> z2,x2+y2,x2y2