
7.8.2 reduce (letterplace)
Syntax:
reduce ( poly_expression, ideal_expression )
reduce ( poly_expression, ideal_expression, int_expression )
reduce ( vector_expression, ideal_expression )
reduce ( vector_expression, ideal_expression, int_expression )
reduce ( vector_expression, module_expression, int_expression )
reduce ( ideal_expression, ideal_expression )
reduce ( ideal_expression, ideal_expression, int_expression )
Type:
 the type of the first argument
Purpose:
 reduces a polynomial, vector, or ideal (the first argument) to its twosided normal form with
respect to the second argument, meant to be an ideal, represented by its twosided Groebner basis
(otherwise, the result may have no meaning).
returns 0 if and only if the polynomial (resp. vector, ideal)
is an element (resp. subideal) of the ideal.
The third (optional) argument of type int modifies the behavior:
 0
default
 1
consider only the leading term and do no tail reduction.
 2
tail reduction:n the local/mixed ordering case: reduce also with bad ecart
 4
reduce without division, return possibly a nonzero constant multiple of the remainder
Note:
 The commands
reduce and NF are synonymous.
Note:
 A twosided Groebner presentation of a polynomial with respect to a twosided ideal
can be computed by the procedure lpDivision from freegb_lib.
Example:
 LIB "freegb.lib";
ring r = 0,(x,y),dp;
def R = freeAlgebra(r,5); setring R;
ideal I = x*x + y*y  1; // 2D sphere
ideal J = twostd(I); // computes a twosided Groebner basis
J; // it is finite and nice
==> J[1]=x*x+y*y1
==> J[2]=y*y*xx*y*y
poly g = x*y*y  y*y*x;
reduce(g,J); // 0, hence g belongs to J
==> 0
poly h = x*y*y*x  y*x*x;
reduce(h,J); // the rest of twosided division of h by J
==> y*y*y*y+y*y*y+y*yy
qring Q = J; // swith to K<x,y>/J
reduce(x*y*y  y*y*x,twostd(0)); //image of g above
==> 0
reduce(x*y*y*x  y*x*x,std(0)); //image of h above
==> y*y*y*y+y*y*y+y*yy

See also
twostd (letterplace).
