1
我有如下简单的Z3 python代码。我预计“打印”行将返回我“y”,它存储在它上面的行中。相反,我收到了“A [x]”作为结果。Z3数组:为什么Select()不返回由Store()保存的值?
I = IntSort()
A = Array('A', I, I)
x = Int('x')
y = Int('y')
Store(A, x, y)
print Select(A,x)
为什么Select()
没有返回Store()
存储的值?
谢谢。
Nikolaj,这太棒了,谢谢!但是,我真的很好奇Z3的简化()。看起来它可以做一些“优化”,但它有多好?与编译器完成的优化进行任何比较?关于简化如何在内部工作的任何文档/论文?谢谢! – user311703
“简化”只是一个自下而上的重写器。我们没有描述它的论文,因为它基于众所周知的技术。我还假设它比编译器(如gcc)应用的中间代码优化简单得多。您可以在Z3代码库(http://z3.codeplex.com)的目录src/ast/rewriter中找到它的实现。数组简化规则在http://z3.codeplex.com/SourceControl/changeset/view/2a286541e002#src/ast/rewriter/array_rewriter.cpp文件中实现 –