在Z3Py中替换

时间:2013-01-04 19:22:57

标签: python z3

似乎Z3Py中的substitute(f,t)函数在进行替换之前首先在f上执行简化。有没有办法不允许这个?

我希望发生以下行为:

f = And(x,Not(x))
result = substitute(f,*[(Not(x),BoolVal(True))])  #sub Not(x) => True
#if we simplify f first then the result = False,  but if we do the substitution first then result = x

1 个答案:

答案 0 :(得分:2)

不幸的是,使用简化器实现substitute过程,该简化器可以在简化期间应用替换。 substitute Python过程调用文件api_ast.cpp中的Z3 C API Z3_substitute。在内部,简化器称为th_rewriter(理论重写器)。

话虽如此,我同意这不好,在某些情况下可能会非常不方便。我将在下一个版本中更改它。