up previous next
NCo.GB

Enumerate a (partial) Groebner basis of a finitely generated two-sided ideal in a free monoid ring (using the Buchberger procedure).
Syntax
          
NCo.GB(G:LIST[, DB:INT, LB:INT, OFlag:INT]):LIST

          

Description
Given a two-sided ideal I and a word ordering Ordering, a set of non-zero polynomials G is called a Groebner basis of I with respect to Ordering if the leading word set LW{G} generates the leading word ideal LW(I). Note that a two-sided ideal may not have finite Groebner bases.

Please note: The function(s) explained on this page is/are using the ApCoCoAServer. You will have to start the ApCoCoAServer in order to use it/them.

Please set ring environment coefficient field K, alphabet (or set of indeterminates) X and ordering via the functions NCo.SetFp, NCo.SetX and NCo.SetOrdering, respectively, before using this function. The default coefficient field is Q, and the default ordering is the length-lexicographic ordering ("LLEX"). For more information, please check the relevant functions. About 3 optional parameters: for most cases we do not know whether or not there exists a finite Groebner basis beforehand. Thus, the function offers 3 optional parameters for the enumerating procedure. Note that at the moment all of the following 3 optional parameters must be used at the same time.

Example
NCo.SetX("xyzt"); 
F1 := [[1,"xx"], [-1,"yx"]];
F2 := [[1,"xy"], [-1,"ty"]];
F3 := [[1,"xt"], [-1, "tx"]];
F4 := [[1,"yt"], [-1, "ty"]];
G := [F1, F2,F3,F4]; 
NCo.GB(G); -- over Q (default field), LLEX ordering (default ordering)

[[[1, "yt"], [-1, "ty"]], [[1, "xt"], [-1, "tx"]], [[1, "xy"], [-1, "ty"]], 
[[1, "xx"], [-1, "yx"]], [[1, "tyy"], [-1, "tty"]], [[1, "yyx"], [-1, "tyx"]], 
[[1, "ttyy"], [-1, "ttty"]], [[1, "tyyx"], [-1, "ttyx"]]]
-------------------------------
NCo.SetFp(); -- set default Fp=F2
NCo.GB(G); -- over F2, LLEX ordering

[[[1, "yt"], [1, "ty"]], [[1, "xt"], [1, "tx"]], [[1, "xy"], [1, "ty"]], 
[[1, "xx"], [1, "yx"]], [[1, "tyy"], [1, "tty"]], [[1, "yyx"], [1, "tyx"]], 
[[1, "ttyy"], [1, "ttty"]], [[1, "tyyx"], [1, "ttyx"]]]
-------------------------------
NCo.SetFp(3);
NCo.GB(G); -- over F3, LLEX ordering

[[[1, "yt"], [2, "ty"]], [[1, "xt"], [2, "tx"]], [[1, "xy"], [2, "ty"]], 
[[1, "xx"], [2, "yx"]], [[1, "tyy"], [2, "tty"]], [[1, "yyx"], [2, "tyx"]], 
[[1, "ttyy"], [2, "ttty"]], [[1, "tyyx"], [2, "ttyx"]]]
-------------------------------
NCo.SetX("txyz"); 
NCo.SetOrdering("ELIM"); -- ELIM will eliminate t, x, y, z one after another
Gb:=NCo.GB(G);
NCo.FindPolynomials("xyz",Gb); -- compute GB of the intersection of  and F3

[[[1, "xx"], [2, "yx"]], [[1, "xyx"], [2, "yyx"]], [[1, "xyy"], [2, "yxy"]]]
-------------------------------


See Also