-
Notifications
You must be signed in to change notification settings - Fork 273
Quantifier instantiation via simplistic E-matching #8224
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
base: develop
Are you sure you want to change the base?
Quantifier instantiation via simplistic E-matching #8224
Conversation
Despite this being a "draft" PR I would like to ask for feedback on the following aspects:
|
e08d98e
to
24806af
Compare
24806af
to
69f8720
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #8224 +/- ##
===========================================
+ Coverage 79.17% 79.63% +0.45%
===========================================
Files 1733 1733
Lines 198963 197910 -1053
Branches 17967 18186 +219
===========================================
+ Hits 157536 157599 +63
+ Misses 41427 40311 -1116 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
6e48e44
to
49b3909
Compare
7bb221f
to
64252a0
Compare
d821caa
to
090c84a
Compare
This is now done, comment explaining the (expected) verification failure is now included. |
090c84a
to
72550cf
Compare
This needs serious consideration: failing quantifier instantiation is the leading source of proof brittleness, and we are opening the door to that here. |
I would much prefer a more deterministic, predictable and robust solution to this. |
Hard maybe? So, it would be good but there is going to be a limit on how much we can do like this. Unless we put a refinement loop around the solver and do something like MBQI. Getting that stable and reliable is tricky. Given the amount of work that has gone into E-matching in Z3 and Andy's decade+ of work on quantifiers in cvc5, I wonder whether it would be more efficient (in terms of dev-hours / things proved) to improve our SMT integration. To actually answer the question you asked, things that might help:
HTH |
72550cf
to
5e379d6
Compare
5e379d6
to
e076dab
Compare
conjunction(...) and disjunction(...) helper functions produce the appropriate result for empty operand sequences.
e076dab
to
2a85427
Compare
Use E-matching on index expressions to instantiate quantifiers when eager instantiation (aka enumerative instantiation) cannot be applied.
2a85427
to
9be48ee
Compare
Use E-matching on index expressions to instantiate quantifiers when eager instantiation (aka enumerative instantiation) cannot be applied.