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