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