# 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[, LB:INT, OFlag: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.

About 2 optional parameters: in some situations, truncated Groebner basis is too large for our applications. Thus, instead of computing the whole truncated Groebner basis, the function uses two optional parameters to control the enumerating procedure. Note that at the moment *all* of the following 2 optional parameters must be used at the same time.

@param

*LB:*a positive INT, which gives a loop bound of enumerating steps. When the LB-th enumerating step finishes, the procedure will be interrupted and return a partial Groebner basis.@param

*OFlag:*a non-negative INT, which is a multi-switch for the output of the ApCoCoAServer. If OFlag=0, the server displaces nothing on the screen. If OFlag=1, the server prints basic information on the enumerating procedure, such as the number of enumerating steps has been proceeded, the number of elements in partial Groebner basis, the number of unselected obstructions; the total number of obstructions, the number of selected obstructions, and the number of unnecessary obstructions. If OFlag=2, besides the information as OFlag=1, the server also displays explicitly the elements in partial Groebner basis and the current selected S-polynonial. Note that the initial idea of using OFlag is to trace and debug the enumerating procedure.

#### Example

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

### See also