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