假设我有以下问题(我已经简化了我的问题)
;; declare variables
(declare-const X0 Int)
(assert (>= X0 0))
(assert (<= X0 1))
(declare-const X1 Int)
(assert (>= X1 0))
(assert (<= X1 1))
(declare-const X2 Int)
(assert (>= X2 0))
(assert (<= X2 1))
;; two sat checks
(push)
(assert (= (0 (+ X1 X2))))
(check-sat)
(pop)
(push)
(assert (= (0 (+ X1 X2 X3))))
(check-sat)
(pop)
如果第一次SAT检查是未饱和/饱和,我想做的是跳过第二次SAT检查。是否有可能做到这一点?我相信如果我将 Z3 与 python 一起使用(运行 sat 检查,获取结果,并在结果上使用 python if 语句来确定是否运行第二次检查),我可以做到这一点,但我想用 smt 做到这一点-lib。这(很容易)可能吗?