Refine the abstract domain of values #490
Merged
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.
Introduce a
Num p
abstract value that stands for any number (but no pointers), with provenancep
. In non-strict mode, this makes the value analysis more precise than usingIfptr p
for the same purpose, like we did before. (In particular, it should address the imprecision mentioned in #489, even though thevlub
function remains non-monotonic.)Also: minor simplifications and cleanups in the management of provenance. In strict mode, instead of setting all provenances to
Pbot
, just propagate them but ignore them inaptr_of_aval
. Simplifyvnormalize
and its proof consequently.