RJF, Thanks for the explanation about why Ratsimp shouldn't in general
return SIMP results. And I did mention that meval calls the general
simplifier.
It seems to me that there is still a bug here, though:
(simplifya ($ratsimp (add 'x (div 1 2)))) =>
((MTIMES SIMP RATSIMP) ((RAT) 1 2)
((MPLUS RATSIMP) ((MTIMES RATSIMP) 2 X) 1))
If the outer MTIMES is marked SIMP, shouldn't all its arguments be
simplified? (Note that the subexpression (add 'x (div 1 2)) does
return a properly simplified expression.) But as Barton asks, can
this ever cause a problem?
> First of all, you should not be providing the SIMP tag yourself.
> You should allow the system to put that tag in. In particular,
> the system has only one copy of (RAT SIMP) and you have put in
> another one.
That is (or should be) only an optimization. I hope that no code in
the system is doing an eq-test on the car of an expression!
As for generating SIMP flags by hand, I agree that it is potentially
hazardous, especially since various flags etc. change what is
considered simplified. This was a test case/example, not production
code.
-s