# ApCoCoA-1:NC.Intersection

## NC.Intersection

Enumerate a (partial) Groebner basis of the intersection of two finitely generated two-sided ideals over a free monoid ring.

### Syntax

```NC.Intersection(G1:LIST, G2:LIST):LIST
NC.Intersection(G1:LIST, G2:LIST, DegreeBound:INT, LoopBound:INT, Flag:INT):LIST
```

### Description

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 NC.SetFp, NC.SetX and NC.SetOrdering, respectively, before calling the function. The default coefficient field is Q. The default ordering is length-lexicographic ordering ("LLEX"). For more information, please check the relevant functions.

• @param G1, G2: two LISTs of non-zero polynomials which generate two two-sided ideals in K<X>. Each polynomial is represented as a LIST of monomials, which are pairs of the form [C, W] where W is a word in <X> and C is the coefficient of W. For example, the polynomial F=xy-y+1 is represented as F:=[[1,"xy"], [-1, "y"], [1,""]].

Since this function is based on Groebner basis computations, we refer users to NC.GB or NC.ReducedGB for information about the following three optional parameters:

• @param DegreeBound

• @param LoopBound

• @param Flag

• @return: a LIST of polynomials, which is a Groebner basis of the intersection of the two-sided ideals (G1) and (G2) if a finite Groebner basis exists, and is a partial Groebner basis otherwise.

#### Example

```NC.SetFp(); -- set default Fp=F2
NC.SetX(<quotes>xyz</quotes>);
F1 := [[1,<quotes>xy</quotes>], [1,<quotes>z</quotes>]];
F2 := [[1,<quotes>yz</quotes>], [1, <quotes>x</quotes>]];
F3 := [[1,<quotes>zx</quotes>], [1,<quotes>y</quotes>]];
G1 := [F1, F2]; -- ideal generated by {xy+z, yz+x}
G2 := [F2, F3]; -- ideal generated by {yz+x, zx+y}
NC.Intersection(G1, G2, 20, 25, 1);
[[[1, <quotes>yzyz</quotes>], [1, <quotes>zyzy</quotes>]], [[1, <quotes>zzyzyy</quotes>], [1, <quotes>yyzy</quotes>], [1, <quotes>zyzz</quotes>], [1, <quotes>yz</quotes>]],
[[1, <quotes>yzzyzy</quotes>], [1, <quotes>yzyy</quotes>], [1, <quotes>zzyz</quotes>], [1, <quotes>zy</quotes>]], [[1, <quotes>x</quotes>], [1, <quotes>yz</quotes>]]]
-------------------------------
Note the following information printed by the server shows it is a partial Groebner basis.
===== 25th Loop =====
Number of elements in (partial) Groebner basis G: 22 -- partial Groebner basis before being interreduced
Number of S-elements: 25/86 -- 25 S-elements have been check, and 61 (=86-25) unchecked S-elements
```