# Singular

### 7.3.23 reduce (plural)

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 )
reduce ( vector_expression, module_expression, int_expression )
reduce ( ideal_expression, ideal_expression )
reduce ( ideal_expression, ideal_expression, int_expression )
reduce ( module_expression, ideal_expression )
reduce ( module_expression, ideal_expression, int_expression )
reduce ( module_expression, module_expression )
reduce ( module_expression, module_expression, int_expression )

Type:
the type of the first argument
Purpose:
reduces a polynomial, vector, ideal or module to its left normal form with respect to an ideal or module represented by a left Groebner basis, if the second argument is a left Groebner basis.
returns 0 if and only if the polynomial (resp. vector, ideal, module) is an element (resp. subideal, submodule) of the ideal (resp. module).
Otherwise, the result may have no meaning.
The third (optional) argument 1 of type int forces a reduction which considers only the leading term and does no tail reduction.
Note:
The commands reduce and NF are synonymous.
Example:
 ring r=(0,a),(e,f,h),Dp; matrix d[3][3]; d[1,2]=-h; d[1,3]=2e; d[2,3]=-2f; def R=nc_algebra(1,d); setring R; // this algebra is U(sl_2) over Q(a) ideal I = e2, f2, h2-1; I = std(I); // print a compact presentation of I print(matrix(I)); ==> h2-1,fh-f,f2,eh+e,2*ef-h2-h,e2 ideal J = e, h-a; J = std(J); // print a compact presentation of J print(matrix(J)); ==> h+(-a),e poly z=4*e*f+h^2-2*h; // z is the central element of U(sl_2) reduce(z,I); // the central character of I: ==> 3 reduce(z,J); // the central character of J: ==> (a2+2a) poly nz = z - NF(z,J); // nz will belong to J reduce(nz,J); ==> 0 reduce(I,J); ==> _[1]=(a2-1) ==> _[2]=(a-1)*f ==> _[3]=f2 ==> _[4]=0 ==> _[5]=(-a2+a) ==> _[6]=0