【问题标题】:Get result of tactics application as an expression in Z3在 Z3 中以表达式形式获取战术应用的结果
【发布时间】:2018-01-03 05:46:52
【问题描述】:

在 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?

【问题讨论】:

    标签: c++ z3 z3py


    【解决方案1】:

    一般来说,战术应用的结果是一组目标。大多数战术只会产生一个目标,但有些战术会产生不止一个目标。对于这些子目标中的每一个,您可以使用as_expr(),然后将它们逻辑或一起使用。如果有帮助,我们可以将as_expr(...) 添加到class apply_result。 (我现在正忙于其他事情;如果您自己添加,请提交拉取请求,非常欢迎贡献!)

    【讨论】:

    • 谢谢。是的,我必须明白这一点,我会尽力做到这一点。最初我被困了几个小时,这就是我寻求帮助的原因:)
    • 现在已添加(截至github.com/Z3Prover/z3/commit/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 2016-01-01
    • 2017-10-29
    • 1970-01-01
    • 2017-05-20
    • 2019-07-08
    • 1970-01-01
    相关资源
    最近更新 更多