是否有一般方法在Z3中添加假设假设?

时间:2013-09-23 06:01:18

标签: z3

我刚刚开始,我很好奇是否有办法添加假设。使用(断言...)不是我想要的,因为我的应用程序有时假设是假的,因此一切都应该变得令人满意。我知道我可以使用诸如(断言(暗示假设结论))之类的含义,但如果有许多假设,那么看起来很笨拙地将我的所有断言转化为含义。粗略地说,我希望有一个像

这样的互动模型

(假设......)

...

(假设......)

(断言......)

...

(断言......)

(检查-SAT)

1 个答案:

答案 0 :(得分:1)

使用带有影响的assert是要走的路,没有assume(参见SMT-LIB手册,第3.9节,http://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.0-r10.12.21.pdf)。

如果您有许多断言想要用作假设,您可能需要使用其中一个编程API来帮助您自动执行此转换:http://z3.codeplex.com/documentation

或者,如果断言足够简单,您可以编写一个操作断言字符串表示的脚本来打印带有含义的SMT-LIB公式。

您可能也对此感兴趣:Soft/Hard constraints in Z3