Improve the SMT translation by translating axiom taclets (mostly for invariants) #3564
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds axioms for some (dynamically generated) taclets to the SMT translation. Most of these taclets are axioms for class invariants (static/non-static, free, ...).
Additionally, the semantics of the bsum binder should be translated (not yet working).
Related Issue
This pull request addresses (parts of) #3555.
Plan
The goal was to make SaddleBackSearch and SumAndMax provable with SMT prep. macro + Z3. At the moment, most of the branches close but two subgoals are left open (probably because of bsum).
Type of pull request
Ensuring quality
Additional information and contact(s)
Some implementation details and considerations:
\notFreeIn
does not count as a varcond however. This is not a problem here, since all the term schema variables are bound variables after translation.TermSV
andFormulaSV
. We relaxed that forVariableSV
now (it worked out of the box with the same code after removing the check), since that is needed to translate taclets containing binders.ModularSMTLib2Translator
there is a list of prefixes. However, it is probably incomplete at the moment.This was done during the 3rd HacKeYthon. Thanks also to @BookWood7th!
The contributions within this pull request are licensed under GPLv2 (only) for inclusion in KeY.