Z3命名允许在API中绑定

时间:2011-10-04 14:14:55

标签: z3

我正在使用API​​中的Z3,我正在寻找一种调试约束的方法。我的代码编译,Z3运行我的约束,但我的约束有问题。我希望看看我给Z3确定哪些错误或遗漏的限制,但我不确定如何以一种非常易读的方式做到这一点。问题是使用像SMTLIB_DUMP_ASSERTIONS这样的工具不会在任何let绑定变量中提供有意义的名称。由于我有许多相同表达式的重用,几乎所有内容都与生成的变量绑定。

有没有办法转储输入约束的文件,其中let-bound变量有一个我已分配的名称?我并不特别关心格式是什么,但SMTLIB 1或2会很好。

1 个答案:

答案 0 :(得分:1)

不,您无法提供名称以让Z3 AST打印机自动创建变量。 一种可能的解决方案是编写自己的AST打印机。在Z3发行版中,我们有一个示例应用程序examples/c/test_capi.c。它包含功能:

void display_ast(Z3_context c, FILE * out, Z3_ast v) 

它展示了如何实现简单的AST打印机。这个例子非常简单,但它是一个起点。