Home Online Manual
Top
Back: blowup0
Forward: elim
FastBack:
FastForward:
Up: elim_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.4.5.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
==> // 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
==> // 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)
==> // 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