-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Unexpected proof failure due to minor input tweak #7444
Comments
I have now come across a second example that suffers from this issue. Hence, I'm all the more eager to see a resolution to this. ;) |
Your eagerness is my command |
Hi Rustan. You’re right, the problem is a missing quantifier instantiation, and it’s due to relevancy filtering. Running with In the version of the query where
With relevancy filtering, the instantiation in the second step never happens. Given When you include When you include I'm not sure what would be a good fix here, since relevancy filtering is behaving as intended. One solution is to fix the triggers so that proofs don't depend on irrelevant atoms.
|
The SMT input below (very quickly) gives
unsat
, as expected. The input has the formHowever, by removing the
X
, which is not used anywhere, Z3 instead (very quickly) givesunknown
. Likewise, if(*) and (**)
is replaced by justfalse
(which perhaps is what Z3 ends up doing in the absence ofand X
), then the answer is againunknown
. In other words, it is as if the(*) and (**)
prompts Z3 to do the necessary case split onP
and thenQ
. But, sinceP or Q
is already given, I would expect that case split to already be available to Z3. (My hunch is that there's something wrong with the instantiation of quantifiers. Like, the quantifiers don't get appropriately instantiated just from theP or Q
.)I get this behavior with Z3 version 4.13.3 (and also with version 4.12.1).
Input
The text was updated successfully, but these errors were encountered: