Z3 Java API,用于获取位向量的值

时间:2019-01-22 12:06:10

标签: z3

我编写了一个程序,该程序自动生成smt2文件,并使用Z3 Java API解析该文件,解决约束并获取每个常量的赋值。

现在我在SMT2文件中有一些约束,这些约束是在位向量中指定的,并希望在解决SMT之后获取值。什么是从这些位向量获取值的正确Java API。

我尝试了model.getConstDecls()并使用Z3_sort_kind确定循环中每个常量的类型。看来我无法从位向量获得任何值。我注意到parseSMTLIB2File有所更改。这是我的示例代码:

FuncDecl c[] = model.getConstDecls();
for (int i=0;i<cons.length;i++){
    Z3_sort_kind sort = c[i].getRange().getSortKind();
    Expr expr = model.getConstInterp(c[i]);
    if (expr.isBV())
          //my own code to extract values from bit-vector.
}

似乎model.getConstDecls()没有得到任何位向量。我知道有一个JavaExample可以从位向量获取模型。但是,我不想重写该程序,因为它很大并且有其他东西。这将非常耗时。

0 个答案:

没有答案