Java Z3替换中的错误
我使用了expr.Substitute(expr[]oldArgs,expr[]newArgs)的Z3JavaAPI,结果卡住了。想知道替换过程中是否有错误 以下是一些声明: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
(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解决了这个问题