Skip to content

Commit 1bea9ef

Browse files
committed
Add test to demonstrate knowledge after loop with breaks
1 parent 164f12a commit 1bea9ef

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
method client(x: Int)
2+
requires x >= 15 && x <= 30
3+
{
4+
var i: Int := x;
5+
loop
6+
invariant i >= 15
7+
invariant i <= 30
8+
invariant i <= x
9+
invariant x < 20 && x > 16 ==> i >= 17
10+
invariant x >= 20 ==> i >= 20
11+
invariant broke && x <= 16 ==> i == 15
12+
invariant broke && x < 20 && x > 16 ==> i == 17
13+
invariant broke && x >= 20 ==> i == 20
14+
decreases i
15+
{
16+
i == 20 => break,
17+
true =>
18+
match {
19+
i == 15 => break,
20+
i == 17 => break
21+
};
22+
i := i - 1
23+
24+
};
25+
var y : Int;
26+
assume y != 17 && y != 20 && y != 15;
27+
assert i != y;
28+
assert i == 17 || i == 20 || i == 15;
29+
// @CheckError
30+
assert false
31+
}

0 commit comments

Comments
 (0)