diff options
Diffstat (limited to 'Test/AbsHoudini/houd6.bpl')
-rw-r--r-- | Test/AbsHoudini/houd6.bpl | 92 |
1 files changed, 46 insertions, 46 deletions
diff --git a/Test/AbsHoudini/houd6.bpl b/Test/AbsHoudini/houd6.bpl index 4d9cc9e8..4279e4ce 100644 --- a/Test/AbsHoudini/houd6.bpl +++ b/Test/AbsHoudini/houd6.bpl @@ -1,46 +1,46 @@ -// RUN: %boogie -noinfer -contractInfer -printAssignment -abstractHoudini:IA[ConstantProp] "%s" > "%t"
-// RUN: %diff "%s.expect" "%t"
-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;
-function {:existential true} b8():bool;
-function {:existential true} Assert(): bool;
-
-var array:[int]int;
-
-procedure foo (i:int)
-requires b6() || i < 0;
-requires b5() || i == 0;
-requires b2() || i > 0;
-ensures b3() || array[i] > 0;
-modifies array;
-ensures Assert() || (forall x:int :: {array[x]} x == i || array[x] == old(array)[x]);
-{
- array[i] := 2 * i;
-}
-
-procedure bar (j:int) returns (result:int)
-requires b8() || j < 0;
-requires b7() || j == 0;
-requires b4() || j > 0;
-modifies array;
-ensures Assert() || (forall x:int :: {array[x]} (x == j) || array[x] == old(array)[x]);
-ensures b1() || array[j] == old(array)[j];
-{
- call foo(j);
- result := array[j];
-}
-
-var p:int;
-
-procedure main() returns (result: int)
-modifies array;
-{
- call result:= bar(p);
-}
-
-// expected assigment: Assert -> false, bi->true forall i
+// RUN: %boogie -noinfer -contractInfer -printAssignment -abstractHoudini:IA[ConstantProp] "%s" > "%t" +// RUN: %diff "%s.expect" "%t" +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; +function {:existential true} b8():bool; +function {:existential true} Assert(): bool; + +var array:[int]int; + +procedure foo (i:int) +requires b6() || i < 0; +requires b5() || i == 0; +requires b2() || i > 0; +ensures b3() || array[i] > 0; +modifies array; +ensures Assert() || (forall x:int :: {array[x]} x == i || array[x] == old(array)[x]); +{ + array[i] := 2 * i; +} + +procedure bar (j:int) returns (result:int) +requires b8() || j < 0; +requires b7() || j == 0; +requires b4() || j > 0; +modifies array; +ensures Assert() || (forall x:int :: {array[x]} (x == j) || array[x] == old(array)[x]); +ensures b1() || array[j] == old(array)[j]; +{ + call foo(j); + result := array[j]; +} + +var p:int; + +procedure main() returns (result: int) +modifies array; +{ + call result:= bar(p); +} + +// expected assigment: Assert -> false, bi->true forall i |