我在MacOS X 10.8下使用Z3 4.3.1(来自master分支)。 我在以下示例中遇到了分段错误:
(declare-const a Int)
(declare-const b Int)
(assert
(exists ((k Int))
(and
(= (- (* 2 k) a) 0)
(= (- (* 2 k) b) 0)
)
)
)
(check-sat-using qe)
有任何想法,如何解决这个问题?
答案 0 :(得分:2)
我设法使用OSX和Z3 4.3.1重现您描述的错误。
此错误已得到修复,将在下一个正式版本中提供。
在此期间,您可以使用每晚构建OSX或使用unstable
(正在进行中)分支构建Z3。
夜间版本可以在http://z3.codeplex.com/releases下载。我们必须点击"计划"链接。我写了一些说明here。
顺便说一句,如果我们想要检查可满足性,我们应该在smt
之后使用最终游戏策略(例如qe
),就像在Axel发布的示例中一样。如果我们要检查qe
生成的结果,我们应该使用(apply qe)
代替。
答案 1 :(得分:0)
以下在Windows XP + Z3 4.3.0
下正常工作(declare-const a Int)
(declare-const b Int)
(assert
(exists ((k Int))
(and
(= (- (* 2 k) a) 0)
(= (- (* 2 k) b) 0)
)
)
)
(check-sat-using (then qe smt))
(get-model)