# Singular          #### D.8.2.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:
 ``` : 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) : ideal, variables which have been substituted : ideal, i-th element defines substitution of i-th var in  : ideal of variables of basering, substituted ones are set to 0 : ideal, describing the map from the basering, say k[x(1..m)], to itself onto k[..variables from ..] and  is the image of i ```
The ideal i is generated by  and  in k[x(1..m)], the map  maps  to 0, hence induces an isomorphism
 ``` k[x(1..m)]/i -> k[..variables from ..]/ ```

Note:
Applying elimpart to interred(i) may result in more substitutions. However, interred may be more expansive than elimpart for big ideals

Example:
 ```LIB "presolve.lib"; ring s=0,(u,x,y,z),dp; ideal i = xy2-xu4-x+y2,x2y2+z3+zy,y+z2+1,y+u2; elimpart(i); ==> : ==> _=u2-z2-1 ==> _=u12-u2z+z3 ==> : ==> _=y ==> _=x ==> : ==> _=u2+y ==> _=-u4+x ==> : ==> _=u ==> _=0 ==> _=0 ==> _=z ==> : ==> _=u ==> _=u4 ==> _=-u2 ==> _=z i = interred(i); i; ==> i=z2+y+1 ==> i=y2-x ==> i=u2+y ==> i=x3+z3+yz elimpart(i); ==> : ==> _=u2-z2-1 ==> _=u12-u2z+z3 ==> : ==> _=x ==> _=y ==> : ==> _=-y2+x ==> _=u2+y ==> : ==> _=u ==> _=0 ==> _=0 ==> _=z ==> : ==> _=u ==> _=u4 ==> _=-u2 ==> _=z elimpart(i,2); ==> : ==> _=z2+y+1 ==> _=u2+y ==> _=y6+z3+yz ==> : ==> _=x ==> : ==> _=-y2+x ==> : ==> _=u ==> _=0 ==> _=y ==> _=z ==> : ==> _=u ==> _=y2 ==> _=y ==> _=z ```

### Misc 