load("grobner"); deg_a:2; vars_al:makelist(concat (x_,i),i,deg_a); /* varsa:makelist(concat (a,i),i,deg_a); varsb:makelist(concat (b,i),i,deg_a); */ varsa:[a,b]; varsb:[p,q]; f:product((1-vars_al[k]*T),k,1,length(vars_al)); f0:1+sum(varsa[k]*T^k,k,1,deg_a); g:1+sum(varsb[k]*T^k,k,1,length(varsb)); fg:product(subst(vars_al[k]*T,T,g),k,1,length(vars_al)); i_def:expand(f-f0); deg_r:hipow(i_def,T); rel:makelist(coeff(i_def,T,k),k,deg_r); vall: append(vars_al,varsa,varsb); B:poly_buchberger(rel,vall); /* fgr:divide(fg,T^(deg_a+1))[2]; */ fgr:expand(fg); RES0:poly_normal_form(fgr,B,vall); RES1:collectterms(RES0,T); RES2:collectterms(RES1/subst(0,T,RES1));