# Singular

##### 7.7.2.0. linReduceIdeal
Procedure from library `bfun.lib` (see bfun_lib).

Usage:
linReduceIdeal(I [,s,t,u]); I an ideal, s,t,u optional ints

Return:
ideal or list, linear reductum (over field) of I by its elements

Purpose:
reduces a list of polys only by linear reductions (no monomial
multiplications)

Note:
If s<>0, a list consisting of the reduced ideal and the coefficient
vectors of the used reductions given as module is returned.
Otherwise (and by default), only the reduced ideal is returned.
If t<>0 (and by default) all monomials are reduced (if possible),
otherwise, only leading monomials are reduced.
If u<>0 (and by default), the ideal is first sorted in increasing order.
If u is set to 0 and the given ideal is not sorted in the way described,
the result might not be as expected.

Display:
If `printlevel`=1, progress debug messages will be printed,
if printlevel>=2, all the debug messages will be printed.

Example:
 ```LIB "bfun.lib"; ring r = 0,(x,y),dp; ideal I = 3,x+9,y4+5x,2y4+7x+2; linReduceIdeal(I); // reduces tails ==> _[1]=0 ==> _[2]=3 ==> _[3]=x ==> _[4]=y4 linReduceIdeal(I,0,0); // no reductions of tails ==> _[1]=0 ==> _[2]=3 ==> _[3]=x+9 ==> _[4]=y4+5x list l = linReduceIdeal(I,1); // reduces tails and shows reductions used l; ==> [1]: ==> _[1]=0 ==> _[2]=3 ==> _[3]=x ==> _[4]=y4 ==> [2]: ==> _[1]=gen(4)-2*gen(3)+3*gen(2)-29/3*gen(1) ==> _[2]=gen(1) ==> _[3]=gen(2)-3*gen(1) ==> _[4]=gen(3)-5*gen(2)+15*gen(1) module M = I; matrix(l[1]) - M*l[2]; ==> _[1,1]=0 ==> _[1,2]=0 ==> _[1,3]=0 ==> _[1,4]=0 ```