experimental meqp



The function meqp has some known bugs: is(equal(%i,0)) --> sign called on
imaginary argument, for one. I wrote a new version of meqp. A demo:

(%i2) load(meqp.lisp)

(%i3) is(equal(0,%i)) <-- reported bug
(%o3) false

(%i4) is(equal(matrix([x]),rat(matrix([x])))) <-- reported bug
(%o4) true

(%i5) is(equal([a],[a,b])) <--- reported bug
(%o5) false

Are any of the following are extensions to the standard is(equal(..))
useful? Are any misfeatures?

(%i6) assume(equal(a,aa))
(%o6) [equal(a,aa)]
(%i7) is(equal(f(a),f(aa)))
(%o7) true <--- was error or unknown

(%i10) a[1]:1
(%i11) b[1]:1
(%i12) is(equal(a,b))
(%o12) true

(%i13) a[2]:2
(%i14) is(equal(a,b))
(%o14) false

(%i15) f[i]:=i^2
(%i16) g[k]:=k^2
(%i17) is(equal(f,g))
(%o17) true

What bugs in is(equal( ..)) might I have ignored? Except
for test 48 in rtest6a, the new meqp code shows no
errors. I think test 48 in rtest6a is semi-bogus:

assume(not(equal(i,-1)));
[not (equal(i,-1))]$

Surely this should be (works with my meqp code)

assume(not(equal(i,-1)));
'[not (equal(i,-1))]$

or replaced with the rtest trick:

(assume(not(equal(i,-1))),0);
0$

If you would like to look at my 56 lines of code, I'll send
them to you.

Barton