diff options
Diffstat (limited to 'guile/sat/helpers.scm')
-rw-r--r-- | guile/sat/helpers.scm | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/guile/sat/helpers.scm b/guile/sat/helpers.scm new file mode 100644 index 0000000..6729382 --- /dev/null +++ b/guile/sat/helpers.scm @@ -0,0 +1,19 @@ +(define-module (sat helpers) + #:use-module (sat solver) + #:use-module (srfi srfi-1) + #:export (exactly-one-true)) + +(define (exactly-one-true v) + + ;; At least one of 'v' must be true + (add-clause v) + + ;; At least one of each pair in 'v' must be false + (pair-for-each + (lambda (v1p) + (for-each + (lambda (v2) + (add-clause (list (- (car v1p)) (- v2)))) + (cdr v1p))) + v)) + |