解决Z3量化的策略

时间:2016-02-10 15:04:52

标签: z3

我需要解决以下量化公式,并尝试了一些策略组合,但Z3始终返回unknown。我从符号状态包含检查中获得了我们在KLEE上新实现的公式,其基本上是建立表示最强后置条件的两个量化比特向量公式的有效性。以下公式是建立蕴涵有效性的不可满足性测试的简化形式。有没有人知道解决它的正确战术组合,还是我可以采取哪些措施来帮助Z3?

(set-logic ABV)
(declare-fun y () (Array (_ BitVec 32) (_ BitVec 8)))
(assert (bvsle (concat (select y #x00000003)
               (concat (select y #x00000002)
                       (concat (select y #x00000001)
                                (select y #x00000000))))
               #x00000000))
(assert (forall ((x (Array (_ BitVec 32) (_ BitVec 8))))
         (let ((a!1 (concat (select x #x00000003)
                            (concat (select x #x00000002)
                                    (concat (select x #x00000001)
                                            (select x #x00000000)))))
               (a!2 (concat (select y #x00000003)
                            (concat (select y #x00000002)
                                    (concat (select y #x00000001)
                                            (select y #x00000000))))))
           (not (and (bvsle a!1 #x00000000)
                (= ((_ extract 31 0) (bvadd #x00000004 a!1))
                   ((_ extract 31 0) (bvadd #x00000003 a!2))))))))
(check-sat-using (then qe simplify solve-eqs bit-blast sat))

提前谢谢。

0 个答案:

没有答案