#### D.4.7.2 elimRing

Procedure from library `elim.lib` (see elim_lib).

Usage:
  elimRing(vars [,w,str]); vars = product of variables to be eliminated (type poly), w = intvec (specifying weights for all variables), str = string either "a" or "b" (default: w=ringweights, str="a")

Return:
  a list, say L, with R:=L[1] a ring and L[2] an intvec. The ordering in R is an elimination ordering for the variables appearing in vars depending on "a" resp. "b". Let w1 (resp. w2) be the intvec of weights of the variables to be eliminated (resp. not to be eliminated).
  The monomial ordering of R has always 2 blocks, the first block corresponds to the (given) variables to be eliminated.
  If str = "a" the first block is a(w1,0..0) and the second block is wp(w) resp. ws(w) if the first variable not to be eliminated is local.
  If str = "b" the 1st block has ordering wp(w1) and the 2nd block is wp(w2) resp. ws(w2) if the first variable not to be eliminated is local.
  If the basering is a quotient ring P/Q, then R is also a quotient ring with Q replaced by a standard basis of Q w.r.t. the new ordering (parameters are not touched).
  The intvec L[2] is the intvec of variable weights (or the given w) with weights <= 0 replaced by 1.

Purpose:
  Prepare a ring for eliminating vars from an ideal/module by computing a standard basis in R with a fast monomial ordering. This procedure is used by the procedure elim.

Example:

    LIB "elim.lib";
    ring R = 0,(x,y,z,u,v),(c,lp);
    def P = elimRing(yu);  P;
    ==> [1]:
    ==>    // coefficients: QQ considered as a field
    ==> // number of vars : 5
    ==> //        block   1 : ordering a
    ==> //                  : names    y u x z v
    ==> //                  : weights  1 1 0 0 0
    ==> //        block   2 : ordering dp
    ==> //                  : names    y u x z v
    ==> //        block   3 : ordering C
    ==> [2]:
    ==>    1,1,1,1,1
    intvec w = 1,1,3,4,5;
    elimRing(yu,w);
    ==> [1]:
    ==>    // coefficients: QQ considered as a field
    ==> // number of vars : 5
    ==> //        block   1 : ordering a
    ==> //                  : names    y u x z v
    ==> //                  : weights  1 4 0 0 0
    ==> //        block   2 : ordering wp
    ==> //                  : names    y u x z v
    ==> //                  : weights  1 1 3 4 5
    ==> //        block   3 : ordering C
    ==> [2]:
    ==>    1,1,3,4,5
    ring S =  (0,a),(x,y,z,u,v),ws(1,2,3,4,5);
    minpoly = a2+1;
    qring T = std(ideal(x+y2+v3,(x+v)^2));
    def Q = elimRing(yv)[1];
    setring Q; Q;
    ==> // coefficients: QQ[a]/(a2+1) considered as a field
    ==> // number of vars : 5
    ==> //        block   1 : ordering a
    ==> //                  : names    y v x z u
    ==> //                  : weights  2 5 0 0 0
    ==> //        block   2 : ordering ws
    ==> //                  : names    y v x z u
    ==> //                  : weights  1 2 3 4 5
    ==> //        block   3 : ordering C
    ==> // quotient ring from ideal
    ==> _[1]=y2+2*yu+u2
    ==> _[2]=v2+y+u3

User manual for Singular version 4.4.1, 2025, generated by texi2html.