Java Z3替换中的错误

Java Z3替换中的错误,java,z3,substitution,smt,Java,Z3,Substitution,Smt,我使用了expr.Substitute(expr[]oldArgs,expr[]newArgs)的Z3JavaAPI,结果卡住了。想知道替换过程中是否有错误 以下是一些声明: (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))) (decl

我使用了expr.Substitute(expr[]oldArgs,expr[]newArgs)的Z3JavaAPI,结果卡住了。想知道替换过程中是否有错误

以下是一些声明:

(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}

纽瓦格斯:

{(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)))}

它似乎有一个非终止代码。你使用的是Z3的最新“不稳定”版本吗?如果你能创建一个复制,你能把它作为一个bug发布在z3.codeplex.com上吗?@NikolajBjorner用最新版本的z3解决了这个问题