如何将变量的值转换为模型中的int?

时间:2013-07-02 13:26:13

标签: z3

使用模型对象时,我调用func_decl get_func_decl (unsigned i)来获取分配给某个函数(变量)的值。我遇到的问题是获取该输出(func_decl)并将其转换为int

例如,如果模型为{x |-> 4, y |-> 12, z |-> 6},我希望获得这3个变量(int4和{{1}的实际12值})。

1 个答案:

答案 0 :(得分:2)

Z3为此提供了函数Z3_get_numeral_int

Z3_bool Z3_API Z3_get_numeral_int(__in Z3_context c, __in Z3_ast v, __out int* i);

请注意,最后一个参数是一个整数的点,如果调用成功,将填充正确的值(对于不能表示为int的非数字或数字,它将失败)。

还有一些名为Z3_get_numeral_*的函数可以获取不同类型的值,例如uint64等。

此方法适用于常量(即arity 0的func_decls)。要获取(非零arity)函数定义的条目,应使用以下函数:

Z3_func_entry Z3_API Z3_func_interp_get_entry(__in Z3_context c, __in Z3_func_interp f, unsigned i);