Z3代替bug

时间:2014-07-16 02:57:26

标签: java z3 substitution smt

我使用了expr.Substitute的Z3 Java API(Expr [] oldArgs,Expr [] newArgs),并且卡住了。想知道替换过程中是否存在错误。

这里有一些声明:

(declare-const addr_of_s (_ BitVec 16))
(declare-const m_10 (Array (_ BitVec 16) (_ BitVec 16)))
(declare-const size_10 (Array (_ BitVec 16) (_ BitVec 16)))
(declare-const pre_disjoint_10 Bool)
(declare-fun disjoint_10 ((_ BitVec 16) (_ BitVec 16)) Bool)
(declare-const label (_ BitVec 16))
(declare-const label_0 (_ BitVec 16))

这是要替换的表达式:

(= (select m_10 (bvadd addr_of_s (bvmul #x0003 #x0001))) #x0000)

oldArgs:{m_10, size_10, pre_disjoint_10}

newArgs:

{(store (store (store (store m_10 addr_of_s #x0031)
                 (bvadd #x0001 addr_of_s)
                 #x0032)
          (bvadd #x0002 addr_of_s)
          #x0033)
   addr_of_s
   #x0032),

size_10,

(and pre_disjoint_10 
     (disjoint_10 label label_0) 
     (bvuge (bvadd label label_0) label)
     (not (= label #x0000)))}

0 个答案:

没有答案