无法执行scala ^ z3 fibonacci示例

时间:2012-05-31 10:40:23

标签: scala z3

我正在尝试在MacOS 64位上使用Scala ^ Z3,具有以下设置:

res0:String = Z3 4.0(build 0,rev.0),ScalaZ3 3.2.c(在开发中)

现在当我尝试从the ScalaZ3 main page执行fibonacci示例时,我得到以下输出,然后执行暂停:

fib0 ::: (= (fib!0 0) 0)
fib1 ::: (= (fib!0 1) 1)
fibN ::: (forall (k!0 Int)
  (implies (> k!0 1) (= (fib!0 k!0) (+ (fib!0 (- k!0 1)) (fib!0 (- k!0 2)))))
  :pat {(fib!0 k!0)})
Query ::: (= x (fib!0 1))

我等了几个小时,但没有更多的事情发生;) 有没有人有任何想法,我做错了什么? scala或z3的新版本? 问候, 弗洛里安

1 个答案:

答案 0 :(得分:1)

(请注意,我们还没有机会用最新版本的Z3测试Scala ^ Z3。感谢您在这里破土动工。)

您尝试解决的问题包含通用量词并且令人满意。过去的Z3版本将以unknown终止,您可以要求一个暂定模型(如您链接的文档页面所示)。很可能是因为新版本设置为非常难以反驳公式而不是返回unknown,因此不会终止。

您可以尝试一个不可满足的查询,这应该更好。试试例如:

(= (fib 10) (fib 12))

Z3应该能够足够多次实例化量词,以得出公式不可满足的结论。