# Singular

#### D.8.2.4 elimpartanyr

Procedure from library `presolve.lib` (see presolve_lib).

Usage:
elimpartanyr(i [,p,e] ); i=ideal, p=polynomial, e=integer
p: product of vars to be eliminated,
e =0: substitute from linear part of i (same as elimlinearpart)
e!=0: eliminate also by direct substitution
(default: p=product of all vars, e=1)

Return:
list of 6 objects:
 ``` [1]: (interreduced) ideal obtained by substituting from i those vars appearing in p, which occur in the linear part of i (or which can be expressed directly in the remaining variables, if e!=0) [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 [6]: int, # of vars considered for substitution (= # of factors of p) ```
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:
the procedure uses `execute` to create a ring with ordering dp and vars placed correctly and then applies `elimpart`.

Example:
 ```LIB "presolve.lib"; ring s=0,(x,y,z),dp; ideal i = x3+y2+z,x2y2+z3,y+z+1; elimpartanyr(i,z); ==> [1]: ==> _[1]=x3+y2-y-1 ==> _[2]=x2y2-y3-3y2-3y-1 ==> [2]: ==> _[1]=z ==> [3]: ==> _[1]=y+z+1 ==> [4]: ==> _[1]=0 ==> _[2]=x ==> _[3]=y ==> [5]: ==> _[1]=-y-1 ==> _[2]=x ==> _[3]=y ==> [6]: ==> 1 ```