The following is wrong. The equation y=b is substituted into the expression:
(%i7) at(diff(f(x,y),x,1,y,1),[x=a,y=b]);
(%o7) 'at('diff(f(x,b),x,1,b,1),[x = a,y = b])
The correct result is
'at('diff(f(x,y),x,1,y,1),[x = a,y = b])
The error is present since Maxima 5.20. The problem is in the routine subst-except-second-arg which has been added with revision 1.37 of comm.lisp. A trace of this routine shows the wrong subsitution:
(%i7) at(diff(f(x,y),x,1,y,1),[x=a,y=b]);
0: (SUBST-EXCEPT-SECOND-ARG $A $X
((%DERIVATIVE SIMP) (($F SIMP) $X $Y) $X 1 $Y 1))
0: SUBST-EXCEPT-SECOND-ARG returned
((%DERIVATIVE SIMP) (($F SIMP) $X $Y) $X 1 $Y 1)
0: (SUBST-EXCEPT-SECOND-ARG $B $Y
((%DERIVATIVE SIMP) (($F SIMP) $X $Y) $X 1 $Y 1))
0: SUBST-EXCEPT-SECOND-ARG returned
((%DERIVATIVE SIMP) (($F SIMP) $X $B) $X 1 $B 1)
(%o7) 'at('diff(f(x,b),x,1,b,1),[x = a,y = b])
Dieter Kaiser
Fixed in comm.lisp revision 1.52.
Closing this bug report as fixed.
Dieter Kaiser