# Singular

#### D.15.25.39 multiDegGroebner

Procedure from library `multigrading.lib` (see multigrading_lib).

Usage:
multiDegGroebner(I); I is a poly/vector/ideal/module

Purpose:
computes the multigraded standard/groebner basis of I

Note:

Returns:
ideal/module, the computed basis

Example:
 ```LIB "multigrading.lib"; ring r = 0,(x,y,z,w),dp; intmat MM[2][4]= 1,1,1,1, 0,1,3,4; setBaseMultigrading(MM); module M = ideal( xw-yz, x2z-y3, xz2-y2w, yw2-z3); intmat v[2][nrows(M)]= 1, 0; M = setModuleGrading(M, v); ///////////////////////////////////////////////////////////////////////////// // GB: M = multiDegGroebner(M); M; ==> M[1]=yz*gen(1)-xw*gen(1) ==> M[2]=z3*gen(1)-yw2*gen(1) ==> M[3]=xz2*gen(1)-y2w*gen(1) ==> M[4]=y3*gen(1)-x2z*gen(1) "Module Units Multigrading: "; print( getModuleGrading(M) ); ==> Module Units Multigrading: ==> 1 ==> 0 "Multidegrees: "; print(multiDeg(M)); ==> Multidegrees: ==> 3 4 4 4 ==> 4 9 6 3 isHomogeneous(M); ==> 1 ///////////////////////////////////////////////////////////////////////////// // Let's compute Syzygy! def S = multiDegSyzygy(M); S; ==> S[1]=yw*gen(1)-x*gen(2)+z*gen(3) ==> S[2]=z2*gen(1)-y*gen(2)+w*gen(3) ==> S[3]=xz*gen(1)-y*gen(3)-w*gen(4) ==> S[4]=y2*gen(1)-x*gen(3)-z*gen(4) "Module Units Multigrading: "; print( getModuleGrading(S) ); ==> Module Units Multigrading: ==> 3 4 4 4 ==> 4 9 6 3 "Multidegrees: "; print(multiDeg(S)); ==> Multidegrees: ==> 5 5 5 5 ==> 9 10 7 6 isHomogeneous(S); ==> 1 ///////////////////////////////////////////////////////////////////////////// // GB: S = multiDegGroebner(S); S; ==> S[1]=yw*gen(1)-x*gen(2)+z*gen(3) ==> S[2]=z2*gen(1)-y*gen(2)+w*gen(3) ==> S[3]=xz*gen(1)-y*gen(3)-w*gen(4) ==> S[4]=y2*gen(1)-x*gen(3)-z*gen(4) ==> S[5]=xy*gen(2)-yz*gen(3)-xw*gen(3)-zw*gen(4) ==> S[6]=xz2*gen(2)-z3*gen(3)-y2w*gen(2)+yw2*gen(3) ==> S[7]=x2z*gen(2)-xz2*gen(3)-y2w*gen(3)-yw2*gen(4) ==> S[8]=y3*gen(2)-xz2*gen(3)-z3*gen(4)-y2w*gen(3) ==> S[9]=y3*gen(3)-x2z*gen(3)-xz2*gen(4)+y2w*gen(4) "Module Units Multigrading: "; print( getModuleGrading(S) ); ==> Module Units Multigrading: ==> 3 4 4 4 ==> 4 9 6 3 "Multidegrees: "; print(multiDeg(S)); ==> Multidegrees: ==> 5 5 5 5 6 7 7 7 7 ==> 9 10 7 6 10 15 12 12 9 isHomogeneous(S); ==> 1 ```