Ocaml 来自Z3的Unsat内核(版本4)

Ocaml 来自Z3的Unsat内核(版本4),ocaml,z3,proof,smt,bitvector,Ocaml,Z3,Proof,Smt,Bitvector,在过去的一年左右,我一直在使用Z3版本4.0的OCAMLAPI,主要是位向量理论。现在,我需要在执行Z3.solver_检查后提取unsat核心,不幸的是,版本4没有这个功能。我可以重新编写,使用假设来代表公式中的每个位向量方程,然后得到unsat核心,但这是代码的关键部分,可能会影响整体性能 有没有一种方法可以在不经过版本4假设的情况下获取unsat core?长期的解决方案当然是升级到最新版本,但如果有一个破坏性较小的解决方案,那就更好了。例如,有没有一种方法可以从unsat的证明(由Z3.

在过去的一年左右,我一直在使用Z3版本4.0的OCAMLAPI,主要是位向量理论。现在,我需要在执行Z3.solver_检查后提取unsat核心,不幸的是,版本4没有这个功能。我可以重新编写,使用假设来代表公式中的每个位向量方程,然后得到unsat核心,但这是代码的关键部分,可能会影响整体性能

有没有一种方法可以在不经过版本4假设的情况下获取unsat core?长期的解决方案当然是升级到最新版本,但如果有一个破坏性较小的解决方案,那就更好了。例如,有没有一种方法可以从unsat的证明(由Z3.solver\u get\u proof返回)中提取unsat核心


谢谢

如果使用解算器模块中的assert_和_track函数,那么同样在解算器模块中的get_unsat_core将返回与跟踪的断言相对应的跟踪文本集。在方法unsatcoreadProofExample2和Java()中,有一个使用C#API的assert_和_track的示例。
ML示例中没有相应的示例,但转换为OCaml应该不会太复杂。

Z3第4版中没有函数Z3.solver\u assert\u和\u track或类似的函数。我的问题是针对第4版的。谢谢