![](/img/trans.png)
[英]Difference in output when smtlib2 solver is invoked through z3 python api and directly from executable?
[英]How do I get a solver (problem) in an SMTLIB format using the Z3 Python API?
我想打印一个问题的 SMTLIB 字符串。 例如,将构建的问题保存到文件中,在其上运行其他求解器等。
我知道函数sexpr()
和to_smt2()
但后者的行为方式出乎意料。 特别是它没有添加 function 定义。 在以下脚本之后:
solv = z3.Solver()
n = z3.Int("n")
f = z3.RecFunction("f", [z3.IntSort(), z3.IntSort()])
z3.RecAddDefinition(f, n, n * 5 )
solv.add(f(2) == 10)
现在sexpr()
返回
(define-funs-rec ( ( f ((x!1 Int)) Int)) ( (* x!1 5)))
(assert (= ((_ f 0) 2) 10))
缺少例如set-info
和check-sat
命令。 to_smt2()
另一方面返回
(set-info :status unknown)
(assert (= ((_ f 0) 2) 10))
(check-sat)
打印 set-info/check-sat,这是我所期望的,但不包括f
的 function 定义。 如何获得包含定义等以及 check-sat/set-info 等命令的 SMTLIB2 字符串?
没有。 只需使用sexpr
并自己添加额外的位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.