使用Z3将SMT-LIBv2 QF_AUFBV转换为CNF DIMACS格式

时间:2015-09-08 03:32:57

标签: z3 smt sat

我可以将具有SMT-LIBv2格式且包含设置逻辑QF_AUFBV的输入文件转换为CNF吗?如果是这样,我如何使用Z3命令行无法做到这一点?

更新:我还需要将SMT-LIBv2实例中的变量映射到CNF DIMACS文件作为注释。这可能使用Z3吗?

1 个答案:

答案 0 :(得分:1)

QF_AUFBV包含数组和未解释的函数。我不认为CNF DIMACS能够理解其中任何一个。

从程序化API,您可以应用将公式转换为CNF的策略。然后你可以走这些公式,并以你喜欢的任何形式打印它们。 Z3源代码还包含一些我们将中间结果转储到DIMACS中的地方,但是我们没有为此公开现成的功能(但是你总是可以根据这个需要编译你自己的Z3版本,例如,使用" goal :: display_dimacs"实用程序。