Universal quantifiers with arrays as bound variables (C API) #6301
Unanswered
daneshvar-amrollahi
asked this question in
Q&A
Replies: 0 comments
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.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
I have a benchmark including a universal quantifier over an array as the bound variable, implemented using the C API of Z3 as follows:
This benchmark is basically adding two constraints to the solver which are:
∀fqv: a[fqv] = b[fqv]
a[0] != b[0]
with the following Z3_ast's:
(= false (= (select a #x00000000) (select b #x00000000)))
fqv
is also constrained to be between 0 and the size of the arrays.The result that I am getting out of
Z3_solver_check(ctx, theSolver)
isZ3_L_UNDEF
. However, I am expecting to getZ3_L_FALSE
, since consraint 1 and 2 cannot hold at the same time.Also, when I comment out the second constraint (
a[0] != b[0]
), it returnsZ3_L_TRUE
as expected.Is there a way to make Z3 deal with the example above (to return
Z3_L_FALSE
instead ofZ3_L_UNDEF
)? Should I use patterns, or is there also some other way?Beta Was this translation helpful? Give feedback.
All reactions