我知道parseSMTLIB2File Java API会忽略SMT2文件中的某些命令。但是,有办法解决吗?我正在生成smt2文件,并使用parseSMTLIB2File和Solver.check()来解析和解决约束。
现在,我想使用求解器中的unsat核进行一些计算。我知道我可以使用std in和out(here)来做到这一点。然而,这对于运行算法将是非常低效的。此外,更改整个代码库以通过Z3 Java API切换每个约束生成也是不理想的。
由于本机C ++接口可以很好地处理选项和(跟踪的)断言。因此,有没有解决的办法?如何以编程方式有效地做到这一点?
执行其他C ++ / C / Python parseSMTLIB2File API执行与Java相同的操作,或者可能会读取其他内容。
答案 0 :(得分:1)
有办法解决吗?
不。 parseSMTLIB2File
并非求解器的完整接口,也并非如此。唯一的选择是通过发出.smt2
文件并将这些文件传递给Z3来切换到完整的API接口或切换到全文本接口。后者可以通过管道而不是实际文件来完成,许多用户对此表示满意。