Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with tactic qsat #7217

Open
merlinsun opened this issue May 8, 2024 · 3 comments
Open

Issue with tactic qsat #7217

merlinsun opened this issue May 8, 2024 · 3 comments
Assignees
Labels

Comments

@merlinsun
Copy link

Hi,
For this following instance, z3 8f4ffc7 incorrectly returns unsat with (check-sat-using qsat).

$ z3 small.smt2 
sat
unsat
$ cat small.smt2 
(declare-const x (Array Bool Bool))
(declare-fun a () (Array Bool Bool))
(assert (forall ((v (Array (Array Bool Bool) Real))) (= 0.0 (select (store v x 0.0) a))))
(check-sat)
(check-sat-using qsat)
@NikolajBjorner
Copy link
Contributor

It is related to qel.

z3 7217.smt2 /v:2 smt.qsat_use_qel=false

@hgvk94
Copy link
Contributor

hgvk94 commented May 15, 2024

Yes. It has to do with arrays indexed by other arrays and arrays indexed by finite types. The current MBP (and the earlier one) does not support this fragment. Its going to take a while to actually fix it. The current implementation was done so that it doesn't break on Leo's benchmarks from Solidity (which have arrays indexed by other arrays). So we can't fully disable it for the fragment either.

@NikolajBjorner
Copy link
Contributor

we could add a filter that rules out qel on formulas outside of supported fragment.
What is the specification of the filter?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants