-----"Robert Dodier" wrote: -----
>OK. Is the new MEQP comparing lambda expressions?
Yes, it *tries* to compare lambda expressions:
(%i2) f : lambda([x,y],x+y)$
(%i3) g : lambda([a,b],a+b)$
(%i4) is(equal(f,g));
(%o4) true
Why do I say *tries*?
(%i7) is(equal(f-g,0));
Maxima was unable to evaluate the predicate:
equal(lambda([x,y],x+y)-lambda([a,b],a+b),0)
The division of labor between meqp and sign isn't
always clear.
>What does the new MEQP do for other kinds of local
>variables, e.g. summation indices?
Other than lambda expressions, it knows nothing about other
dummy variables. Some of this work should be the
responsibility of sign, not meqp.
>Btw what does the current version of the new code
>return for is(equal(true, false)) ?
ick---my code tries to use csign so it ends up in a mess. I'll
fix this (booleans, infinities, und, ...)
Another thing: the user documentation for equal says it uses
ratsimp. I don't think it does:
(%i1) is(equal(1/sqrt(2),sqrt(2)/2));
(%o1) false
(%i2) ratsimp(1/sqrt(2) -sqrt(2)/2);
(%o2) 0
My code *does* use ratsimp. I hope that this is OK?
(defun meqp-by-csign (a b)
(let ((sgn (csign ($ratsimp (sub a b)) ...))
Barton