45044
|
1 |
package body Loop_Invariant
|
|
2 |
is
|
|
3 |
|
|
4 |
procedure Proc1 (A : in Natural; B : in Word32; C : out Word32)
|
|
5 |
is
|
|
6 |
begin
|
|
7 |
C := 0;
|
|
8 |
for I in Natural range 1 .. A
|
|
9 |
--# assert Word32 (I - 1) * B = C;
|
|
10 |
loop
|
|
11 |
C := C + B;
|
|
12 |
end loop;
|
|
13 |
end Proc1;
|
|
14 |
|
|
15 |
procedure Proc2 (A : in Natural; B : in Word32; C : out Word32)
|
|
16 |
is
|
|
17 |
begin
|
|
18 |
C := 0;
|
|
19 |
for I in Natural range 1 .. A
|
|
20 |
--# assert Word32 (I - 1) * B = C;
|
|
21 |
loop
|
|
22 |
C := C + B;
|
|
23 |
--# assert Word32 (I) * B = C;
|
|
24 |
end loop;
|
|
25 |
end Proc2;
|
|
26 |
|
|
27 |
end Loop_Invariant;
|