summaryrefslogtreecommitdiff
path: root/Test/AbsHoudini/quant2.bpl
blob: 1091155b03928d9f78dbefdbd9cb6b9cd25788c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// RUN: %boogie -noinfer -contractInfer -printAssignment -inlineDepth:1 -abstractHoudini:HoudiniConst -z3opt:MBQI=true "%s" > "%t"
// RUN: %diff "%s.expect" "%t"
function {:existential true} {:absdomain "Intervals"} b1(x: int) : bool;

procedure main() 
{
   var i: int;
   var x: int;
   var arr: [int] int;

   i := 0;

   while(*) 
     invariant (i >= 0) && (forall j: int :: (0 <= j && j < i) ==> b1(arr[j]));
   {
       havoc x;
       assume x == 0 || x == 1;

       arr[i] := x;
       i := i + 1;
   }

   havoc x;
   assume x >= 0 && x < i;
   assert arr[x] == 0 || arr[x] == 1;
}