1.2.4 `sm1.gb'
--------------

sm1.gb([F,V,W]|proc=P,sorted=Q,dehomogenize=R)
     ::  computes the Grobner basis of F in the ring of differential
     operators with the variable V.

sm1.gb_d([F,V,W]|proc=P)
     ::  computes the Grobner basis of F in the ring of differential
     operators with the variable V.  The result will be returned as a
     list of distributed polynomials.

RETURN
     List

P, Q, R
     Number

F, V, W
     List

   *    It returns the Grobner basis of the set of polynomials F    in
     the ring of deferential operators with the variables V.

   *    The weight vectors are given by W, which can be omitted.
     If W is not given,     the graded reverse lexicographic order will
     be used to compute Grobner basis.

   *    The return value of `sm1.gb'     is the list of the Grobner
     basis of F and the initial     terms (when W is not given) or
     initial ideal (when W is given).

   *    `sm1.gb_d' returns the results by a list of distributed
     polynomials.      Monomials in each distributed polynomial are
     ordered in the given order.      The return value consists of
     [variable names, order matrix, grobner basis in districuted
     polynomials,      initial monomials or initial polynomials].

   *    When a non-term order is given, the Grobner basis is computed in
       the homogenized Weyl algebra  (See Section 1.2 of the book of
     SST).     The homogenization variable h is automatically added.

   *    When the optional variable Q is set, `sm1.gb' returns,    as
     the third return value, a list of    the Grobner basis and the
     initial ideal    with sums of monomials sorted by the given order.
       Each polynomial is expressed as a string temporally for now.
     When the optional variable R is set to one,    the polynomials
     are dehomogenized (,i.e., h is set to 1).

     [293] sm1.gb([[x*dx+y*dy-1,x*y*dx*dy-2],[x,y]]);
     [[x*dx+y*dy-1,y^2*dy^2+2],[x*dx,y^2*dy^2]]
   In the example above,
     [294] sm1.gb([[dx^2+dy^2-4,dx*dy-1],[x,y],[[dx,50,dy,2,x,1]]]);
     [[dx+dy^3-4*dy,-dy^4+4*dy^2-1],[dx,-dy^4]]
   In the example above, two monomials
     [294] F=sm1.gb([[dx^2+dy^2-4,dx*dy-1],[x,y],[[dx,50,dy,2,x,1]]]|sorted=1);
           map(print,F[2][0])$
           map(print,F[2][1])$

     [595]
        sm1.gb([["dx*(x*dx +y*dy-2)-1","dy*(x*dx + y*dy -2)-1"],
                  [x,y],[[dx,1,x,-1],[dy,1]]]);

     [[x*dx^2+(y*dy-h^2)*dx-h^3,x*dy*dx+y*dy^2-h^2*dy-h^3,h^3*dx-h^3*dy],
      [x*dx^2+(y*dy-h^2)*dx,x*dy*dx+y*dy^2-h^2*dy-h^3,h^3*dx]]

     [596]
        sm1.gb_d([["dx (x dx +y dy-2)-1","dy (x dx + y dy -2)-1"],
                  "x,y",[[dx,1,x,-1],[dy,1]]]);
     [[[e0,x,y,H,E,dx,dy,h],
      [[0,-1,0,0,0,1,0,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,0,0],
       [0,1,1,1,1,1,1,0],[0,0,0,0,0,0,-1,0],[0,0,0,0,0,-1,0,0],
       [0,0,0,0,-1,0,0,0],[0,0,0,-1,0,0,0,0],[0,0,-1,0,0,0,0,0],
       [0,0,0,0,0,0,0,1]]],
     [[(1)*<<0,0,1,0,0,1,1,0>>+(1)*<<0,1,0,0,0,2,0,0>>+(-1)*<<0,0,0,0,0,1,0,2>>+(-1)*
     <<0,0,0,0,0,0,0,3>>,(1)*<<0,0,1,0,0,0,2,0>>+(1)*<<0,1,0,0,0,1,1,0>>+(-1)*<<0,0,0
     ,0,0,0,1,2>>+(-1)*<<0,0,0,0,0,0,0,3>>,(1)*<<0,0,0,0,0,1,0,3>>+(-1)*<<0,0,0,0,0,0
     ,1,3>>],
      [(1)*<<0,0,1,0,0,1,1,0>>+(1)*<<0,1,0,0,0,2,0,0>>+(-1)*<<0,0,0,0,0,1,0,2>>,(1)*<
     <0,0,1,0,0,0,2,0>>+(1)*<<0,1,0,0,0,1,1,0>>+(-1)*<<0,0,0,0,0,0,1,2>>+(-1)*<<0,0,0
     ,0,0,0,0,3>>,(1)*<<0,0,0,0,0,1,0,3>>]]]

Reference
     `sm1.reduction', `sm1.rat_to_p'

