-
Notifications
You must be signed in to change notification settings - Fork 36
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
Fix why3 tactic (WIP) #1174
base: master
Are you sure you want to change the base?
Fix why3 tactic (WIP) #1174
Conversation
Awesome! Please ping me when I can try it. |
Hi @NotBad4U . I already made quite some improvements in the why3 tactic. But it may not be sufficient for what you want though. Indeed it still does not handle quantifications on propositions, which is out of the scope of first-order logic. However, could you please try it to give me your feedback? |
Precision: outer universal quantifications on propositions are fine as the why3 tactic starts by doing some assume. The problem is with existential quantifications on propositions and quantifications that are deep inside. |
I can not compile your branch. I got this error:
I have the version |
You now need why3 1.8.0 (#1176). |
I did some tests and it returned nice first results.
In this test, the first one failed, but the second passed when
|
As before, the why3 tactic starts by doing some assume. Then, the tactic tries to translate the environment as much as possible, and then the goal. The tactic fails if the goal cannot be translated.
A term [t:Set] is translated to a Why3 type if it is algebraic (i.e. built from function applications and variables only) and its variables are in the environment.
A term [t:T _] is translated to a Why3 term if it is algebraic and its variables are in the environment or are quantified variables.
A term [t:P _] is translated to a Why3 formula if it has the form of a formula in predicate calculus. Subterms that are not in predicate calculus are replaced by fresh propositions.
TODO: