conditionals and bad plist



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