|  |  D.4.18.16 primdecMon Procedure from librarymonomialideal.lib(see  monomialideal_lib).
 
Example:Usage:
primdecMon (I[,alg]); I ideal, alg string
Return:
list, the components in a minimal primary decomposition of I.
(returns -1 if I is not a monomial ideal).
Assume:
I is a monomial ideal of the basering k[x(1)..x(n)].
Note:
This procedure returns a minimal primary decomposition of I.
One may call the procedure with different algorithms using
the optional argument 'alg':
- the direct method for a primary decomposition following
Vasconcelos' book (alg=vp),
 - from the irreducible decomposition obtained via the direct
method following Vasconcelos' book (alg=vi),
 - from the irreducible decomposition obtained via the
 Alexander dual and using doble dual (alg=add),
 - from the irreducible decomposition obtained via the
 Alexander dual and quotients following E. Miller (alg=ad),
- from the irreducible decomposition obtained
 via ........ (alg=for),
 - from the irreducible decomposition obtained via the Scarf
complex following Milowski (alg=mil),
 - from the irreducible decomposition obtained using the label
algorithm of Roune (alg=lr),
 - from the irreducible decomposition obtained using the
algorithm of Gao-Zhu (alg=gz),
 - from the irreducible decomposition obtained using the slice
algorithm of Roune (alg=sr).
 
 |  | LIB "monomialideal.lib";
ring R = 0,(w,x,y,z),Dp;
ideal I = w^3*x*y,w*x*y*z,x^2*y^2*z^2,x^2*z^4,y^3*z;
// Vasconcelos para primaria
primdecMon(I,"vp");
==> [1]:
==>    _[1]=x2
==>    _[2]=y3
==>    _[3]=wxy
==>    _[4]=w3
==> [2]:
==>    _[1]=xy
==>    _[2]=x2
==>    _[3]=y3
==> [3]:
==>    _[1]=z
==>    _[2]=x
==> [4]:
==>    _[1]=y3
==>    _[2]=wyz
==>    _[3]=w3
==>    _[4]=z4
==>    _[5]=y2z2
==> [5]:
==>    _[1]=y
==>    _[2]=z4
==> [6]:
==>    _[1]=z
==>    _[2]=w3
// Alexander dual
primdecMon(I,"add");
==> [1]:
==>    _[1]=y
==>    _[2]=z4
==> [2]:
==>    _[1]=xy
==>    _[2]=x2
==>    _[3]=y3
==> [3]:
==>    _[1]=w3
==>    _[2]=z
==> [4]:
==>    _[1]=w
==>    _[2]=x2
==>    _[3]=y3
==> [5]:
==>    _[1]=x
==>    _[2]=z
==> [6]:
==>    _[1]=w
==>    _[2]=y3
==>    _[3]=z4
==>    _[4]=y2z2
// label algorithm
primdecMon(I,"lr");
==> [1]:
==>    _[1]=w
==>    _[2]=x2
==>    _[3]=y3
==> [2]:
==>    _[1]=w
==>    _[2]=y3
==>    _[3]=z4
==>    _[4]=y2z2
==> [3]:
==>    _[1]=w3
==>    _[2]=z
==> [4]:
==>    _[1]=x
==>    _[2]=z
==> [5]:
==>    _[1]=xy
==>    _[2]=x2
==>    _[3]=y3
==> [6]:
==>    _[1]=y
==>    _[2]=z4
//slice algorithm
primdecMon(I,"sr");
==> [1]:
==>    _[1]=w
==>    _[2]=x2
==>    _[3]=y3
==> [2]:
==>    _[1]=w
==>    _[2]=y3
==>    _[3]=z4
==>    _[4]=y2z2
==> [3]:
==>    _[1]=w3
==>    _[2]=z
==> [4]:
==>    _[1]=x
==>    _[2]=z
==> [5]:
==>    _[1]=xy
==>    _[2]=x2
==>    _[3]=y3
==> [6]:
==>    _[1]=y
==>    _[2]=z4
 | 
 |