is(equal(exp(%i*x),0)) ---> unknown



OK:

 (%i1) is(equal(exp(x),0));
 (%o1) false

Could be better (0 isn't in the range of any exponential function):

 (%i2) is(equal(exp(%i*x),0));
 (%o2) unknown

The proposed (below) meqp-by-csign function passes the test suite. Does
anybody
see any potential problems with this code? (infinities, ...)

(defun meqp-by-csign (z a b)
  (let ((sgn) ($niceindicespref `((mlist) ,(gensym) ,(gensym) ,(gensym))))
    (setq z (ratdisrep z)) ;; new, but not sure it's needed
    (cond ((and (mexptp z) (eq t (mnqp (second z) 0))) nil) ;; new
    stuff))))
   (t
    (setq z ($niceindices z))
    (setq sgn (csign (sratsimp z)))
    (cond ((eq '$zero sgn) t)
   ((and (eq sgn t) (islinear z '$%i))
    (let ((r (meqp ($realpart z) 0))
   (i (meqp ($imagpart z) 0)))
      (cond ((or (eq r nil) (eq i nil)) nil)
     ((and (eq r t) (eq i t)) t)
     (t `(($equal) ,a ,b)))))
   ((member sgn '($pos $neg $pn)) nil)
   (t `(($equal) ,a ,b)))))))


Barton