# Singular

#### D.4.14.15 irreddecMon

Procedure from library `monomialideal.lib` (see monomialideal_lib).

Usage:
irreddecMon (I[,alg]); I ideal, alg string.

Return:
list, the irreducible components of the monomial ideal 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 procesure returns the irreducible decomposition of I. One may call the procedure with different algorithms using the optional argument 'alg':
- the direct method following Vasconcelos' book (alg=vas) - via the Alexander dual and using doble dual (alg=add), - via the Alexander dual and quotients following E. Miller (alg=ad),
- the formula of irreducible components (alg=for),
- via the Scarf complex following Milowski (alg=mil),
- using the label algorihtm of Roune (alg=lr),
- using the algorithm of Gao-Zhu (alg=gz).
- using the slice algorithm of Roune (alg=sr).

Example:
 ```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 irreddecMon (I,"vas"); ==> [1]: ==> _[1]=y ==> _[2]=x2 ==> [2]: ==> _[1]=w ==> _[2]=z2 ==> _[3]=y3 ==> [3]: ==> _[1]=y ==> _[2]=z4 ==> [4]: ==> _[1]=w ==> _[2]=x2 ==> _[3]=y3 ==> [5]: ==> _[1]=w ==> _[2]=y2 ==> _[3]=z4 ==> [6]: ==> _[1]=z ==> _[2]=w3 ==> [7]: ==> _[1]=z ==> _[2]=x ==> [8]: ==> _[1]=x ==> _[2]=y3 // Alexander Dual irreddecMon (I,"ad"); ==> [1]: ==> _[1]=w ==> _[2]=y3 ==> _[3]=z2 ==> [2]: ==> _[1]=w ==> _[2]=y2 ==> _[3]=z4 ==> [3]: ==> _[1]=x ==> _[2]=z ==> [4]: ==> _[1]=w ==> _[2]=x2 ==> _[3]=y3 ==> [5]: ==> _[1]=w3 ==> _[2]=z ==> [6]: ==> _[1]=x2 ==> _[2]=y ==> [7]: ==> _[1]=y ==> _[2]=z4 ==> [8]: ==> _[1]=x ==> _[2]=y3 // Scarf Complex irreddecMon (I,"mil"); ==> [1]: ==> _[1]=y ==> _[2]=z4 ==> [2]: ==> _[1]=w3 ==> _[2]=z ==> [3]: ==> _[1]=w ==> _[2]=y3 ==> _[3]=z2 ==> [4]: ==> _[1]=w ==> _[2]=y2 ==> _[3]=z4 ==> [5]: ==> _[1]=w ==> _[2]=x2 ==> _[3]=y3 ==> [6]: ==> _[1]=x ==> _[2]=y3 ==> [7]: ==> _[1]=x2 ==> _[2]=y ==> [8]: ==> _[1]=x ==> _[2]=z // slice algorithm irreddecMon(I,"sr"); ==> [1]: ==> _[1]=y ==> _[2]=z4 ==> [2]: ==> _[1]=x2 ==> _[2]=y ==> [3]: ==> _[1]=x ==> _[2]=z ==> [4]: ==> _[1]=x ==> _[2]=y3 ==> [5]: ==> _[1]=w3 ==> _[2]=z ==> [6]: ==> _[1]=w ==> _[2]=y3 ==> _[3]=z2 ==> [7]: ==> _[1]=w ==> _[2]=y2 ==> _[3]=z4 ==> [8]: ==> _[1]=w ==> _[2]=x2 ==> _[3]=y3 ```