验证查询公式,SMT求解器,Z3,STP

时间:2014-01-12 18:17:28

标签: z3 smt

我有一个布尔公式 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 的值暗示的一面。

请告知如何创建此类查询。

1 个答案:

答案 0 :(得分:1)

为什么不为a创建一个新变量? 然后你可以断言以下内容: (断言(不是)) (断言(不是b)) (断言(f a b x y)) (断言a2) (断言(不是(f a2 b x y))) (检查-SAT)

当且仅当上面的查询不可满足时,您的查询才有效,因为绑定被表示为断言并且含义被否定(并且被展平为两个断言)