Singular

Home Online Manual
Top
Back: stdfglm
Forward: subst
FastBack: Functions and system variables
FastForward: Control structures
Up: Functions
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

5.1.144 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:
intvec 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.