如何从func_interpr条目获取变量的索引?

时间:2013-07-21 17:32:35

标签: c++ c api z3

函数模型包含对<condition_on_args, return_value>的条目。

return_value表达式可以引用输入参数,例如(f!4 (k!3 (:var 0)))。这里(:var 0)指的是函数模型的第0个输入参数,它是Z3_VAR_AST的类型。

我想将return_value转换为某个内部程序表示,但不知道如何将(:var 0)与函数模型的第0个输入参数联系起来。

如何通过c / c ++ API从类型Z3_VAR_AST的expr 0获取变量的索引,即(:var 0)

谢谢!

1 个答案:

答案 0 :(得分:1)

您必须使用以下API:

    /**
       \brief Return index of de-Brujin bound variable.

       \pre Z3_get_ast_kind(a) == Z3_VAR_AST

       def_API('Z3_get_index_value', UINT, (_in(CONTEXT), _in(AST)))
    */
    unsigned Z3_API Z3_get_index_value(__in Z3_context c, __in Z3_ast a);