Generate easier POs for non-trivial diverges clauses #3430
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.
Related Issue
This pull request fixes #29.
Intended Change
A non-trivial (i.e, neither
true
norfalse
) diverges clause results in two contracts to be verified. Previously, there was one where the value of the clause (herediv
) is not true and the method therefore terminates, and one where the method does not terminate.E.g., the two POs would look like
pre & !div -> <m()>post
andpre -> [m()] post
. This resulted in more complex proofs, because the case wherediv
is false had to be considered as well for the second PO.This PR changes the POs to
pre & !div -> <m()>post
andpre & div -> [m()] post
Hence, we have a proper cut.
Type of pull request
Ensuring quality
Additional information and contact(s)
The contributions within this pull request are licensed under GPLv2 (only) for inclusion in KeY.