1.2.6 `sm1.hilbert'
-------------------

sm1.hilbert([F,V]|proc=P)
     ::  ask the server to compute the Hilbert polynomial for the set
     of polynomials F.

hilbert_polynomial(F,V)
     ::  ask the server to compute the Hilbert polynomial for the set
     of polynomials F.

RETURN
     Polynomial

P
     Number

F, V
     List

   * It returns the Hilbert polynomial h(k) of the set of polynomials
      F     with respect to the set of variables V.

   *     h(k) = dim_Q F_k/I \cap F_k  where F_k the set of polynomials
     of which     degree is less than or equal to k and I is the ideal
     generated by the     set of polynomials F.

   *    Note for sm1.hilbert:    For an efficient computation, it is
     preferable that    the set of polynomials F is a set of monomials.
       In fact, this function firstly compute a Grobner basis of F,
     and then    compute the Hilbert polynomial of the initial
     monomials of the basis.     If the input F is already a Grobner
     basis, a Grobner basis is recomputed in this function,    which is
     a waste of time and Grobner basis computation in the ring of
     polynomials in `sm1' is  slower than in `asir'.


     [346] load("katsura")$
     [351] A=hilbert_polynomial(katsura(5),[u0,u1,u2,u3,u4,u5]);
     32

     [279] load("katsura")$
     [280] A=gr(katsura(5),[u0,u1,u2,u3,u4,u5],0)$
     [281] dp_ord();
     0
     [282] B=map(dp_ht,map(dp_ptod,A,[u0,u1,u2,u3,u4,u5]));
     [(1)*<<1,0,0,0,0,0>>,(1)*<<0,0,0,2,0,0>>,(1)*<<0,0,1,1,0,0>>,(1)*<<0,0,2,0,0,0>>,
      (1)*<<0,1,1,0,0,0>>,(1)*<<0,2,0,0,0,0>>,(1)*<<0,0,0,1,1,1>>,(1)*<<0,0,0,1,2,0>>,
      (1)*<<0,0,1,0,2,0>>,(1)*<<0,1,0,0,2,0>>,(1)*<<0,1,0,1,1,0>>,(1)*<<0,0,0,0,2,2>>,
       (1)*<<0,0,1,0,1,2>>,(1)*<<0,1,0,0,1,2>>,(1)*<<0,1,0,1,0,2>>,(1)*<<0,0,0,0,3,1>>,
       (1)*<<0,0,0,0,4,0>>,(1)*<<0,0,0,0,1,4>>,(1)*<<0,0,0,1,0,4>>,(1)*<<0,0,1,0,0,4>>,
      (1)*<<0,1,0,0,0,4>>,(1)*<<0,0,0,0,0,6>>]
     [283] C=map(dp_dtop,B,[u0,u1,u2,u3,u4,u5]);
     [u0,u3^2,u3*u2,u2^2,u2*u1,u1^2,u5*u4*u3,u4^2*u3,u4^2*u2,u4^2*u1,u4*u3*u1,
      u5^2*u4^2,u5^2*u4*u2,u5^2*u4*u1,u5^2*u3*u1,u5*u4^3,u4^4,u5^4*u4,u5^4*u3,
      u5^4*u2,u5^4*u1,u5^6]
     [284] sm1.hilbert([C,[u0,u1,u2,u3,u4,u5]]);
     32

Reference
     `sm1.start', `sm1.gb', `longname'

