; rep.: p -> q is (~p v q) or ((not p) q) .
; example: (resolve '((not p) q) '(r (not q)))
(defun resolve (ca cb)
(let (tmp)
(if (setq tmp (resolver ca cb))
(unless (resolver cb ca) tmp)
(resolver cb ca)) ))
; resolve neg. of ca with pos of cb:
(defun resolver (ca cb)
(let (pairs)
(dolist (lit ca)
(if (and (consp lit)
(eq (car lit) 'not)
(member (cadr lit) cb))
(push lit pairs)) )
(if (and pairs (null (cdr pairs)))
(or (union (remove (car pairs) ca)
(remove (cadar pairs) cb)
:test #'equal)
'box)) ))
Contents    Page-10    Prev    Next    Page+10    Index