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.
#776 introduces the
refute
statements, simplifies the interface between Gobra and Viper, and fixes a few long-lasting bugs. It is a step in the right direction.Nonetheless, I'm undoing this PR for two reasons:
SiliconFrontendAPI
. Because of this, and because the chopper does not properly handle termination measures, we usually get errors on the chopped parts because the output does not contain the declaration of domains that define termination measures.--printVpr
is passed. In particular, termination measures are printed asrequires decreases ...
orensures decreases ...
. In some cases, I also noticed that the pretty printer insers an@
before a predicate name when a predicate instance is used as a termination measure.While the errors in the pretty printer could be easily solved with a few hacks (in silver), the issue with the chopper is a major dealbreaker. I think the proper solution to this requires promoting termination checking from a Viper plugin to a first-class feature in Viper. Maintaining termination support as a plugin will only lead to hacky solutions.
After the Viper issues are addressed, I would be happy to remerge this PR in its entirety