z3 - 如何在 Z3 中使用替代方法将变量替换为 True 它不起作用,它替换为 ζ1 并且简化方法不起作用?
问题描述
这是下面的代码。我也尝试将其转换为 Bool 和 BoolRef 但在这里它也不起作用:-
print(A)
substitute(A, (Var[0], Bool(True) )) # where Var[0] = x_0_2
Output:-
And(And(And(And(x_0_3, Not(x_0_2)), Not(x_0_1)), Not(x_0_0)),
And(And(And(x_1_3 == x_0_0, x_1_2 == x_0_3),
x_1_1 == x_0_2),
x_1_0 == x_0_1))
x_0_3 ∧ ¬ζ1 ∧ ¬x_0_1 ∧ ¬x_0_0 ∧ x_1_3 = x_0_0 ∧ x_1_2 = x_0_3 ∧ x_1_1 = ζ1 ∧ x_1_0 = x_0_1
解决方案
如果您发布人们可以自己运行的代码,则 Stack-overflow 效果最好;没有看到你正在做的其他部分,其他人不可能弄清楚还有什么可能导致你的代码出现问题。
话虽如此,以下是您如何替换True
变量:
from z3 import *
x, y = Bools('x y')
expr = And(x, Or(y, And(x, y)))
print expr
expr2 = substitute(expr, (x, BoolVal(True)))
print expr2
print simplify(expr2)
当我运行它时,我得到:
And(x, Or(y, And(x, y)))
And(True, Or(y, And(True, y)))
y
这显示了替换的效果和表达式的进一步简化。请注意使用该术语BoolVal(True)
来访问True
作为布尔表达式的常量值。
推荐阅读
- python - 使用 argparse 获取整数列表,如 0-10,而不使用 Python 中的任何额外库
- overlay - RPI 4 上的 GPOI-Fan 引脚是否默认打开?如果是这样,我该如何禁用它?
- html - 在 Angular Spring Boot 应用程序中添加搜索按钮
- r - 关于 ggplot2 中的非有限值和缺失值的警告?
- node.js - 在 Electron 应用程序中将自定义模块导入 renderer.js
- python - 如何迭代多个正则表达式匹配并替换它们?
- tags - 到中心的 Gif 链接
- javascript - 为什么我在这里得到类型对象错误上的属性不存在?
- xml - 如何在 xpath 中获取 position() 和 level()?
- powerbi - Power BI 度量,用于计算学习期间留存的学生