【发布时间】:2019-01-24 12:48:55
【问题描述】:
我想证明这个过程中的循环将使用变体(绑定函数)终止
变量为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;
【问题讨论】:
-
在sn-p代码中包含MyArray的定义就好了。
-
你的意思是“增加”
-
我想证明这个过程中的循环将使用变体终止,但我不知道该怎么做