While we are on the topic of 'case' vs 'if then else',
consider this bug (or these bugs):
(%i1) prederror : false$
OK more or less:
(%i2) if f(k) then 0 else %pi;
(%o2) if unknown then 0 else %pi
But not OK:
(%i3) if f(k) + 1 then 0 else %pi;
Incorrect syntax: Found algebraic expression where logical expression
expected
I see no reason for the syntax error. Definitely not OK:
(%i3) if (f(k) + 1) then 0 else %pi;
Maxima encountered a Lisp error:
Error in PROGN [or a callee]: Bad plist ($K)
The bad plist error seems to come from mevalp:
OK:
(%i6) ?mevalp(f(k));
(%o6) unknown
Not OK:
(%i7) ?mevalp(f(k)+1);
Maxima encountered a Lisp error:
Error in PROGN [or a callee]: Bad plist ($K)
Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.
Barton