Z3Py中的solver.check()与z3中的(check-sat)之间的区别-smt2 filename.smt2

时间:2019-01-21 16:58:05

标签: z3 smt z3py

我正在使用Z3Py来生成一个相对较大的求解器,其中包含约90000个约束。就像我初始化了一个求解器s = solver(),然后我使用s.add(constraint)添加了许多约束一样。假设我添加了90000个约束,那么我需要使用s.check()进行检查。但是程序似乎卡住了,我想它真的需要很长时间才能解决这些限制(至少超过1天)。

但是,我还尝试使用命令SMT2将90000约束转换为file.write(s.sexpr())文件。然后,我从命令行使用Z3来使用z3 -smt2 file.smt2检查生成的smt2文件。在这种情况下,该程序在一个小时内由smt2文件中的(check-sat)解决了。

我的问题是s.check()中的Z3Py(check-sat)中的z3 -smt2 file.smt2之间有什么区别?

造成这种巨大时序差异的可能原因是什么?

0 个答案:

没有答案