我知道我们可以选择Z3或νZ(或z3opt,Z3的 优化 分支)使用的类似AUFLIRA
的逻辑写
(set-logic AUFLIRA)
输入.smt2
文件中的。
但是如果我们需要使用Python API设置这个逻辑 呢?我们可以使用哪种方法来做到这一点?
我检查了一些documentation,我注意到SolverFor(logicName)
模块中有一个z3
来创建基于给定逻辑的解算器(例如通过调用SolverFor('AUFLIRA')
),但我有以下问题:
νZ怎么样? z3
模块还有Optimize
对象,其作用类似于Solver
对象,但我没有看到任何OptimizeFor()
方法来获取Optimize
对象给定的逻辑。
SolverFor()
模块中的z3
方法永远不会引发异常,即使我通过调用指定不存在的逻辑SolverFor('abcd')
。文档说如果Z3不支持逻辑,那么它将使用默认设置,但我怎么知道是否使用我提供的逻辑(例如AUFLIRA
逻辑)或不?
谢谢
答案 0 :(得分:0)
nuZ不会暴露可定制的策略/解算器,因为它非常专业地使用求解器来找到最佳值。
我们绝对应该解决SolverFor(' abc')不会创建任何警告/异常的事实。我现在在不同的用户代码示例中看到此问题,并且没有警告/异常,用户可能不会意识到他们的设置没有效果。