> assume(a+z>0,b-z>0)$
> (C7) is((a+z)+(b-z)>0);
> ...MACSYMA execute a simplification (a+z)+(b-z) => b + a ,
> which prevents it from evaluating (C7) exactly the same way
> as it does for "is(a+b>0)" in (C3), above. Is this type of
> behavior required for some deep reasons, and could
> it be switched off and on by means available in the current
> version of Maxima?
The simplification can be turned off using Simp:false. But many parts
of Maxima will not work correctly with Simp=false. In particular, with
Simp=false, neither is((a+z)+(b-z)>0) nor is((a+z)*(b-z)>0) is
evaluated. I don't think there is any way to 'convince' IS to handle
this case correctly.
Indeed, the "is" subsystem seems to be rather weak (cf bug report
769910). For example:
assume(p>0)
assume(p*q>0)
sign(q) => PNZ (should be POS)
and
assume(a*b>0)
asksign(a^2*b^2) =>
Is a*b zero or nonzero (!!!)
I have not looked into the IS code (compar.lisp). Some of these look
like fairly simple bugs, others may be more subtle bugs (that is, the
code was intended to handle the case, but messes up somehow), or perhaps
were never part of the design of the code.
> would be preferrable to have a uniform format when presenting
> inequalities. Say, zero stands at the right hand side always.
Interesting idea. I don't know how hard it would be to implement this.
Currently assume canonicalizes for its own internal convenience.
facts() => [z + a > 0, b > z]
facts(a) => []
This looks like a bug. Could you please report it? (Run bug_report()
for instructions.)
-s