# Singular

### 5.1.27 eliminate

`Syntax:`
`eliminate (` ideal_expression`,` product_of_ring_variables `)`
`eliminate (` module_expression`,` product_of_ring_variables `)`
`eliminate (` ideal_expression`,` intvec_expression `)`
`eliminate (` module_expression`,` intvec_expression `)`
`eliminate (` ideal_expression`,` product_of_ring_variables`,` intvec_hilb `)`
`eliminate (` module_expression`,` product_of_ring_variables`,` intvec_hilb `)`
`Type:`
the same as the type of the first argument
`Purpose:`
eliminates variables occurring as factors/entries of the second argument from an ideal (resp. a submodule of a free module), by intersecting it (resp. each component of the submodule) with the subring not containing these variables.
`eliminate` does not need a special ordering nor a standard basis as input.
`Note:`
Since elimination is expensive, for homogeneous input it might be useful first to compute the Hilbert function of the ideal (first argument) with a fast ordering (e.g., `dp`). Then make use of it to speed up the computation: a Hilbert-driven elimination uses the intvec provided as the third argument.
If the ideal (resp. module) is not homogeneous with weights 1, this intvec will be silently ignored.
`Example:`
 ``` ring r=32003,(x,y,z),dp; ideal i=x2,xy,y5; eliminate(i,x); ==> _=y5 ring R=0,(x,y,t,s,z),dp; ideal i=x-t,y-t2,z-t3,s-x+y3; eliminate(i,ts); ==> _=y2-xz ==> _=xy-z ==> _=x2-y ideal j=x2,xy,y2; intvec v=hilb(std(j),1); eliminate(j,y,v); ==> _=x2 ```
See hilb; ideal; module; std.

### Misc 