Skip to content
Discussion options

You must be logged in to vote

In label 1, x can come from label 0 or 2.
label 0 : [0, 0]
label 2 : [1, 10]

FYI, label 2's [1, 10] is not explicitly written on the table too.

Here may help the understanding;
Iter 1 's label 0 is \bot because before doing x:=0, there is nothing defined.
Iter 1's label 1 is [0, 10] because before doing br (x < 10) L2 L3, x can be [0, 0] (if from label 0), or [1, 10] (if from label 2), so we must join the two to get the sound abstract value of x before doing br (x < 10) L2 L3
Iter 1's label 2 is [0, 9] because before doing x := add x 1, x can be [0, 9] (since it should be jumped from L1, by passing the filter x < 10)

Replies: 3 comments

Comment options

You must be logged in to vote
0 replies
Answer selected by doit-man
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants
Converted from issue

This discussion was converted from issue #199 on May 31, 2024 04:53.