从.smt2文件中使用Z3获取UNSAT Core

时间:2015-06-02 20:59:19

标签: z3

我需要从z3获得不满意的核心。 .smt2文件的内容是:
(set-option :produce-unsat-cores true) (set-logic QF_AUFBV ) (declare-fun a () (Array (_ BitVec 32) (_ BitVec 8) ) ) ; Constraints (! (assert (bvslt (concat (select a (_ bv3 32) ) (concat (select a (_ bv2 32) ) (concat (select a (_ bv1 32) ) (select a (_ bv0 32) ) ) ) ) (_ bv10 32) ) ) :named ?U0) (! (assert (bvslt (_ bv10 32) (concat (select a (_ bv3 32) ) (concat (select a (_ bv2 32) ) (concat (select a (_ bv1 32) ) (select a (_ bv0 32) ) ) ) ) ) ) :named ?U1) (check-sat) (get-unsat-core) (exit)

运行z3时,我得到以下输出:
unsupported ; ! unsupported ; ! sat (error "line 11 column 15: unsat core is not available")
我是z3的新手,无法理解这里发生了什么(我确信这个表达是不对的) 感谢。

1 个答案:

答案 0 :(得分:1)

您错误地使用!。感叹号用于命名公式(不是断言)。请参阅Tutorial中的第3.9.8节。

这应该解决它:(assert (! (bvslt ...) :named ?U0))