#### D.4.26.1 sagbiSPoly

Procedure from library `sagbi.lib` (see sagbi_lib).

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. @format 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 prodecure uses toric_ideal.
  @end format

Example:

    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

User manual for Singular version 4-0-3, 2016, generated by texi2html.