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