# ApCoCoA-1:NCo.BTruncatedGB

## NCo.BTruncatedGB

Compute a truncated Groebner basis of a finitely generated homogeneous two-sided ideal in a free monoid ring over the binary field F_{2}={0,1}.

### Syntax

```NCo.BTruncatedGB(G:LIST, DB:INT):LIST
```

### Description

Given a word ordering and a homogeneous two-sided ideal I, a set of non-zero polynomials G is called a Groebner basis of I if the leading word set BLW{G} generates the leading word ideal BLW(I). Note that it may not exist finite Groebner basis of the ideal I. Moreover, let D be a positive integer. Then the set {g in G | Deg(g)<=D} is a Groebner basis of the ideal <f in I | Deg(f)<=D> and is called a D-truncated Groebner basis of I.

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 alphabet (or set of indeterminates) X and word ordering via the functions NCo.SetX and NCo.SetOrdering, respectively, before calling this function. The default ordering is the length-lexicographic ordering ("LLEX"). For more information, please check the relevant functions.

• @param G: a LIST of non-zero homogeneous polynomials generating a two-sided ideal in the free monoid ring F_{2}<X>. Each word is represented as a STRING. For example, xy^2x is represented as "xyyx", and the identity is represented as the empty string "". Thus, the polynomial f=xy-y+1 is represented as F:=["xy", "y", ""]. The zero polynomial 0 is represented as the empty LIST [].

• @param DB: a positive INT, which gives a degree bound of S-polynomials (or obstructions) during the Buchberger enumerating procedure. The procedure will discard S-polynomials (or obstructions) whose degrees are larger than DB.

• @return: a LIST of polynomials, which is a truncated Groebner basis at degree DB with respect to the current word ordering if the enumerating procedure doesn't terminate due to reaching the loop bound LB, and is a partial Groebner basis otherwise.

#### Example

```NCo.SetX("xyz");
F1:=["yxy","zyz"];
F2:=["xyx","zxy"];
F3:=["zxz","yzx"];
F4:=["xxx","yyy","zzz","xyz"];
G:=[F1,F2,F3,F4];
NCo.BTruncatedGB(G,6);
[["yzx", "zxz"], ["yxy", "zyz"], ["xyx", "zxy"], ["xxx", "xyz", "yyy", "zzz"],
["zxzy", "zzxz"], ["xzyz", "zxyy"], ["xxyz", "xyyy", "xzxz", "xzzz", "yyyx", "zzzx"],
["zzxyy", "zzxzz"], ["yzzxz", "zxzzy"], ["yzzxy", "zzxzx"], ["yzyyy", "yzzzz", "zxzxx", "zzxzz"],
["yxzxz", "zyzzx"], ["xzzxz", "zxyyx"], ["xyyyy", "xyzzz", "zxyyz", "zzzxy"],
["xxzxz", "xyyyx", "xzxzx", "xzzzx", "yyyxx", "zzzxx"], ["xxzxy", "xyzyx", "yyyyx", "zzzyx"],
["xxyyy", "xxzzz", "xyzyz", "xzxzx", "yyyxx", "yyyyz", "zzzxx", "zzzyz"],
["zxzzyz", "zzxzxy"], ["yzzzxz", "zxzzyy"], ["yzzzxy", "zzxzxx"], ["xzzzxz", "zxyzyz"],
["xyyzyz", "xzxyyx", "xzxzxy", "xzzzxy", "yyyxxy", "zzzxxy"],
["xxzzzy", "xyyyzz", "xyzyzy", "xzxyyz", "xzxzxy", "xzxzzz", "xzzzxy",
"xzzzzz", "yyyxxy", "yyyxzz", "yyyyzy", "zzzxxy", "zzzxzz", "zzzyzy"],
["xxzzxy", "xyzyxx", "yyyyxx", "zzzyxx"]]
-------------------------------
```