Maxima 5.43.0 http://maxima.sourceforge.net
using Lisp SBCL 1.4.14
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) rel: [equal(i1+i2,i3),equal(i1-i3,i2),equal(i1,i2+i3)];
map('assume,rel) =>
[[equal((- i3) + i2 + i1, 0)], [equal((- i3) - i2 + i1, 0)], [equal((- i3) - i2 + i1, 0)]]
<<< has accepted all these assertions
map('is,rel) => [true, unknown, unknown]
<<< doesn't recognize the exact cases that were asserted
This does NOT happen if you don't assume equal(i1+i2,i3).
For me assume() works on some sums:
and
But the assume(equal(something)) syntax used in the original ticket seems not to be supported:
Something to investigate is whether it makes a difference if the names of the variables i1, i2, i3 are permuted.
The assume database is an ordered heap, if I understand the implementation correctly. Exactly where in the heap a new assumption is placed probably depends on variable ordering, and in turn that probably has an effect on whether
is
can make sense of a query. Just guessing at this point.