有没有办法将SMT2公式的(check-sat ...)语句中的假设传递给求解器?
考虑存储在ex.smt2中的以下示例公式:
# cat ex.smt2
(declare-fun p () Bool)
(assert (not p))
(check-sat p)
正如预期的那样,在它上运行z3给出了不满意。现在,我想用假设(p)到z3py接口来解决:
In [30]: ctx = z3.Context()
In [31]: s = z3.Solver(ctx=ctx)
In [32]: f = z3.parse_smt2_file("ex.smt2", ctx=ctx)
In [33]: s.add(f)
In [34]: s.check()
Out[34]: sat
是否有API可以从解析器中获取假设(即本例中的(p))?或者更好,只需告诉求解器用从输入文件中读取的假设来解决?
答案 0 :(得分:1)
不,没有这样的API。 parse_smt2_file
API非常简单,只提供对输入文件中断言的访问。扩展此API位于TODO列表中,但目前没有人正在进行此操作。