Z3打印评估结果

时间:2015-10-28 03:21:31

标签: c++ c z3

在Z3中,我们如何编写程序以获得评估结果?默认情况下,model.eval(expression)将返回评估结果的另一个表达式。如何将结果分配给特定类型的数据?以下是我想在我的计划中做的事情。

int a = model.eval(x + 1)  // compiler error

1 个答案:

答案 0 :(得分:1)

有时模型不完整。例如,当没有任何东西取决于x的值时,那么Z3可能根本不会为它分配任何值,即,您可以自由选择适合您的任何值。 eval函数有第二个参数,当设置为true时,将启用模型完成,即eval将替换那些具有一定合法价值的不关心(通常为0) )。

Z3-int是实际整数,而不是C / C ++ - 小于2 ^ 32-1的内联,因此转换不会自动执行。如果您知道在您的应用程序中这将始终正常,并且eval将始终返回数字,那么您可以使用Z3_get_numeral_int执行该转换。