# Singular

##### 7.7.7.0. monomialBasis
Procedure from library `fpadim.lib` (see fpadim_lib).

Usage:
monomialBasis(d, donly, J); d, donly integers, J an ideal RETURN: ideal
PURPOSE: computes a list of free monomials in a Letterplace
basering R of degree at most d and not contained in <LM(J)>
if donly <> 0, only monomials of degree d are returned ASSUME: - basering is a Letterplace ring.
- d <= attrib(basering,uptodeg) holds.
- J is a Groebner basis

Example:
 ```LIB "fpadim.lib"; ring r = 0,(x,y),dp; def R = makeLetterplaceRing(7); setring R; ideal J = x(1)*y(2)*x(3) - y(1)*x(2)*y(3); option(redSB); option(redTail); J = letplaceGBasis(J); J; ==> J[1]=x(1)*y(2)*x(3)-y(1)*x(2)*y(3) ==> J[2]=x(1)*y(2)*y(3)*x(4)*y(5)-y(1)*x(2)*y(3)*y(4)*x(5) ==> J[3]=x(1)*y(2)*y(3)*y(4)*x(5)*y(6)-y(1)*x(2)*y(3)*y(4)*x(5)*x(6) ==> J[4]=x(1)*y(2)*y(3)*y(4)*y(5)*x(6)*y(7)-y(1)*x(2)*y(3)*y(4)*x(5)*x(6)*x(7\ ) monomialBasis(2,1,std(0)); ==> _[1]=x(1)*y(2) ==> _[2]=x(1)*x(2) ==> _[3]=y(1)*y(2) ==> _[4]=y(1)*x(2) ==> // ** right side is not a datum, assignment ignored ==> // ** in line >>;return();<< ==> _[1]=0 monomialBasis(2,0,std(0)); ==> _[1]=y(1) ==> _[2]=x(1) ==> _[3]=x(1)*y(2) ==> _[4]=x(1)*x(2) ==> _[5]=y(1)*y(2) ==> _[6]=y(1)*x(2) ==> // ** right side is not a datum, assignment ignored ==> // ** in line >>;return();<< ==> _[1]=1 ==> _[2]=0 monomialBasis(3,1,J); ==> _[1]=y(1)*y(2)*y(3) ==> _[2]=y(1)*y(2)*x(3) ==> _[3]=x(1)*y(2)*y(3) ==> _[4]=y(1)*x(2)*y(3) ==> _[5]=y(1)*x(2)*x(3) ==> _[6]=x(1)*x(2)*y(3) ==> _[7]=x(1)*x(2)*x(3) monomialBasis(3,0,J); ==> _[1]=1 ==> _[2]=y(1) ==> _[3]=y(1) ==> _[4]=x(1) ==> _[5]=x(1) ==> _[6]=y(1)*y(2) ==> _[7]=y(1)*x(2) ==> _[8]=x(1)*y(2) ==> _[9]=x(1)*x(2) ==> _[10]=y(1)*y(2)*y(3) ==> _[11]=y(1)*y(2)*x(3) ==> _[12]=y(1)*x(2)*y(3) ==> _[13]=y(1)*x(2)*x(3) ==> _[14]=x(1)*y(2)*y(3) ==> _[15]=x(1)*x(2)*y(3) ==> _[16]=x(1)*x(2)*x(3) ```