为什么Z3对以下输入没有响应?
我最初发布的问题如下面的虚线所示,但此后我有了一个更简单的示例:为什么Z3对以下输入没有响应?,z3,Z3,我最初发布的问题如下面的虚线所示,但此后我有了一个更简单的示例: (declare-fun f (Int) Int) (assert (= (f 10) 1)) (check-sat) (get-model) 按预期生成f的解释。但是,将常数更改为除10以外的任何值,Z3只需旋转箭头几次,然后什么也不打印 ---------------------------------------原始问题----------------------------- 我在下面的输入上尝试了Z3,箭头旋转了几次并
(declare-fun f (Int) Int)
(assert (= (f 10) 1))
(check-sat)
(get-model)
按预期生成f的解释。但是,将常数更改为除10以外的任何值,Z3只需旋转箭头几次,然后什么也不打印
---------------------------------------原始问题-----------------------------
我在下面的输入上尝试了Z3,箭头旋转了几次并停止了,但Z3打印或什么也没说。为什么?
(declare-fun f (Int Int) Int)
(assert (>= (f 1 1) 1))
(assert (>= (f 1 2) 2))
(assert (>= (f 2 1) 2))
(assert (>= (f 2 2) 2))
(assert (= (f 1 1) 1))
(assert (= (f 2 2) 2))
(assert (or (= (f 1 2) 1) (= (f 1 2) 2)))
(assert (or (= (f 2 1) 1) (= (f 2 1) 2)))
(check-sat)
(get-model)
我觉得我错过了一些非常明显的东西。我正在获得(使用iZ3、Z3不稳定分支)
在线运行此示例我猜您正在rise4fun上使用Z3?在那里运行的版本可能有点过时。我们必须手动更新那里的二进制文件。如果它没有回复,要么是因为超时,要么是因为存在其他问题(例如segfault)。rise4fun上的版本很可能会出现其他版本的Z3(例如,不稳定、iZ3等)中已经修复的错误。你是对的,本文中的示例由不稳定的Z3和iZ3正确执行。好的,很高兴知道。修复rise4fun不是更好吗?对于很多Z3的新手来说,这是他们的切入点,我可以想象他们在Z3中看到这种行为时的困惑!
sat
(model
(define-fun f ((x!1 Int) (x!2 Int)) Int
(ite (and (= x!1 1) (= x!2 1)) 1
(ite (and (= x!1 2) (= x!2 2)) 2
(ite (and (= x!1 1) (= x!2 2)) 2
(ite (and (= x!1 2) (= x!2 1)) 2 2)))))
)