Home / Computer science / SAT solver / Practice implementation: Emacs Lisp
Arc consistency: Creating queue
AC3 queue of variable-clause pairs
(defun my-sat-queue (clauses)
"Return a list of all variable-clause pairs in CLAUSES."
(mapcan (lambda (clause)
(mapcar (lambda (literal)
(let ((variable (abs literal)))
(cons variable clause)))
clause))
clauses))
(ert-deftest my-sat-queue ()
(should (equal (my-sat-queue '((1 2) (2 3)))
'((1 . (1 2))
(2 . (1 2))
(2 . (2 3))
(3 . (2 3))))))
(ert-deftest my-sat-queue/negated-literals ()
(should (equal (my-sat-queue '((1 -2 3)))
'((1 . (1 -2 3))
(2 . (1 -2 3))
(3 . (1 -2 3))))))