|
5.1.42 groebner
Procedure from library standard.lib (see standard_lib).
- Syntax:
groebner ( ideal_expression )
groebner ( module_expression )
groebner ( ideal_expression, int_expression )
groebner ( module_expression, int_expression )
- Type:
type of the first argument
- Purpose:
computes the standard basis of the first argument I
(ideal or module), by a heuristically chosen method: if the
ordering of the current ring is a local ordering, or if it is a
non-block ordering and the current ring has no parameters, then
std(I) is returned. Otherwise, I is mapped into a
ring with no parameters and ordering dp, where its Hilbert series
is computed. This is followed by a Hilbert-series based std
computation in the original ring.
- Note:
If a 2nd argument wait is given, then the computation proceeds
at most wait seconds. That is, if no result could be computed in
wait seconds, then the computation is interrupted, 0 is returned,
a warning message is displayed, and the global variable
groebner_error is defined.
Example:
ring r=0,(a,b,c,d),lp;
option(prot);
ideal i=a+b+c+d,ab+ad+bc+cd,abc+abd+acd+bcd,abcd-1; // cyclic 4
groebner(i);
→ std in (0),(a,b,c,d,@t),(dp,C)
→ [63:1]1(3)s2(2)s3s4-s5ss6-s7--
→ product criterion:8 chain criterion:5
→ std with hilb in (0),(a,b,c,d,@t),(lp(4),C)
→ [63:1]1(3)s2(2)s3s4-s5ss6shhhh8shh
→ product criterion:9 chain criterion:8
→ hilbert series criterion:6
→ dehomogenization
→ imap to original ring
→ simplification
→ _[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 rp=(0,a,b),(c,d), lp;
ideal i=imap(r,i);
ideal j=groebner(i);
→ std in 0,(c,d,a,b,@t),(dp,C)
→ [63:1]1(3)s2(2)s3s4-s5ss6-s7--
→ product criterion:8 chain criterion:5
→ std with hilb in (0),(c,d,a,b,@t),(lp(2),C, dp(3))
→ [63:3]1(3)s2(2)s3s4-s5ss6shhhh8shh
→ product criterion:9 chain criterion:8
→ hilbert series criterion:6
→ dehomogenization
→ imap to original ring
→ simplification
option(noprot);
j; simplify(j,1); std(i);
→ j[1]=(a3b2+a2b3-a-b)
→ _[1]=1
→ _[1]=1
if (system("with","MP")) {groebner(i,0);}
→ // ** groebner did not finish
→ _[1]=0
defined(groebner_error);
→ 1
See also:
std;
stdfglm;
stdhilb.
|