Merge branch 'upgrade_proofs_coq_8_11_to_8_16' into 'master'
[why3.git] / bench / check-ce / for1_mono.mlw
blob840de98907262a696cda86fb5c329bc855efca40
1 use int.Int
3 type t = { mutable c : int }
5 let f ()
6   ensures { result = 2 }
7 = let x = { c = 0 } in
8     for i = 0 to 1 do
9       invariant { x.c >= 0 }
10       x.c <- x.c + 1
11     done;
12     x.c
15 counterexamle: `x = 0`, `i = 2` at beggining of loop.
17 The execution of `f` with the counterexample:
18 - terminates normally if executed concretly;
19 - terminates in error if executed abstractly (postcondition fails)
21 It is a real counterexample due to underspecification (weak loop
22 invariant).