|  |  7.3.25 slimgb (plural) 
See
 option;
 std (plural).Syntax:slimgb (ideal_expression)
 slimgb (module_expression)
Type:same type as argument
Purpose:returns a left Groebner basis of a left ideal or module with respect to the
global monomial ordering of the basering.
Note:The commutative algorithm is described in the diploma thesis of Michael Brickenstein "Neue Varianten zur Berechnung von Groebnerbasen",
written 2004 under supervision of G.-M. Greuel in Kaiserslautern.
It is designed to keep polynomials or vectors slim (short with small coefficients).
Currently best results are examples over function fields (parameters).
 
The current implementation may not be optimal for weighted degree orderings.
 
The program only supports the options prot, which will give protocol output andredSBfor returning a reduced Groebner basis.
The protocol messages ofslimgbmean the following:
 M[n,m]means a parallel reduction ofnelements withmnon-zero output elements,
 bnotices an exchange trick described in the thesis and
 eadds a reductor with non-minimal leading term. 
slimgbworks for grade commutative algebras but not for general GR-algebras.
Please useqslimgbinstead. 
For a detailed commutative example see  slim Groebner bases.
 
Example:|  | LIB "nctools.lib";
LIB "ncalg.lib";
def U = makeUsl(2); setring U;
// U is the U(sl_2) algebra
ideal I = e^3, f^3, h^3-4*h;
option(redSB);
ideal J = slimgb(I);
J;
==> J[1]=h3-4h
==> J[2]=fh2-2fh
==> J[3]=eh2+2eh
==> J[4]=2efh-h2-2h
==> J[5]=f3
==> J[6]=e3
// compare slimgb with std:
ideal K = std(I);
print(matrix(NF(K,J)));
==> 0,0,0,0,0,0
print(matrix(NF(J,K)));
==> 0,0,0,0,0,0
// hence both Groebner bases are equal.
// Another example for exterior algebras
ring r;
def E = Exterior(); setring E; E;
==> // coefficients: ZZ/32003
==> // number of vars : 3
==> //        block   1 : ordering dp
==> //                  : names    x y z
==> //        block   2 : ordering C
==> // noncommutative relations:
==> //    yx=-xy
==> //    zx=-xz
==> //    zy=-yz
==> // quotient ring from ideal
==> _[1]=z2
==> _[2]=y2
==> _[3]=x2
slimgb(xy+z);
==> _[1]=yz
==> _[2]=xz
==> _[3]=xy+z
 | 
 
 |