Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Widening operator doesn't widen #289

Open
lwerdna opened this issue Sep 7, 2022 · 0 comments
Open

Widening operator doesn't widen #289

lwerdna opened this issue Sep 7, 2022 · 0 comments

Comments

@lwerdna
Copy link

lwerdna commented Sep 7, 2022

Errant Behavior: In (at least) the following case, widening has no effect, although the interval being widened to has a value not included in the first interval:

Interval a covers 32-bit values 0x000003E8 through 0xFFFFFFFF and interval b covers 32-bit values 0x000003E9 thru 0x00000000. Interval c is the widening of a to b:

a = StridedInterval(None, 32, 1, 1000, 0xFFFFFFFF)
b = StridedInterval(None, 32, 1, 1001, 0)
c = a.widen(b)

The value 0 is not included in interval a, but is included in interval b:

(Pdb) p a.solution(0)
False
(Pdb) p b.solution(0)
True

Yet widening a to b just results in a, and 0 isn't included:

(Pdb) p a.identical(c)
True
(Pdb) p c.solution(0)
False

Expected behavior: I expect c to be some interval wider than a which includes all values of b (in particular: 0), something like <32>0x1[0x3e8, 0] or <32>0x1[0,0xFFFFFFFF].

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

No branches or pull requests

1 participant