|
|
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.
|