2016-10-17 2 views
0

ich den Python-API von Z3 mit [Version 4.4.2 - 64 bit] und ich versuche zu verstehen, warum z3 den Ausdruck in diesem Fall vereinfacht:z3py: vereinfachen verschachtelte Shops mit konkreten Werten

>>> a = Array('a', IntSort(), IntSort()) 
>>> a = Store(a, 0, 1) 
>>> a = Store(a, 0, 3) 
>>> simplify(a) 
Store(a, 0, 3) 

aber es funktioniert nicht in diesem Fall:

>>> a = Array('a', IntSort(), IntSort()) 
>>> a = Store(a, 0, 1) 
>>> a = Store(a, 1, 2) 
>>> a = Store(a, 0, 3) 
>>> simplify(a) 
Store(Store(Store(a, 0, 1), 1, 2), 0, 3) 

Antwort

0

Die simplifier nur die billigsten Schreibungen auf Arrays gilt. Also, wenn es zwei benachbarte Geschäfte für den gleichen Schlüssel findet, kann es die innerste Taste quetschen. Es gibt im Allgemeinen hohe Kosten, um überlappende Schlüssel zu finden, und außerdem könnten Schlüssel Variablen sein, bei denen nicht festgestellt werden kann, ob sie sich überschneiden.

+0

Vielen Dank für die Antwort! Es gibt eine Möglichkeit, den Ausdruck im zweiten Fall zu vereinfachen. – Bageyelet

Verwandte Themen