summaryrefslogtreecommitdiff
path: root/Test/AbsHoudini/houd12.bpl
diff options
context:
space:
mode:
authorGravatar akashlal <unknown>2013-04-18 17:50:18 +0530
committerGravatar akashlal <unknown>2013-04-18 17:50:18 +0530
commita2fcc9e7617800e2139a9cbbfa720222e4c1b6f5 (patch)
tree48d4d5b6d86968a058ffbbe9661518ec763b9204 /Test/AbsHoudini/houd12.bpl
parent308a4d37f063384cb8de166b248d9377c904e77c (diff)
Nice clean re-implementation of AbstractHoudini. And tests
Diffstat (limited to 'Test/AbsHoudini/houd12.bpl')
-rw-r--r--Test/AbsHoudini/houd12.bpl58
1 files changed, 58 insertions, 0 deletions
diff --git a/Test/AbsHoudini/houd12.bpl b/Test/AbsHoudini/houd12.bpl
new file mode 100644
index 00000000..b3a1a6db
--- /dev/null
+++ b/Test/AbsHoudini/houd12.bpl
@@ -0,0 +1,58 @@
+// Example to test candidate annotations on loops
+
+function {:existential true} Assert(): bool;
+function {:existential true} b1():bool;
+function {:existential true} b2():bool;
+function {:existential true} b3():bool;
+function {:existential true} b4():bool;
+function {:existential true} b5():bool;
+function {:existential true} b6():bool;
+function {:existential true} b7():bool;
+
+var x: int;
+var y: int;
+
+
+procedure foo()
+modifies x;
+modifies y;
+ensures (b4() || x == 0);
+ensures (b5() || y == 10);
+ensures (b6() || x == 10);
+ensures (b7() || y == 11);
+
+{
+ x := 10;
+ y := 0;
+
+ goto Head;
+
+Head:
+
+ //loop invariants
+ assert (b1() || x < 0);
+ assert (b2() || x >= 0);
+ assert (b3() || x + y == 10);
+ goto Body, Exit;
+
+Body:
+ assume x > 0;
+ x := x - 1;
+ y := y + 1;
+
+
+ goto Head;
+
+Exit:
+ assume !(x > 0);
+ return;
+}
+
+// expected assigment: Assert -> false, b1->true,b2->false,b3->false,b4->false, b5->false, b6->true,b7->true
+
+
+
+
+
+
+