|
5.1.48 groebner
Procedure from library standard.lib (see standard_lib).
- Syntax:
groebner ( ideal_expression )
groebner ( module_expression )
groebner ( ideal_expression, list of string_expressions
)
groebner ( ideal_expression, list of string_expressions
and int_expression )
- Type:
- type of the first argument
- Purpose:
- computes a standard basis of the first argument
I
(ideal or module) by a heuristically chosen method (default)
or by a method specified by further arguments of type string.
Possible methods are:
- the direct methods "std" or "slimgb" without
conversion,
- conversion methods "hilb" or "fglm" where
a Groebner basis is first computed with an "easy" ordering
and then converted to the ordering of the basering by the
Hilbert driven Groebner basis computation or by linear algebra.
The actual computation of the Groebner basis can be
specified by "std" or by "slimgb"
(not for all orderings implemented).
A further string "par2var" converts parameters to an extra
block of variables before a Groebner basis computation (and
afterwards back).
option(prot) informs about the chosen method.
- Hint:
- Since there exists no uniform best method for computing standard
bases, and since the difference in performance of a method on
different examples can be huge, it is recommended to test, for hard
examples, first various methods on a simplified example (e.g. use
characteristic 32003 instead of 0 or substitute a subset of
parameters/variables by integers, etc.).
Example:
| intvec opt = option(get);
option(prot);
ring r = 0,(a,b,c,d),dp;
ideal i = a+b+c+d,ab+ad+bc+cd,abc+abd+acd+bcd,abcd-1;
groebner(i);
==> std in (0),(a,b,c,d),(dp(4),C)
==> [65535:2]1(3)s2(2)s3s4-s5ss6-s7--
==> product criterion:8 chain criterion:5
==> _[1]=a+b+c+d
==> _[2]=b2+2bd+d2
==> _[3]=bc2+c2d-bd2-d3
==> _[4]=bcd2+c2d2-bd3+cd3-d4-1
==> _[5]=bd4+d5-b-d
==> _[6]=c3d2+c2d3-c-d
==> _[7]=c2d4+bc-bd+cd-2d2
ring s = 0,(a,b,c,d),lp;
ideal i = imap(r,i);
groebner(i,"hilb");
==> compute hilbert series with std in ring (0),(a,b,c,d,@),(dp(5),C)
==> weights used for hilbert series: 1,1,1,1,1
==> [4095:1]1(3)s2(2)s3s4-s5ss6-s7--
==> product criterion:8 chain criterion:5
==> std with hilb in (0),(a,b,c,d,@),(lp(4),dp(1),C)
==> [4095:1]1(6)s2(5)s3(4)s4-s5sshh6(3)shhhhh8shh
==> product criterion:9 chain criterion:8
==> hilbert series criterion:9
==> dehomogenization
==> simplification
==> imap to ring (0),(a,b,c,d),(lp(4),C)
==> _[1]=c2d6-c2d2-d4+1
==> _[2]=c3d2+c2d3-c-d
==> _[3]=bd4-b+d5-d
==> _[4]=bc-bd5+c2d4+cd-d6-d2
==> _[5]=b2+2bd+d2
==> _[6]=a+b+c+d
ring R = (0,a),(b,c,d),lp;
minpoly = a2+1;
ideal i = a+b+c+d,ab+ad+bc+cd,abc+abd+acd+bcd,d2-c2b2;
groebner(i,"par2var","slimgb");
==> //add minpoly to input
==> compute hilbert series with slimgb in ring (0),(b,c,d,a,@),(dp(5),C)
==> weights used for hilbert series: 1,1,1,1,1
==> slimgb in ring (0),(b,c,d,a,@),(dp(5),C)
==> CC2M[2,2](2)C3M[1,1](2)4M[2,e1](2)C5M[2,e2](3)C6M[1,1](0)
==> NF:8 product criterion:15, ext_product criterion:3
==> std with hilb in (0),(b,c,d,a,@),(lp(3),dp(1),dp(1),C)
==> [4095:1]1(7)s2(6)s(5)s3(4)s4-s5sshh6(3)shhhhh
==> product criterion:15 chain criterion:5
==> hilbert series criterion:7
==> dehomogenization
==> simplification
==> imap to ring (0),(b,c,d,a),(lp(3),dp(1),C)
==> //simplification
==> (S:4)rtrtrtr
==> //imap to original ring
==> _[1]=d2
==> _[2]=c+(a)
==> _[3]=b+c+d+(a)
groebner(i,"fglm"); //computes a reduced standard basis
==> std in (0,a),(b,c,d),(dp(3),C)
==> [65535:2]1(3)s2(2)s3s4-s5ss6-s7
==> (S:2)--
==> product criterion:9 chain criterion:1
==> ..+++--
==> vdim= 2
==> ..++-+-
==> _[1]=d2
==> _[2]=c+(a)
==> _[3]=b+d
option(set,opt);
| See also:
slimgb;
std;
stdfglm;
stdhilb.
|