### 5.1.131 reduce

`Syntax:`
  `reduce (` poly_expression`,` ideal_expression `)`
  `reduce (` poly_expression`,` ideal_expression`,` int_expression `)`
  `reduce (` poly_expression`,` poly_expression`,` ideal_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 (` vector_expression`,` poly_expression`,` module_expression `)`
  `reduce (` ideal_expression`,` ideal_expression `)`
  `reduce (` ideal_expression`,` ideal_expression`,` int_expression `)`
  `reduce (` ideal_expression`,` matrix_expression`,` ideal_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 `)`
  `reduce (` module_expression`,` matrix_expression`,` module_expression `)`
  `reduce (` poly/vector/ideal/module`,` ideal/module`,` int`,` intvec `)`
  `reduce (` ideal`,` matrix`,` ideal`,` int `)`
  `reduce (` poly`,` poly`,` ideal`,` int `)`
  `reduce (` poly`,` poly`,` ideal`,` int`,` intvec `)`
`Type:`
  the type of the first argument
`Purpose:`
  reduces a polynomial, vector, ideal or module to its normal form with respect to an ideal or module represented by a standard basis. Returns 0 if and only if the polynomial (resp. vector, ideal, module) is an element (resp. subideal, submodule) of the ideal (resp. module). The result may have no meaning if the second argument is not a standard basis.
  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 non-zero constant multiple of the remainder
  - 8 divide f by a approciate unit 1/(1+..) in reduce(f,I)
  If a second argument `u` of type poly or matrix is given, the first argument `p` is replaced by `p/u`. This works only for zero dimensional ideals (resp. modules) in the third argument and gives, even in a local ring, a reduced normal form which is the projection to the quotient by the ideal (resp. module). One may give a degree bound in the fourth argument with respect to a weight vector in the fifth argument in order have a finite computation. If some of the weights are zero, the procedure may not terminate!
`Note:`
  The commands `reduce` and `NF` are synonymous.
`Example:`

        ring r1 = 0,(z,y,x),ds;
        poly s1=2x5y+7x2y4+3x2yz3;
        poly s2=1x2y2z2+3z8;
        poly s3=4xy5+2x2y2z3+11x10;
        ideal i=s1,s2,s3;
        ideal j=std(i);
        reduce(3z3yx2+7y4x2+yx5+z12y2x2,j);
      ==> -yx5+2401/81y14x2+2744/81y11x5+392/27y8x8+224/81y5x11+16/81y2x14
        reduce(3z3yx2+7y4x2+yx5+z12y2x2,j,1);
      ==> -yx5+z12y2x2
        // 4 arguments:
        ring rs=0,x,ds;
        // normalform of 1/(1+x) w.r.t. (x3) up to degree 5
        reduce(poly(1),1+x,ideal(x3),5);
      ==> // ** _ is no standard basis
      ==> 1-x+x2

See division; ideal; module; poly operations; std; vector.

User manual for Singular version 4.4.1, 2025, generated by texi2html.