# Singular

#### D.2.8.18 subrInterred

Procedure from library `poly.lib` (see poly_lib).

Usage:
subrInterred(mon,sm,iv);
sm: ideal in a ring r with n + s variables,
e.g. x_1,..,x_n and t_1,..,t_s
mon: ideal with monomial generators (not divisible by any of the t_i) such that sm is contained in the module k[t_1,..,t_s]*mon[1]+..+k[t_1,..,t_s]*mon[size(mon)]
iv: intvec listing the variables which are supposed to be used as x_i

Return:
list l:
l[1]=the monomials from mon in the order used
l[2]=their coefficients after interreduction
l[3]=l[1]*l[2]

Purpose:
Do interred only w.r.t. a subset of variables.
The procedure returns an interreduced system of generators of sm considered as a k[t_1,..,t_s]-submodule of the free module k[t_1,..,t_s]*mon[1]+..+k[t_1,..,t_s]*mon[size(mon)]).

Example:
 ```LIB "poly.lib"; ring r=0,(x,y,z),dp; ideal i=x^2+x*y^2,x*y+x^2*y,z; ideal j=x^2+x*y^2,x*y,z; ideal mon=x^2,z,x*y; intvec iv=1,3; subrInterred(mon,i,iv); ==> [1]: ==> _[1,1]=z ==> _[1,2]=xy ==> _[1,3]=x2 ==> [2]: ==> _[1]=gen(1) ==> _[2]=y2*gen(2)-gen(2) ==> _[3]=y*gen(2)+gen(3) ==> [3]: ==> _[1,1]=z ==> _[1,2]=xy3-xy ==> _[1,3]=xy2+x2 subrInterred(mon,j,iv); ==> [1]: ==> _[1,1]=z ==> _[1,2]=xy ==> _[1,3]=x2 ==> [2]: ==> _[1]=gen(1) ==> _[2]=gen(2) ==> _[3]=gen(3) ==> [3]: ==> _[1,1]=z ==> _[1,2]=xy ==> _[1,3]=x2 ```