Z3不动点:模型中假公式的含义是什么?

时间:2015-04-17 16:43:15

标签: z3

我试图使用Z3的定点引擎检查一个简单的Timed Automata的可达性。

TA I&m; m建模是:

- >(x = 0& 0< = c< = 5) - [c> 2] - >(x = 1)

我想验证状态x = 1& c = 3是可达的。为此,我将以下内容输入Z3:

(declare-rel T (Int Real Int Real))
(declare-rel REACH (Int Real))
(declare-var x Int) 
(declare-var c Real)
(declare-var nx Int)
(declare-var nc Real)
(declare-var delay Real)
(rule (! (=> (and (= x 0) (> c 2.0)) (T x c 1 c)) :named stepint))
(rule (! (=> (and (REACH x c) (T x c nx nc)) (REACH nx nc)) :named tstep))
(rule (! (=> (and (= c 0.0) (= x 0)) (REACH x c)) :named initialstates))
(rule (! (let ((a!1 (and (>= delay 0.0) (= nc (+ c delay)) (or (not (= x 0)) (< nc 5.0)))))
(=> a!1 (T x c x nc))) :named TICK))

(query (and (REACH x c) (= x 1) (= c 3.0))
 :print-certificate true)

当我在up4fun上运行上面的Z3时,我回来了:

formula false in model: (= REACH_1_0 3.0)
formula false in model: (= REACH_0_0 1)
formula false in model: (= query!0_0_n 1)
formula false in model: (= query!0_1_n 3.0)
sat
(REACH 1 3.0)

这表明x = 1&amp; c = 3是可达的。模型中&#34;公式错误是什么意思&#34;?这只是信息性的还是Z3警告我可能形成不良的输入?

1 个答案:

答案 0 :(得分:0)

错误显示在&#34; opt&#34;科。我还没有将修复程序移植到unstable分支。它会发生,但如果不耐烦,请使用&#34; opt&#34;科。 遗憾。