|  |  D.4.33.1 sagbiSPoly Procedure from librarysagbi.lib(see  sagbi_lib).
 
Example:Usage:
sagbiSPoly(A[, returnRing, meth]); A is an ideal, returnRing and meth are integers.
Return:
ideal or ring
Assume:
basering is not a qring
Purpose:
Returns SAGBI S-polynomials of the leading terms of a given ideal A if returnRing=0.
Otherwise returns a new ring containing the ideals algebraicRelations
 and spolynomials, where these objects are explained by their name.
 See the example on how to access these objects.
 The other optional argument meth determines which method is
 used for computing the algebraic relations.
 - If meth=0 (default), the procedure std is used.
 - If meth=1, the procedure slimgb is used.
 - If meth=2, the procedure uses toric_ideal.
 
 |  | LIB "sagbi.lib";
ring r= 0,(x,y),dp;
ideal A=x*y+x,x*y^2,y^2+y,x^2+x;
//------------------ Compute the SAGBI S-polynomials only
sagbiSPoly(A);
==> _[1]=x2y-xy2+x2-xy
==> _[2]=x2y3+1/2xy4+1/2x2y2+xy3+1/2xy2
//------------------ Extended ring is to be returned, which contains
// the ideal of algebraic relations and the ideal of the S-polynomials
def rNew=sagbiSPoly(A,1);  setring rNew;
spolynomials;
==> spolynomials[1]=x^2*y-x*y^2+x^2-x*y
==> spolynomials[2]=x^2*y^3+1/2*x*y^4+1/2*x^2*y^2+x*y^3+1/2*x*y^2
algebraicRelations;
==> algebraicRelations[1]=@y(1)^2-@y(3)*@y(4)
==> algebraicRelations[2]=@y(3)^2*@y(4)-@y(2)^2
//----------------- Now we verify that the substitution of A[i] into @y(i)
// results in the spolynomials listed above
ideal A=fetch(r,A);
map phi=rNew,x,y,A;
ideal spolynomials2=simplify(phi(algebraicRelations),1);
spolynomials2;
==> spolynomials2[1]=x^2*y-x*y^2+x^2-x*y
==> spolynomials2[2]=x^2*y^3+1/2*x*y^4+1/2*x^2*y^2+x*y^3+1/2*x*y^2
 | 
 
 |