我有一个布尔公式 f(a, b, x, y)
。其中 a 和 b 是布尔表达式, x 和 y 是位向量表达式。 a 和 b 是布尔表达式,可能使用表达式 a,b,x 和 y 。
我想定义以下有效性查询:
f(a, b, x, y)* such that *a = false && b = false
f(a, b, x, y)* such that *a = true && b = false
在某种程度上,我需要在公式中替换 a 和 b 的值暗示的一面。
请告知如何创建此类查询。
答案 0 :(得分:1)
为什么不为a创建一个新变量? 然后你可以断言以下内容: (断言(不是)) (断言(不是b)) (断言(f a b x y)) (断言a2) (断言(不是(f a2 b x y))) (检查-SAT)
当且仅当上面的查询不可满足时,您的查询才有效,因为绑定被表示为断言并且含义被否定(并且被展平为两个断言)