Pull assumptions out of quantifiers if they don't refer to quantified variable #760
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.
When computing the non-global assumptions of a path condition layer, sometimes we will put assumptions in the body of the quantifier that don't actually depend on the quantified variables in any way.
Since there is a general issue in Silicon (especially with MCE) where sometimes some information is required to trigger a quantifier, but this information is only assumed inside that same quantifier, it is generally desirable to pull information out of quantifiers if possible. So here, we check if there are assumptions that don´t depend on the quantified variables, and if so, we pull them out of the quantifier and add them to the non-quantified global assumptions instead. This fixes one example in isssue #387 (but not all of them).
Logically, the resulting assumptions are completely equivalent, so it should not be possible to introduce any soundness issues this way.