# Singular

#### D.7.1.30 irred_secondary_no_molien

Procedure from library `finvar.lib` (see finvar_lib).

Usage:
irred_secondary_no_molien(P,REY[,deg_vec,v]);
P: a 1xn <matrix> with primary invariants, REY: a gxn <matrix> representing the Reynolds operator, deg_vec: an optional <intvec> listing some degrees where no irreducible secondary invariants can be found, v: an optional <int>

Assume:
n is the number of variables of the basering, g the size of the group, REY is the 1st return value of group_reynolds(), reynolds_molien() or the second one of primary_invariants()

Return:
Irreducible secondary invariants of the invariant ring (type <matrix>)

Display:
information if v does not equal 0

Theory:
Irred. secondary invariants are calculated by finding a basis (in terms of monomials) of the basering modulo primary and previously found secondary invariants, mapping those to invariants with the Reynolds operator. Among these images we pick secondary invariants, using Groebner basis techniques.

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=primary_invariants(A,intvec(1,1,0)); // In that example, there are no secondary invariants // in degree 1 or 2. matrix IS=irred_secondary_no_molien(L[1..2],intvec(1,2),1); ==> ==> Searching irred. sec. inv. in degree 3 ==> We have 4 candidates for irred. secondaries ==> We found irr. sec. inv. number 1 in degree 3 ==> We found irr. sec. inv. number 2 in degree 3 ==> Searching irred. sec. inv. in degree 4 ==> We have 1 candidates for irred. secondaries ==> We found irr. sec. inv. number 3 in degree 4 ==> Searching irred. sec. inv. in degree 5 ==> Searching irred. sec. inv. in degree 6 ==> Searching irred. sec. inv. in degree 7 ==> Searching irred. sec. inv. in degree 8 ==> Searching irred. sec. inv. in degree 9 ==> Searching irred. sec. inv. in degree 10 ==> Searching irred. sec. inv. in degree 11 ==> Searching irred. sec. inv. in degree 12 ==> Searching irred. sec. inv. in degree 13 print(IS); ==> x2z-y2z,xyz,x3y-xy3 ```