在Z3中获取战术应用的结果作为表达式

时间:2018-01-03 05:46:53

标签: c++ z3 z3py

在C ++中是否有类似Z3py接口的as_expr()。我试图将战术应用为z3表达式 exp ,而不是类型 apply_result

例如,在下面的代码中

context c;
expr x = c.bool_const("x");
expr y = c.bool_const("y");
expr f = ( (x || y) && (x && y) );
solver s(c);
goal g(c);
g.add( f );
tactic t1(c, "simplify");
apply_result r = t1(g);
std::cout << r << "\n";

另外,有没有办法将apply_result转换为z3 expr?

1 个答案:

答案 0 :(得分:1)

通常,战术应用程序的结果是设置目标。大多数策略只产生一个目标,但有些产生不止一个目标。对于每个子目标,您可以使用as_expr()然后使用逻辑 - 或它们。如果有帮助,我们可以向as_expr(...)添加class apply_result。 (我现在忙于其他事情;如果你自己添加,提交拉取请求,非常欢迎贡献!)