fourier_elim を懐柔する

abs や max,min も気軽に使えるよう,fourier_elim を内蔵した fqe を作りました.

f2q(f):=subst([universalset=true,emptyset=false,"or"="%or","["="%and"],f)$

qfq(f):=block([g],
if op(f)="%and" then (g:args(f),f2q(fourier_elim(g,listofvars(g))))
else f2q(fourier_elim(f,listofvars(f))))$

fqe(L,F):=
qe(L,scanmap(lambda([f],if not(atom(f) or freeof(abs,max,min,dispform(f,all))) then qfq(f) else f),F))$