up previous next
NCo.ReducedGB

Enumerate a reduced (partial) Groebner basis of a finitely generated two-sided ideal in a free monoid ring.
Syntax
          
NCo.ReducedGB(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). A Groebner basis G is called a reduced Groebner basis if G is interreduced (see NCo.Interreduction) and all polynomials in G are monic. Note that each ideal has a unique reduced Groebner basis. However, it is not necessarily finite.

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.ReducedGB(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"]]]
-------------------------------
NCo.SetFp(); -- set default Fp=F2
NCo.ReducedGB(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"]]]
-------------------------------
NCo.SetFp(3);
NCo.ReducedGB(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"]]]
-------------------------------
NCo.SetX("xyzt"); 
F1 := [[1,"xx"], [-1,"yx"]];   
F2 := [[1,"xy"], [-1,"ty"]];  
F3 := [[1,"xt"], [-1, "tx"]];  
F4 := [[1,"yt"], [-1, "ty"]];  
F:= [F1, F2,F3,F4]; 
G1:=NCo.ReducedGB(F);
G1;
NCo.IsGB(G1); -- G1 is a reduced Groebner basis
Fa:=[[1,"ytx"],[-1,""]]; 
Append(G1,Fa); -- add one element to G1
G1;
NCo.IsGB(G1); -- G1 is not a Groebner basis any longer
G2:=NCo.ReducedGB(G1); -- compute reduced Groebner basis G2 generated by G1
G2;
G3:=NCo.ReducedGB(G2); -- compute reduced Groebner basis G3 generated by G2
G3;
NCo.IsGB(G3);
[[[1, "yt"], [-1, "ty"]], [[1, "xt"], [-1, "tx"]], [[1, "xy"], [-1, "ty"]], [[1, "xx"], [-1, "yx"]], [[1, "tyy"], [-1, "tty"]], [[1, "yyx"], [-1, "tyx"]]]
-------------------------------
True
-------------------------------
[[[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, "ytx"], [-1, ""]]]
-------------------------------
False
-------------------------------
[[[1, "x"], [-1, "t"]], [[1, "ttt"], [-1, ""]], [[1, "y"], [-1, "t"]]]
-------------------------------
[[[1, "y"], [-1, "t"]], [[1, "x"], [-1, "t"]], [[1, "ttt"], [-1, ""]]]
-------------------------------
True
-------------------------------


See Also