Home Online Manual
Top
Back: division (plural)
Forward: envelope
FastBack:
FastForward:
Up: Functions (plural)
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

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 (by means of Groebner bases) is possible; in such situations error messages will be reported. See also ncpreim_lib for the advanced algorithm for elimination and preimage.

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).