We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 164f12a commit 1bea9efCopy full SHA for 1bea9ef
tests/multi-break-after-loop-knowledge.slang
@@ -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