|  |  7.3.4 division (plural) 
See
 ideal;
 lift;
 module;
 poly;
 vector.Syntax:division (ideal_expression,ideal_expression)
 division (module_expression,module_expression)
 division (ideal_expression,ideal_expression,int_expression)
 division (module_expression,module_expression,int_expression)
 division (ideal_expression,ideal_expression,int_expression,intvec_expression)
 division (module_expression,module_expression,int_expression,intvec_expression
 )Type:list
Purpose:divisioncomputes a left division with remainder.
For two left ideals resp. modulesM(first argument) andN(second argument), it returns a listT,R,UwhereTis a matrix,Ris a left ideal resp. a module, andUis a diagonal matrix of units such thattranspose(U)*transpose(matrix(M))=transpose(T)*transpose(matrix(N)) + transpose(matrix(R)). From this data one gets
a left standard representation for the left normal formRofMwith respect to a left Groebner basis ofN.divisionuses different algorithms depending on whetherNis represented by a Groebner basis.
For a GR-algebra, the matrixUis the identity matrix.
A matrixTas above is also computed bylift.For additional arguments
 n(third argument) andw(fourth argument),divisionreturns a listT,Ras above such thattranspose(matrix(M))=transpose(T)*transpose(matrix(N)) + transpose(matrix(R))is a left standard representation for the
left normal formRofMwith respect toNup to weighted degreenwith respect to the weight vectorw.
The weighted degree ofTandRrespect towis at mostn.
If the weight vectorwis not given,divisionuses the standard weight vectorw=1,...,1.Example:|  | LIB "dmod.lib";
ring r = 0,(x,y),dp;
poly f = x^3+xy;
def S = Sannfs(f); setring S; // compute the annihilator of f^s
LD; // is not a Groebner basis yet!
==> LD[1]=3*x^2*Dy-x*Dx+y*Dy
==> LD[2]=x*Dx+2*y*Dy-3*s
poly f = imap(r,f);
poly P = f*Dx-s*diff(f,x);
division(P,LD); // so P is in the ideal via the cofactors in _[1]
==> [1]:
==>    _[1,1]=-2/3*y
==>    _[2,1]=x^2+1/3*y
==> [2]:
==>    _[1]=0
==> [3]:
==>    _[1,1]=1
ideal I = LD, f; // consider a bigger ideal
list L = division(s^2, I); // the normal form is -2s-1
L;
==> [1]:
==>    _[1,1]=2/3*x^2*Dy-1/3*x*Dx+2/3*s+1/3
==>    _[2,1]=2/3*x^2*Dy-1/3*x*Dx-1/3*s-2/3
==>    _[3,1]=-2*x*Dy^2+Dx*Dy
==> [2]:
==>    _[1]=-2*s-1
==> [3]:
==>    _[1,1]=1
// now we show that the formula above holds
matrix M[1][1] = s^2; matrix N = matrix(I);
matrix T = matrix(L[1]); matrix R = matrix(L[2]); matrix U  = matrix(L[3]);
// the formula must return zero:
transpose(U)*transpose(M) - transpose(T)*transpose(N) - transpose(R);
==> _[1,1]=0
 | 
 
 |