|
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 "ncalg.lib";
LIB "nctools.lib";
==> // ** redefining Gweights **
==> // ** redefining Gweights **
==> // ** redefining weightedRing **
==> // ** redefining weightedRing **
==> // ** redefining Cij **
==> // ** redefining Ct **
==> // ** redefining SimplMat **
==> // ** redefining weightvector **
==> // ** redefining ncRelations **
==> // ** redefining ncRelations **
==> // ** redefining findimAlgebra **
==> // ** redefining findimAlgebra **
==> // ** redefining isCentral **
==> // ** redefining isCentral **
==> // ** redefining UpOneMatrix **
==> // ** redefining UpOneMatrix **
==> // ** redefining ndcond **
==> // ** redefining ndcond **
==> // ** redefining Weyl **
==> // ** redefining Weyl **
==> // ** redefining makeHeisenberg **
==> // ** redefining makeHeisenberg **
==> // ** redefining superCommutative **
==> // ** redefining superCommutative **
==> // ** redefining SuperCommutative **
==> // ** redefining SuperCommutative **
==> // ** redefining ParseSCA **
==> // ** redefining AltVarStart **
==> // ** redefining AltVarStart **
==> // ** redefining AltVarEnd **
==> // ** redefining AltVarEnd **
==> // ** redefining IsSCA **
==> // ** redefining IsSCA **
==> // ** redefining Exterior **
==> // ** redefining Exterior **
==> // ** redefining makeWeyl **
==> // ** redefining makeWeyl **
==> // ** redefining isNC **
==> // ** redefining isNC **
==> // ** redefining rightStd **
==> // ** redefining rightStd **
==> // ** redefining rightSyz **
==> // ** redefining rightSyz **
==> // ** redefining rightNF **
==> // ** redefining rightNF **
==> // ** redefining rightModulo **
==> // ** redefining rightModulo **
==> // ** redefining isCommutative **
==> // ** redefining isCommutative **
==> // ** redefining isWeyl **
==> // ** redefining isWeyl **
==> // ** redefining moduloSlim **
==> // ** redefining moduloSlim **
==> // ** redefining makeModElimRing **
==> // ** redefining makeModElimRing **
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;
==> // characteristic : 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).
|