如何在位向量中使用forall

时间:2013-07-18 00:48:55

标签: z3 smt

我打算做的就是去所有的向量,并在每个位上做不同的事情。

我想知道的是,如果我做得很好(在define-fun LT....中)?

因为结果与预期的结果不匹配:S

此链接中的代码:http://rise4fun.com/Z3/xrFK

1 个答案:

答案 0 :(得分:0)

我不确定你公式的预期语义是什么,但直观地看来你is_in的定义可能是罪魁祸首:

(define-fun is_in ((e (_ BitVec 9)) (S (_ BitVec 9))) Bool
    ;; True if e is an element of the "set" S.
    (= (bvand e S) e))

约束(= (bvand e S) e))表示只有S等于e时,此函数才能返回true。按照函数的名称,我希望定义为(not (= (bvand e S) Empty))