使用模型对象时,我调用func_decl get_func_decl (unsigned i)
来获取分配给某个函数(变量)的值。我遇到的问题是获取该输出(func_decl
)并将其转换为int
。
例如,如果模型为{x |-> 4, y |-> 12, z |-> 6}
,我希望获得这3个变量(int
,4
和{{1}的实际12
值})。
答案 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);