|  |  7.8.9 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 two-sided normal form with
respect to the second argument, meant to be an ideal, represented by its two-sided 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: in the local/mixed ordering case: reduce also with bad ecart
4
reduce without division, return possibly a non-zero constant multiple of the remainder
Note:The commands reduceandNFare synonymous.Note:A two-sided Groebner presentation of a polynomial with respect to a two-sided ideal
can be computed by the procedure  lpDivision from  freegb_lib.
Example:|  | LIB "freegb.lib";
ring r = 0,(x,y),dp;
ring R = freeAlgebra(r,5);
ideal I = x*x + y*y - 1; // 2D sphere
ideal J = twostd(I); // computes a two-sided Groebner basis
J; // it is finite and nice
==> J[1]=x*x+y*y-1
==> J[2]=y*y*x-x*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 two-sided division of h by J
==> -y*y*y*y+y*y*y+y*y-y
qring Q = J; // switch 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*y-y
 | 
 
See also
 lift (letterplace).
 
 |