z3py:来自(检查sat…)报表的假设

z3py:来自(检查sat…)报表的假设,z3,z3py,Z3,Z3py,是否有办法将SMT2公式(检查sat…)语句中的假设传递到求解器中 考虑存储在ex.smt2中的以下示例公式: # cat ex.smt2 (declare-fun p () Bool) (assert (not p)) (check-sat p) 如预期的那样,在其上运行z3会给出unsat。现在,我想通过z3py接口用假设(p)来解决: In [30]: ctx = z3.Context() In [31]: s = z3.Solver(ctx=ctx) In [32]: f = z3.

是否有办法将SMT2公式(检查sat…)语句中的假设传递到求解器中

考虑存储在ex.smt2中的以下示例公式:

# cat ex.smt2 
(declare-fun p () Bool)
(assert (not p))
(check-sat p)
如预期的那样,在其上运行z3会给出unsat。现在,我想通过z3py接口用假设(p)来解决:

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))?或者更好的是,告诉解算器使用从输入文件读取的假设进行求解

不,没有这样的API。
parse_smt2_文件
API非常简单,只提供对输入文件中断言的访问。扩展此API在TODO列表中,但目前没有人在进行此项工作