如何解决方程而不是在z3中给出一个模型

时间:2015-07-09 08:49:40

标签: z3 z3py

这可能不超出z3的范围,我知道在Z3中我们可以简化表达式,但我想知道z3是否可以解决方程而不是给出模型。

例如,我希望以下等式对于a的任何值始终为true。在这种情况下使用ForAll量词将返回不饱和度。

     a == b - c + 2

我期望的解决方案是一个指定变量的公式,而简化不处理这个,比如

     b == a + c - 2 or c == b - a + 2

这有什么API吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

不确定这里究竟是什么问题,但听起来你想获得所有令人满意的解决方案,而不是一个令人满意的解决方案。可以对其进行编码(使用量词),但不一定容易解决;取决于量词中使用的逻辑片段,Z3可能很慢,或者它可能只是相对较早地放弃(返回未知)。没有用于此目的的专用API,但现有API具有解决难题所需的所有部分(例如,使用未解释的函数f以符号方式对解决方案进行编码,然后获取f的func_interp从模型中。)

有关获取多个解决方案的详细信息,另请参阅Z3: finding all satisfying modelsZ3 Enumerating all satisfying assignments

相关问题