Explanation of a tree interpolation query in Z3 4.6.0 #6094
Unanswered
prantikchatterjee
asked this question in
Q&A
Replies: 1 comment
-
Sorry, there is no support for old versions of z3, functionality that was removed. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
I am trying to use tree interpolation in Z3. It seems that this is no longer supported in the newer versions, however, I was able to run it on Z3 4.6.0, but the results are quite weird. For example, for the given SMT query, I get the following output:
(set-option :produce-models true)
(set-option :produce-interpolants true)
(set-logic ALL) ; has unbounded values, using catch-all.
(declare-fun x () Int)
(declare-fun x1 () Int)
(declare-fun x2 () Int)
(assert (! (and (> x 25) (= x x1 x2)) :named A))
(assert (! (< x1 30) :named B))
(assert (! (or (< x2 0) (> x2 35)) :named C))
(check-sat)
(get-interpolant A (interp B) (interp C))
output___________________
unsat
(interpolants
(or (and (<= x2 35) (>= x2 0)) (>= x1 30))
(not (>= x1 30))
(and (<= x2 35) (>= x2 0))
(or (not (>= x2 0)) (not (<= x2 35))))
I would have expected two interpolants, corresponding to the leaves, but it gives out four.
Am I making some mistake on the syntax?
Beta Was this translation helpful? Give feedback.
All reactions