Home Online Manual
Top
Back: ringlist (plural)
Forward: std (plural)
FastBack: Data types (plural)
FastForward: Mathematical background (plural)
Up: Functions (plural)
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

7.3.25 slimgb (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 and redSB for returning a reduced Groebner basis. The protocol messages of slimgb mean the following:
M[n,m] means a parallel reduction of n elements with m non-zero output elements,
b notices an exchange trick described in the thesis and
e adds a reductor with non-minimal leading term.

slimgb works for grade commutative algebras but not for general GR-algebras. Please use qslimgb instead.

For a detailed commutative example see slim Groebner bases.

Example:
 
LIB "nctools.lib";
LIB "ncalg.lib";
def U = makeUsl(2);
// U is the U(sl_2) algebra
setring U;
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
See option; std (plural).