| ##### 7.5.19.0. eliminateNC Procedure from library `ncpreim.lib` (see ncpreim_lib). 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, `std` is used for Groebner basis computations, otherwise (and by default) `slimgb` is used. If printlevel=1, progress debug messages will be printed, if printlevel>=2, all the debug messages will be printed. Example:
    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
    ==> // 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.
See also: eliminate (plural).

User manual for Singular version 4.4.0, 2024, generated by texi2html.