假设DdManager
有四个变量:x, y, x', y'
我有一个由x
和y
构建的BDD。
现在,我想将x
更改为x'
,将y
更改为y'
,即获得由x'
和y'
构建的相同BDD。< / p>
如何使用CUDD包获得此功能?当我想实现模型检查算法时遇到了这个问题。我想知道如何实现这个操作或者我是否误解了符号模型检查算法? 非常感谢你!
答案 0 :(得分:2)
使用函数Cudd_bddSwapVariables
执行此操作。它获得以下参数:
Cudd_bddNewVar
返回的BDD节点表示)您需要自己分配和释放阵列。
答案 1 :(得分:0)
使用package dd
中包含的CUDD的Cython绑定进行变量替换的示例:
from dd import cudd
bdd = cudd.BDD() # instantiate a shared BDD manager
bdd.declare("x", "y", "x'", "y'")
u = bdd.add_expr("x \/ y") # create the BDD for the disjunction of x and y
rename = dict(x="x'", y="y'")
v = bdd.let(rename, u) # substitution of x' for x and y' for y
s = bdd.to_expr(v)
>>> s
"ite(x', TRUE, y')"
# another way to confirm the result is as expected
v_ = bdd.add_expr("x' \/ y'")
assert v == v_