P.S. A simple cure: idiff(e,y,x) := block([g : gensym()], e : subst(y=g,e), funmake(nounify('diff),[y,x])=-subst(g=y, diff(e,x)/diff(e,g))); --Barton ________________________________