Top
Back: getdump
Forward: help
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.44 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 ) groebner ( ideal_expression, list of string_expressions )
groebner ( ideal_expression, list of string_expressions and int_expression )
groebner ( ideal_expression, 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 implemented for all orderings)
A further string "par2var" converts parameters to an extra block of variables before a Groebner basis computation (and afterwards back). option(prot) tells about the chosen method.

Note:
If a further argument, say wait, of type int 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 Standard::groebner_error is defined. This feature uses MP and is hence only available on UNIX platforms.

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);
==> slimgb in ring (0),(a,b,c,d),(dp(4),C)
==> 2M[1,1](2)3M[1,1](2)4M[2,e1](2)5M[2,2](3)6M[3,1](2)7M[2,0](0)
==> NF:11 product criterion:8, ext_product criterion:0 
==> _[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");
==> slimgb in ring (0),(a,b,c,d,@),(dp(5),C)
==> CC2M[1,1](2)C3M[1,1](2)4M[2,e1](2)C5M[2,2](3)C6M[3,1](2)C7M[2,0](0)
==> NF:11 product criterion:8, ext_product criterion:0 
==> std with hilb in (0),(a,b,c,d,@),(lp(4),dp(1),C)
==> [63:1]1(3)s2(2)s3s4-s5ss6shhhh8shh
==> product criterion:9 chain criterion:8
==> hilbert series criterion:6
==> 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
==> 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)
==> [63:1]1(4)s2(3)s(2)s3s4-s5ss6shhhh
==> product criterion:15 chain criterion:5
==> hilbert series criterion:4
==> 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]=2*c+(2a)
==> _[3]=b+c+d+(a)
groebner(i,"fglm");          //computes a reduced standard basis
==> slimgb in ring (0,a),(b,c,d),(dp(3),C)
==> 2M[1,1](2)3M[1,1](2)4M[2,eb1](2)3M[2,2](3)2M[2,e1](1)
==> NF:8 product criterion:10, ext_product criterion:1 
==> 
==> (S:2)--
==> ..+++--
==> vdim= 2
==> ..++-+-
==> _[1]=d2
==> _[2]=c+(a)
==> _[3]=b+d
if (system("with","MP")) {groebner(i,10,"std");}
==> Singular error: MP (resp. MPT) syntax error : MPT: MPT tree has wrong syn\
   tax/structureSingular error: read: Error for link of type MPtcp, mode: fo\
   rk, name: child
defined(Standard::groebner_error);
==> 0
option(set,opt);
stdhilb, stdfglm, std, slimgb


Top Back: getdump Forward: help FastBack: Functions and system variables FastForward: Control structures Up: Functions Top: Singular Manual Contents: Table of Contents Index: Index About: About this document
            User manual for Singular version 3-0-4, Nov 2007, generated by texi2html.