# Singular          #### D.14.2.1 monomialabortstd

Procedure from library `customstd.lib` (see customstd_lib).

Usage:
monomialabortstd(I); I ideal

Purpose:
computes a standard basis and aborts if a monomial generator is found. Returns all standard basis elements that have been computed.

Note:
Due to sequencing of the standard basis computation:
- If aborted, there is no guarantee that the monomial is the final standard bases element
- If ideal has a monomial generator, there is no guarantee that the computation aborts because of it

Example:
 ```LIB "customstd.lib"; LIB "poly.lib"; ring r = 0,(x,y,z,u,v),dp; // yields normal standard basis since no monomial is found ideal I = homog(cyclic(4),v); monomialabortstd(I); ==> _=x+y+z+u ==> _=y2+2yu+u2 ==> _=yz2+z2u-yu2-u3 ==> _=yzu2+z2u2-yu3+zu3-u4-v4 ==> _=yu4+u5-yv4-uv4 ==> _=z3u2+z2u3-zv4-uv4 ==> _=z2u4+yzv4-yuv4+zuv4-2u2v4 // will not start standard basis computation in the first place, // as one of the generators is a monomial I = v,homog(cyclic(4),v); monomialabortstd(I); ==> _=v // aborts standard basis computation when it encounters monomial u // note that u is not the final element in the standard basis!!! I = x+y+z,homog(cyclic(4),v); monomialabortstd(I); ==> _=u ==> _=x+y+z+u // aborts standard basis computation when it encounters monomial z2 // note that it is not the monomial generator x which lead to the abortion!!! I = x,homog(cyclic(4),v); monomialabortstd(I); ==> _=y+z+u ==> _=x+y+z+u ==> _=z2 ```

### Misc 