mirror of
https://github.com/AdaCore/why3.git
synced 2026-02-12 12:34:55 -08:00
use "return" in several examples
This commit is contained in:
@@ -21,8 +21,6 @@ module Decrease1
|
||||
variant { j - i }
|
||||
= if i < j then decrease1_induction a (i+1) j
|
||||
|
||||
exception Found
|
||||
|
||||
let search (a: array int)
|
||||
requires { decrease1 a }
|
||||
ensures {
|
||||
@@ -30,18 +28,14 @@ module Decrease1
|
||||
\/ (0 <= result < length a /\ a[result] = 0 /\
|
||||
forall j: int. 0 <= j < result -> a[j] <> 0) }
|
||||
= let i = ref 0 in
|
||||
try
|
||||
while !i < length a do
|
||||
invariant { 0 <= !i }
|
||||
invariant { forall j: int. 0 <= j < !i -> j < length a -> a[j] <> 0 }
|
||||
variant { length a - !i }
|
||||
if a[!i] = 0 then raise Found;
|
||||
if a[!i] > 0 then i := !i + a[!i] else i := !i + 1
|
||||
done;
|
||||
-1
|
||||
with Found ->
|
||||
!i
|
||||
end
|
||||
while !i < length a do
|
||||
invariant { 0 <= !i }
|
||||
invariant { forall j: int. 0 <= j < !i -> j < length a -> a[j] <> 0 }
|
||||
variant { length a - !i }
|
||||
if a[!i] = 0 then return !i;
|
||||
if a[!i] > 0 then i := !i + a[!i] else i := !i + 1
|
||||
done;
|
||||
-1
|
||||
|
||||
let rec search_rec (a: array int) (i : int)
|
||||
requires { decrease1 a /\ 0 <= i }
|
||||
|
||||
Reference in New Issue
Block a user