Skip to content

Conversation

@jerhard
Copy link
Member

@jerhard jerhard commented Nov 11, 2020

This introduces a fix so we no longer compute on top values within the interval domain.
The top in the interval is actually represented by the interval [-2^31, 2^31-1]. As the concrete values for a integer might lie outside this range, we cannot compute with this value, because this could yield unsound results. So instead, if one of the operands of a binary/unary operation is top, the result of the operation will be top, too.

Side note: Having a top value in an interval representation that is truly an over-approximation for all possible concrete values (including -2^63, 2^64-1) would require an implementation with arbitrary precision integers.

Arithmetic operations on the current top representation of the interval
domain now return top if any of the operands is top. The reason is that
the top value [-2^31,2^31-1] is too "narrow" to represent some concrete
values. Thus computing with it leads to spurious, unsound results.
Loss in precision is due to no longer computing with top in the interval
domain.
@michael-schwarz
Copy link
Member

LGTM!

@jerhard jerhard merged commit a5c13d3 into master Nov 12, 2020
@jerhard jerhard deleted the interval_no_compute_on_top branch November 12, 2020 15:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants