### 5.1.153 stdhilb

Procedure from library `standard.lib` (see standard_lib).

Syntax:
  `stdhilb (` ideal_expression `)`
  `stdhilb (` module_expression `)`
  `stdhilb (` ideal_expression, intvec_expression `)`
  `stdhilb (` module_expression, intvec_expression `)`
  `stdhilb (` ideal_expression`,` list of string_expressions, and intvec_expression `)`

Type:
  type of the first argument

Purpose:
  Compute a Groebner basis of the ideal/module in the basering by using the Hilbert driven Groebner basis algorithm. If an argument of type string, stating `"std"` resp. `"slimgb"`, is given, the standard basis computation uses `std` or `slimgb`, otherwise a heuristically chosen method (default)
  If an optional second argument w of type intvec is given, w is used as variable weights. If w is not given, it is computed as w[i] = deg(var(i)). If the ideal is homogeneous w.r.t. w then the Hilbert series is computed w.r.t. to these weights.

Theory:
  If the ideal is not homogeneous compute first a Groebner basis of the homogenization [w.r.t. the weights w] of the ideal/module, then the Hilbert function and, finally, a Groebner basis in the original ring by using the computed Hilbert function. If the given w does not coincide with the variable weights of the basering, the result may not be a groebner basis in the original ring.

Note:
  'Homogeneous' means weighted homogeneous with respect to the weights w[i] of the variables var(i) of the basering. Parameters are not converted to variables.

Example:

       ring  r = 0,(x,y,z),lp;
    ideal i = y3+x2,x2y+x2z2,x3-z9,z4-y2-xz;
    ideal j = stdhilb(i); j;
    ==> j[1]=z10
    ==> j[2]=yz9
    ==> j[3]=2y2z4-z8
    ==> j[4]=2y3z3-2y2z5-yz7
    ==> j[5]=y4+y3z2
    ==> j[6]=xz+y2-z4
    ==> j[7]=xy2-xz4-y3z
    ==> j[8]=x2+y3
    ring  r1 = 0,(x,y,z),wp(3,2,1);
    ideal  i = y3+x2,x2y+x2z2,x3-z9,z4-y2-xz;  //ideal is homogeneous
    ideal j = stdhilb(i,"std"); j;
    ==> j[1]=y2+xz-z4
    ==> j[2]=x2-xyz+yz4
    ==> j[3]=2xz5-z8
    ==> j[4]=2xyz4-yz7+z9
    ==> j[5]=z10
    ==> j[6]=2yz9+z11
    //this is equivalent to:
    bigintvec v = hilb(std(i),1);
    ideal j1 = std(i,v,intvec(3,2,1)); j1;
    ==> j1[1]=y2+xz-z4
    ==> j1[2]=x2-xyz+yz4
    ==> j1[3]=2xz5-z8
    ==> j1[4]=2xyz4-yz7+z9
    ==> j1[5]=z10
    ==> j1[6]=yz9
    size(NF(j,j1))+size(NF(j1,j));            //j and j1 define the same ideal
    ==> 0

See also: groebner; slimgb; std; stdfglm.

User manual for Singular version 4.4.1, 2025, generated by texi2html.