【发布时间】:2013-11-29 15:05:56
【问题描述】:
我正在使用来自不稳定分支的 Z3 来试验 Horn 子句(提交 61385c8489b7fda11b518a67fe308ea3cfe28c3d)。我可以让 Z3 推断出一些循环不变量,这很好。然而,通过以下简单的例子,我对 Z3 的行为感到困惑。我在这里错过了什么?
示例 1:
(set-logic HORN)
(declare-const C Int)
(assert (> C 2))
(check-sat)
(get-model)
我希望有一个模型,但收到“未知”。
示例 2:
(set-logic HORN)
(define-fun step ((I Int) (I1 Int)) Bool (= I1 (+ I 1)))
(define-fun post ((I1 Int)) Bool (= I1 10))
(declare-fun pre (Int) Bool)
(assert (forall ((I Int) (I1 Int)) (=> (and (pre I) (step I I1)) (post I1))))
(check-sat)
(get-model)
我希望一个模型告诉我一些关于 pre 的信息(例如,它是错误的或它适用于 9),但接收
sat
(model )
谢谢。
【问题讨论】:
标签: z3