Top
Back: A.9 Finite fields
Forward: A.11 Free resolution
FastBack: A. Examples
FastForward: B. Polynomial data
Up: A. Examples
Top: Singular 2-0-4 Manual
Contents: Table of Contents
Index: F. Index
About: About This Document

A.10 Elimination

Elimination is the algebraic counterpart of the geometric concept of projection. If $f=(f_1,\ldots,f_n):k^r\rightarrow k^n$ is a polynomial map, the Zariski-closure of the image is the zero-set of the ideal

\begin{displaymath}
\displaylines{
j=J \cap k[x_1,\ldots,x_n], \;\quad\hbox{\rm ...
...n(t_1,\ldots,t_r))\subseteq
k[t_1,\ldots,t_r,x_1,\ldots,x_n]
}
\end{displaymath}

i.e, of the ideal j obtained from J by eliminating the variables $t_1,\ldots,t_r$. This can be done by computing a standard basis of J with respect to a product ordering where the block of t-variables precedes the block of x-variables and then selecting those polynomials which do not contain any t. In SINGULAR the most convenient way is to use the eliminate command. In contrast to the first method, with eliminate the result needs not be a standard basis in the given ordering. Hence, there may be cases where the first method is the preferred one.

WARNING: In the case of a local or a mixed ordering, elimination needs special care. f may be considered as a map of germs $f:(k^r,0)\rightarrow(k^n,0)$, but even if this map germ is finite, we are in general not able to compute the image germ because for this we would need an implementation of the Weierstrass preparation theorem. What we can compute, and what eliminate actually does, is the following: let V(J) be the zero-set of J in $k^r\times(k^n,0)$, then the closure of the image of V(J) under the projection

\begin{displaymath}\hbox{pr}:k^r\times(k^n,0)\rightarrow(k^n,0)\end{displaymath}

can be computed. Note that this germ contains also those components of V(J) which meet the fiber of pr outside the origin. This is achieved by an ordering with the block of t-variables having a global ordering (and preceding the x-variables) and the x-variables having a local ordering. In a local situation we propose eliminate with ordering ls.

In any case, if the input is weighted homogeneous (=quasihomogeneous), the weights given to the variables should be chosen accordingly. SINGULAR offers a function weight which proposes, given an ideal or module, integer weights for the variables, such that the ideal, resp. module, is as homogeneous as possible with respect to these weights. The function finds correct weights, if the input is weighted homogeneous (but is rather slow for many variables). In order to check, whether the input is quasihomogeneous, use the function qhweight, which returns an intvec of correct weights if the input is quasihomogeneous and an intvec of zeros otherwise.

Let us give two examples:

  1. First we compute the equations of the simple space curve $\hbox{T}[7]^\prime$ consisting of two tangential cusps given in parametric form.
  2. We compute weights for the equations such that the equations are quasihomogeneous w.r.t. these weights.
  3. Then we compute the tangent developable of the rational normal curve in $P^4$.
 
  // 1. Compute equations of curve given in parametric form:
  // Two transversal cusps in (k^3,0):
  ring r1 = 0,(t,x,y,z),ls;
  ideal i1 = x-t2,y-t3,z;        // parametrization of the first branch
  ideal i2 = y-t2,z-t3,x;        // parametrization of the second branch
  ideal j1 = eliminate(i1,t);
  j1;                            // equations of the first branch
→ j1[1]=z
→ j1[2]=y2-x3
  ideal j2 = eliminate(i2,t);
  j2;                            // equations of the second branch
→ j2[1]=x
→ j2[2]=z2-y3
  // Now map to a ring with only x,y,z as variables and compute the
  // intersection of j1 and j2 there:
  ring r2 = 0,(x,y,z),ds;
  ideal j1= imap(r1,j1);         // imap is a convenient ringmap for
  ideal j2= imap(r1,j2);         // inclusions and projections of rings
  ideal i = intersect(j1,j2);
  i;                             // equations of both branches
→ i[1]=z2-y3+x3y
→ i[2]=xz
→ i[3]=xy2-x4
→ i[4]=x3z
  //
  // 2. Compute the weights:
  intvec v= qhweight(i);         // compute weights
  v;
→ 4,6,9
  //
  // 3. Compute the tangent developable
  // The tangent developable of a projective variety given parametrically
  // by F=(f1,...,fn) : P^r --> P^n is the union of all tangent spaces
  // of the image. The tangent space at a smooth point F(t1,...,tr)
  // is given as the image of the tangent space at (t1,...,tr) under
  // the tangent map (affine coordinates)
  //   T(t1,...,tr): (y1,...,yr) --> jacob(f)*transpose((y1,...,yr))
  // where jacob(f) denotes the jacobian matrix of f with respect to the
  // t's evaluated at the point (t1,...,tr).
  // Hence we have to create the graph of this map and then to eliminate
  // the t's and y's.
  // The rational normal curve in P^4 is given as the image of
  //        F(s,t) = (s4,s3t,s2t2,st3,t4)
  // each component being homogeneous of degree 4.
  ring P = 0,(s,t,x,y,a,b,c,d,e),dp;
  ideal M = maxideal(1);
  ideal F = M[1..2];     // take the 1st two generators of M
  F=F^4;
  // simplify(...,2); deletes 0-columns
  matrix jac = simplify(jacob(F),2);
  ideal T = x,y;
  ideal J = jac*transpose(T);
  ideal H = M[5..9];
  ideal i = H-J;         // this is tricky: difference between two
                         // ideals is not defined, but between two
                         // matrices. By automatic type conversion
                         // the ideals are converted to matrices,
                         // subtracted and afterwards converted
                         // to an ideal. Note that '+' is defined
                         // and adds (concatenates) two ideals
  i;
→ i[1]=-4s3x+a
→ i[2]=-3s2tx-s3y+b
→ i[3]=-2st2x-2s2ty+c
→ i[4]=-t3x-3st2y+d
→ i[5]=-4t3y+e
  // Now we define a ring with product ordering and weights 4
  // for the variables a,...,e.
  // Then we map i from P to P1 and eliminate s,t,x,y from i.
  ring P1 = 0,(s,t,x,y,a,b,c,d,e),(dp(4),wp(4,4,4,4,4));
  ideal i = fetch(P,i);
  ideal j= eliminate(i,stxy);    // equations of tangent developable
  j;
→ j[1]=3c2-4bd+ae
→ j[2]=2bcd-3ad2-3b2e+4ace
→ j[3]=8b2d2-9acd2-9b2ce+12ac2e-2abde
  // We can use the product ordering to eliminate s,t,x,y from i
  // by a std-basis computation.
  // We need proc 'nselect' from elim.lib.
  LIB "elim.lib";
  j = std(i);                    // compute a std basis j
  j = nselect(j,1,4);            // select generators from j not
  j;                             // containing variable 1,...,4
→ j[1]=3c2-4bd+ae
→ j[2]=2bcd-3ad2-3b2e+4ace
→ j[3]=8b2d2-9acd2-9b2ce+12ac2e-2abde

Top Back: A.9 Finite fields Forward: A.11 Free resolution FastBack: A. Examples FastForward: B. Polynomial data Up: A. Examples Top: Singular 2-0-4 Manual Contents: Table of Contents Index: F. Index About: About This Document
            User manual for Singular version 2-0-4, October 2002, generated by texi2html.