D.7.1.3 elimpart
................
Procedure from library presolve.lib (see presolve_lib).

Usage:
elimpart(i [,n,e] ); i=ideal, n,e=integers

n : only the first n vars are considered for substitution,

e =0: substitute from linear part of i (same as elimlinearpart)

e!=0: eliminate also by direct substitution

(default: n = nvars(basering), e = 1)

Return:
list of 5 objects:
    [1]: ideal obtained by substituting from the first n variables those
       from i, which appear in the linear part of i (or, if e!=0, which
       can be expressed directly in the remaining vars)
  [2]: ideal, variables which have been substituted
  [3]: ideal, i-th element defines substitution of i-th var in [2]
  [4]: ideal of variables of basering, substituted ones are set to 0
  [5]: ideal, describing the map from the basering, say k[x(1..m)], to
       itself onto k[..variables fom [4]..] and [1] is the image of i
  
The ideal i is generated by [1] and [3] in k[x(1..m)], the map [5]
maps [3] to 0, hence induces an isomorphism
              k[x(1..m)]/i -> k[..variables fom [4]..]/[1]
  

Note:
If the basering has ordering (c,dp), this is faster for big ideals,
since it avoids internal ring change and mapping.

Example:
LIB "presolve.lib";
ring s=0,(x,y,z),dp;
ideal i =x2+y2,x2+y+1;
elimpart(i,3,0);
==> [1]:
==>    _[1]=y2-y-1
==>    _[2]=x2+y+1
==> [2]:
==>    _[1]=0
==> [3]:
==>    _[1]=0
==> [4]:
==>    _[1]=x
==>    _[2]=y
==>    _[3]=z
==> [5]:
==>    _[1]=x
==>    _[2]=y
==>    _[3]=z
elimpart(i,3,1);
==> [1]:
==>    _[1]=x4+3x2+1
==> [2]:
==>    _[1]=y
==> [3]:
==>    _[1]=x2+y+1
==> [4]:
==>    _[1]=x
==>    _[2]=0
==>    _[3]=z
==> [5]:
==>    _[1]=x
==>    _[2]=-x2-1
==>    _[3]=z

<font size="-1">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; User manual for <a href="http://www.singular.uni-kl.de/"><i>Singular</i></a> version 2-0-4, October 2002,
generated by <a href="http://www.gnu.org/software/texinfo/"><i>texi2html</i></a>.
</font>

</body>
</html>
