Fix the bogus translations of <= and >=
commitcf7c667c46ec8d4c1d53b9e88c1f81cc8be4b091
authorKris Katterjohn <katterjohn@gmail.com>
Sun, 13 Nov 2022 04:52:51 +0000 (12 23:52 -0500)
committerKris Katterjohn <katterjohn@gmail.com>
Sun, 13 Nov 2022 04:52:51 +0000 (12 23:52 -0500)
treefe0e79b5f2074f7f27edd215e6b88368c0ec4911
parent7f12bb7f41a3ced16b9f21ba851220397b68620e
Fix the bogus translations of <= and >=

The translation of <= has been similar to > followed by not (TRP-NOT),
and similarly the translation of >= has been similar to < followed by
not.  This is wrong:

(%i1) foo () := is (%i <= 1)$

(%i2) foo ();
(%o2) false

(%i3) translate (foo)$

(%i4) foo ();
(%o4) true

Also the translator basically assumed that prederror would be true.
The way the not used here was implemented (TRP-NOT), it would behave
like NOT when given a boolean value but otherwise it would simply
return its argument unchanged.  This is not a problem for is/maybe,
but after an upcoming commit (to make if honor prederror) this could
lead to bogus results in conditionals when prederror is false.

Now we translate <= and >= directly, using TRP-INEQUALITY (introduced
in commit 7f12bb7f).

No problems with the test suite, share test suite or rtest_translator.
New tests have been added to rtest_translator.
src/trpred.lisp
tests/rtest_translator.mac