# Singular

##### 7.7.9.0. freeGBasis
Procedure from library `freegb.lib` (see freegb_lib).

Usage:
freeGBasis(L, d); L a list of modules, d an integer

Return:
ring

Assume:
L has a special form. Namely, it is a list of modules, where

- each generator of every module stands for a monomial times coefficient in
free algebra,

- in such a vector generator, the 1st entry is a nonzero coefficient from the
ground field

- and each next entry hosts a variable from the basering.

Purpose:
compute the two-sided Groebner basis of an ideal, encoded by L
in the free associative algebra, up to degree d

Note:
Apply `lst2str` to the output in order to obtain a better readable
presentation

Example:
 ```LIB "freegb.lib"; ring r = 0,(x,y,z),(dp(1),dp(2)); // ring r = 0,(x,y,z),(a(3,0,2), dp(2)); module M = [-1,x,y],[-7,y,y],[3,x,x]; // stands for free poly -xy - 7yy - 3xx module N = [1,x,y,x],[-1,y,x,y]; // stands for free poly xyx - yxy list L; L[1] = M; L[2] = N; // list of modules stands for an ideal in free algebra lst2str(L); // list to string conversion of input polynomials ==> [1]: ==> -xy-7yy+3xx ==> [2]: ==> xyx-yxy def U = freeGBasis(L,5); // 5 is the degree bound lst2str(U); ==> [1]: ==> yyyyy ==> [2]: ==> 22803yyyx+19307yyyy ==> [3]: ==> 1933yyxy+2751yyyx+161yyyy ==> [4]: ==> 22xyy-3yxy-21yyx+7yyy ==> [5]: ==> 3xyx-22xyy+21yyx-7yyy ==> [6]: ==> 3xx-xy-7yy ```