blob: 67293827cd64989ac2060ba29622021acb00f82b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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))
|