Home Online Manual
Back: secondary_char0
Forward: secondary_charp
Up: finvar_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.7.1.27 irred_secondary_char0

Procedure from library finvar.lib (see finvar_lib).

P: a 1xn <matrix> with homogeneous primary invariants, where n is the number of variables of the basering;
REY: a gxn <matrix> representing the Reynolds operator, where g the size of the corresponding group;
M: a 1x2 <matrix> giving numerator and denominator of the Molien series;
v: an optional <int>;
"PP": if this string occurs as (optional) parameter, then in all degrees power products of irr. sec. inv. will be computed.

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

We are in the non-modular case, i.e., the characteristic of the basering does not divide the group order;
REY is the 1st return value of group_reynolds(), reynolds_molien() or the second one of primary_invariants();
M is the return value of molien() or the second one of reynolds_molien() or the third one of primary_invariants()

Information on the progress of computations if v does not equal 0

The secondary invariants are calculated by finding a basis (in terms of monomials) of the basering modulo the primary invariants, mapping those to invariants with the Reynolds operator. Among these images or their power products we pick secondary invariants using Groebner basis techniques (see S. King: Fast Computation of Secondary Invariants). The size of this set can be read off from the Molien series. Here, only irreducible secondary invariants are explicitly computed, which saves time and memory.
Moreover, if no irr. sec. inv. in degree d-1 have been found and unless the last optional paramter "PP" is used, a Groebner basis of primary invariants and irreducible secondary invariants up to degree d-2 is computed, which allows to detect irr. sec. inv. in degree d without computing power products.
There are three internal parameters "pieces", "MonStep" and "IrrSwitch". The default values of the parameters should be fine in most cases. However, in some cases, different values may provide a better balance of memory consumption (smaller values) and speed (bigger values).

LIB "finvar.lib";
ring r= 0, (a,b,c,d,e,f),dp;
matrix A1[6][6] = 0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0;
matrix A2[6][6] = 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0;
list L = primary_invariants(A1,A2);
matrix IS = irred_secondary_char0(L[1],L[2],L[3],0);
==> IS[1,1]=ab+cd+ef
==> IS[1,2]=a2d+ad2+b2e+be2+c2f+cf2
==> IS[1,3]=ac2+b2d+a2e+ce2+d2f+bf2
==> IS[1,4]=b2c+bc2+d2e+de2+a2f+af2
==> IS[1,5]=a2c+bd2+c2e+ae2+b2f+df2
==> IS[1,6]=a2cd+abd2+abe2+b2ef+c2ef+cdf2
==> IS[1,7]=ab2d+ac2d+a2be+cd2f+ce2f+bef2
==> IS[1,8]=a2bd+acd2+ab2e+c2df+be2f+cef2
==> IS[1,9]=a3d+ad3+b3e+be3+c3f+cf3
See also: secondary_char0.