(This is a follow-up bug to https://sourceforge.net/p/maxima/bugs/365.)
orderlessp is still not transitive, causing the simplifier to enter a cycle when presented with certain expressions, with the order of factors or summands rotating. One consequence of this is (probably) that fullratsimp never stops sometimes, because the expression keeps changing.
An example for non-transitivity is:
(%i1) orderlessp(A(w*(x-1)), x);
(%o1) true
(%i2) orderlessp(x, A(x-1));
(%o2) true
(%i3) orderlessp(A(w*(x-1)), A(x-1));
(%o3) false
Comment by Robert Dodier:
I believe the bug originates from this:
> (%i1) ?great(x, A(x-1));
> (%o1) false
> (%i2) ?great(A(x-1), A(w*(x-1)));
> (%o2) false
> (%i3) ?great(A(w*(x-1)), x);
> (%o3) false
which implies these three terms have equal rank, so sorting them in
SIMPTIMESwon't change their order, whatever it happens to be.
Or, written in a different way:
(%i1) [X,Y,Z]:[x,A(x-1),A(w*(x-1))]$
(%i2) ?great(Y,X);
(%o2) true
(%i3) ?great(Z,Y);
(%o3) true
(%i4) ?great(Z,X);
(%o4) false
So Y>X and Z>Y, but not Z>X!
[af38d28ca56623451bb94db9afb47eb3c405f82a]
use ordhack consistently whenever we see mplus/mtimes
Related
Commit: [af38d2]
Re-opening this ticket because unfortunately
orderlesspis still not transitive, as shown by Stavros Macrakis:A test has been added to the test suite.
Here is a proposal that would resolve the non-transitive case above,
resolve bug [#3237], and generally simplify the logic of orderlessp:
This causes a total of 78 failures in the test suite, which are mostly syntactic. Any feedback on this idea?
Related
Bugs:
#3237This particular bug is fixed in current Maxima, therefore closing the ticket.