|
D.15.12.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:
- I must be multigraded homogeneous
- 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
|
|