我正在尝试一些涉及递归函数的a Z3 tutorial示例。我已经尝试了以下示例。
答案 0 :(得分:9)
Z3教程中的这些示例用于说明Z3背后技术的局限性。
Z3在这些例子上失败有两个原因:
Z3生成的模型为每个未解释的函数符号分配解释。可以将模型视为功能程序。当前版本不会生成递归定义。第一个例子是可以满足的,但是Z3不能为fib产生解释,因为它不支持递归定义。 我们计划将Z3扩展到这个方向。
Z3不支持感应证明。示例2和3不可满足,但Z3失败,因为它不支持感应证明。 我们还计划为此添加基本支持。
虽然这些项目在我的TODO列表中,但我今年不会开始研究它们。