|  |  7.5.19.0. eliminateNC Procedure from libraryncpreim.lib(see  ncpreim_lib).
 
Example:Usage:
eliminateNC(I,v,eng); I ideal, v intvec, eng optional int
Return:
ideal, I intersected with the subring defined by the variables not
index by the entries of v
Assume:
The entries of v are in the range 1..nvars(basering) and the
corresponding variables generate an admissible subalgebra.
Remarks:
In order to determine the required elimination ordering, a linear
programming problem is solved with the simplex algorithm.
Reference: (GML)
 Unlike eliminate, this procedure will always find an elimination
ordering, if such exists.
 
Note:
If eng<>0, stdis used for Groebner basis computations,
otherwise (and by default)slimgbis used.If printlevel=1, progress debug messages will be printed,
if printlevel>=2, all the debug messages will be printed.
 
 See also:
 eliminate (plural).|  | LIB "ncpreim.lib";
// (Lev): Example 2
ring r = 0,(a,b,x,d),Dp;
matrix D[4][4];
D[1,2] = 3*a; D[1,4] = 3*x^2;
D[2,3] = -x;  D[2,4] = d;     D[3,4] = 1;
def A = nc_algebra(1,D);
setring A; A;
==> // coefficients: QQ considered as a field
==> // number of vars : 4
==> //        block   1 : ordering Dp
==> //                  : names    a b x d
==> //        block   2 : ordering C
==> // noncommutative relations:
==> //    ba=ab+3a
==> //    da=ad+3x2
==> //    xb=bx-x
==> //    db=bd+d
==> //    dx=xd+1
ideal I = a,x;
// Since d*a-a*d = 3*x^2, any admissible ordering has to satisfy
// x^2 < a*d, while any elimination ordering for {x,d} additionally
// has to fulfil a << x and a << d.
// Hence, the weight (0,0,1,1) is not an elimination weight for
// (x,d) and the call eliminate(I,x*d); will produce an error.
eliminateNC(I,3..4);
==> _[1]=a
// This call uses the elimination weight (0,0,1,2), which works.
 | 
 
 |