In this section we show how one can actually compute a Gröbner basis using GRÖBNER\ together with the supplied I/O library and the sample application program. This application repeats the following steps in a loop:
Suppose we want to compute the Gröbner basis of the set
over the rational numbers w.r.t. the purely lexical ordering induced by a<x<y<z.
unix% groebner Starting SACLIB with 4000000 cells in memory Path for Input-file: /usr/users/wwindste/Groebner/input Type input-file name ( <RETURN> = stdin, ? = help): Path for Output-file: /usr/users/wwindste/Groebner/input Output-file name ( <RETURN> = stdout, ? = help): *********************************************************** Input File: stdin *********************************************************** *********************************************************** Output File: stdout *********************************************************** +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Current Compiled Version: Coefficient Domain: Rational Numbers Term Ordering: Purely Lexicographic Ordering Pair Ordering: Purely Lexicographic Ordering +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ========================= WELCOME TO GROEBNER by RISC-Linz Institute Good Luck ... ========================= Compute GROEBNER BASIS (Crude Version) ........... 1 Compute GROEBNER BASIS (Criteria) ................ 2 Compute GROEBNER BASIS (Reduce All) .............. 3 Compute GROEBNER BASIS (Small Pair Set) .......... 4 EXIT ............................................. 0 Enter your choice: 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Groebner Basis with Reduce All xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Initializing Global Variables for GROEBNER ... Initializing Global Variables for GROEBNER-IO ... Enter ring-variables in ascending order ( ? for help): a,x,y,z; *********************************************************** Number of Variables: 4 Ring Variables: z > y > x > a *********************************************************** Enter Polynomial Set (? for help): {z^2 - a*x^2 - a*y^2, x*z - 2*z + x*y, x^2 - y} Reading of polynomial set complete { 2 - y + x , z x - 2 z + y x, 2 2 2 z - y a - x a } Groebner Basis = { 6 6 5 4 3 2 x a - x - 4 x a + 5 x a - 4 x a + 4 x a, 2 y - x , 1 5 1 5 1 4 1 4 1 3 1 3 1 2 z + - x a - - x - - x a - - x + - x a - - x - - x a 8 8 4 4 8 2 4 } User Time: 0.016667 System Time: 0.000000 Compute GROEBNER BASIS (Crude Version) ........... 1 Compute GROEBNER BASIS (Criteria) ................ 2 Compute GROEBNER BASIS (Reduce All) .............. 3 Compute GROEBNER BASIS (Small Pair Set) .......... 4 EXIT ............................................. 0 Enter your choice: 0 ***************** Bye ***************** unix%
Suppose we now want to compute the Gröbner basis of G over the rational numbers w.r.t. the total degree lexical ordering induced by x<y<z. We want to treat a as a constant (a parameter). This implies that we must use rational functions in a as the coefficient domain. The ordering of pairs (see Section 5.2) should be left unchanged.
We are also interested in some intermediate results, namely we wish to be informed
First, we have to edit the relevant lines in the respective setup-files (see Section 2.8, in particular figures 2 to 4). Then we have to re-compile GRÖBNER and, since the change of the coefficient domain affects I/O as well, the I/O library. Finally, we re-compile the application program and start it.
unix% cd Groebner/GROEBNER/include unix% vi GB.to.setup unix% vi GB.coef.setup unix% vi trace.setup unix% cd ../src unix% make unix% cd ../../GROEBNER-IO/src unix% make unix% cd ../../APP unix% make unix% groebner Starting SACLIB with 4000000 cells in memory Path for Input-file: /usr/users/wwindste/Groebner/input Type input-file name ( <RETURN> = stdin, ? = help): Path for Output-file: /usr/users/wwindste/Groebner/input Output-file name ( <RETURN> = stdout, ? = help): *********************************************************** Input File: stdin *********************************************************** *********************************************************** Output File: stdout *********************************************************** +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Current Compiled Version: Coefficient Domain: Rational Functions Term Ordering: Total Degree Lexicographic Ordering Pair Ordering: Purely Lexicographic Ordering +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ========================= WELCOME TO GROEBNER by RISC-Linz Institute Good Luck ... ========================= Compute GROEBNER BASIS (Crude Version) ........... 1 Compute GROEBNER BASIS (Criteria) ................ 2 Compute GROEBNER BASIS (Reduce All) .............. 3 Compute GROEBNER BASIS (Small Pair Set) .......... 4 EXIT ............................................. 0 Enter your choice: 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Groebner Basis with Small Pair Set xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Initializing Global Variables for GROEBNER ... Initializing Global Variables for GROEBNER-IO ... Enter ring-variables in ascending order ( ? for help): x,y,z; Enter field-variables (terminated by ";"): a; *********************************************************** Number of Variables: 3 Ring Variables: z > y > x Field Variables: a *********************************************************** Enter Polynomial Set (? for help): {z^2 - a*x^2 - a*y^2, x*z - 2*z + x*y, x^2 - y} Reading of polynomial set complete { 2 x - y, z x + y x - (2) z, 2 2 2 z - (a) y - (a) x } Product Criterion New polynomial: [1 1 0] Product Criterion Zero-reduction New polynomial: [0 2 1] Product Criterion Chain Criterion New polynomial: [0 3 0] Product Criterion Product Criterion Product Criterion Zero-reduction Zero-reduction Zero-reduction Zero-reduction Groebner Basis = { 2 x - y, z x + y x - (2) z, 2 z y + y + (2) y x - (4) z, 2 2 z - (a) y - (a) y, 2 2 a + 2 2 a - 4 8 2 a y x - ------- y + ----- y x + ----- z - ----- y, a - 1 a - 1 a - 1 a - 1 2 2 3 3 a + 13 a 2 12 a 32 a 4 a + 4 a y - ------------ y - ------------ y x + ------------ z - ------------ y 2 2 2 2 a - 2 a + 1 a - 2 a + 1 a - 2 a + 1 a - 2 a + 1 } User Time: 0.216667 System Time: 0.000000 Compute GROEBNER BASIS (Crude Version) ........... 1 Compute GROEBNER BASIS (Criteria) ................ 2 Compute GROEBNER BASIS (Reduce All) .............. 3 Compute GROEBNER BASIS (Small Pair Set) .......... 4 EXIT ............................................. 0 Enter your choice: 0 ***************** Bye ***************** unix%
The trace during the calculation is to be interpreted as follows: The first S-polynomial need not be reduced because it reduces to zero by the ``Product Criterion'', the next S-polynomial reduces to a polynomial whose leading term is z y (it has the exponent list [1 1 0]), the fourth S-polynomial reduces to zero, which could not be detected by any of the criteria, the seventh S-polynomial reduces to zero by the ``Chain Criterion'', and so on.