我想证明这个过程中的循环将使用变体(绑定函数)终止
每次重复时,变量将是I
并且下限是0
(I:= 0)
,大小I
将减小直到达到下限0
我如何证明I
在这个循环中会减小?
procedure Find
(Key: Integer;
Data : in MyArray;
Index: out Integer;
Found: out Boolean)
--# post (Found -> Data(Index) = Key);
is
I: Integer;
begin
I := 0;
Found := False;
loop
--# assert (I >= 0) and
--# (I <= Data'Last + 1) and
--# (Found -> Data(I) = Key);
exit when (I > Data 'Last) or Found;
if(Data(I)) = Key
then
Found := True;
else
I:= I + 1;
end if;
end loop;
Index := I;
end Find;