# Singular

### 7.3.5 eliminate (plural)

`Syntax:`
`eliminate (` ideal_expression`,` product_of_ring_variables`)`
`eliminate (` module_expression`,` product_of_ring_variables`)`
`Type:`
the same as the type of the first argument
`Purpose:`
eliminates variables occurring as factors 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.
`Note:`
`eliminate` neither needs a special ordering on the basering nor a Groebner basis as input. Moreover, `eliminate` does not work in non-commutative quotients.
`Remark:`
in a non-commutative algebra, not every subset of a set of variables generates a proper subalgebra. But if it is so, there may be cases, when no elimination is possible. In these situations error messages will be reported.

`Example:`
 ```ring r=0,(e,f,h,a),Dp; matrix d[4][4]; d[1,2]=-h; d[1,3]=2*e; d[2,3]=-2*f; def R=nc_algebra(1,d); setring R; // this algebra is U(sl_2), tensored with K[a] over K option(redSB); option(redTail); poly p = 4*e*f+h^2-2*h - a; // p is a central element with parameter ideal I = e^3, f^3, h^3-4*h, p; // take this ideal // and intersect I with the ring K[a] ideal J = eliminate(I,e*f*h); // if we want substitute 'a' with a value, // it has to be a root of this polynomial J; ==> J[1]=a3-32a2+192a // now we try to eliminate h, // that is we intersect I with the subalgebra S, // generated by e and f. // But S is not closed in itself, since f*e-e*f=-h ! // the next command will definitely produce an error eliminate(I,h); ==> ? no elimination is possible: subalgebra is not admissible ==> ? error occurred in or before ./examples/eliminate_(plural).sing l\ ine 21: `eliminate(I,h);` // since a commutes with e,f,h, we can eliminate it: eliminate(I,a); ==> _[1]=h3-4h ==> _[2]=fh2-2fh ==> _[3]=f3 ==> _[4]=eh2+2eh ==> _[5]=2efh-h2-2h ==> _[6]=e3 ```
See ideal (plural); module (plural); std (plural).