2012-11-21 47 views

回答

2

有需要注意两件事情:

第一: 当你写

Store(A, x, y) 

您创建一个有三个参数,A,X和Y。 有没有副作用:A. 您可以为这学期起一个名字写

B = Store(A,x,y) 

二:除非你想让它 Z3并没有简化条款。 python API公开了称为简化的简化函数。 您可以通过调用简化器来获得缩短的期限。 示例如下:

I = IntSort() 
A = Array('A', I, I) 
x = Int('x') 
y = Int('y') 
B = Store(A, x, y) 
print Select(B,x) 
print simplify (Select(B,x)) 
+0

Nikolaj,这太棒了,谢谢!但是,我真的很好奇Z3的简化()。看起来它可以做一些“优化”,但它有多好?与编译器完成的优化进行任何比较?关于简化如何在内部工作的任何文档/论文?谢谢! – user311703

+0

“简化”只是一个自下而上的重写器。我们没有描述它的论文,因为它基于众所周知的技术。我还假设它比编译器(如gcc)应用的中间代码优化简单得多。您可以在Z3代码库(http://z3.codeplex.com)的目录src/ast/rewriter中找到它的实现。数组简化规则在http://z3.codeplex.com/SourceControl/changeset/view/2a286541e002#src/ast/rewriter/array_rewriter.cpp文件中实现 –

相关问题