Barton,
> Maxima doesn't know the derivative of an 'if then' conditional.
> I don't think there is an easy fix to this.
I think a solution to this is not so far away.
I have been working on code for improved handling of unevaluated conditionals.
With that code in hand, I find
tellsimpafter ('diff ('if aa then bb else cc, xx), delta (aa) + 'if
aa then 'diff (bb, xx) else 'diff (cc, xx));
has the hoped-for effect -- stuff like
'diff ('if x > 0 then x^2 else x^3, x) => delta (x > 0) + 'if x >
0 then 'diff (x^2, x) else 'diff (x^3, x)
%, nouns => delta (x > 0) + 'if x > 0 then 2*x else 3*x^2
We can argue about what is the right definition of diff (if ...),
and we can argue about whether we also want rules for integrate
and other functions, but the key point is that meaningful
operations on conditional expressions are within reach.
I'll post some messages on this topic soon.
For what it's worth,
Robert Dodier