Der Umgang mit dem Hoare-Kalkül zur Programmverifikation
Der Umgang mit dem Hoare-Kalkül zur Programmverifikation
Der Umgang mit dem Hoare-Kalkül zur Programmverifikation
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Michael Gellner<br />
Einführung in die Verifikation<br />
I: k = 2 i – 1 y = i 2 i n<br />
Offen sind nun noch B und B, die sich durch Ablesen bzw. durch Negieren<br />
des Abgelesenen ergeben:<br />
B: i < n<br />
B: (i < n)<br />
Da<strong>mit</strong> ergibt sich:<br />
while i < n do<br />
begin<br />
{ I} k = 2 i – 1 y = i 2 i n<br />
{ IB } k = 2 i – 1 y = i 2 i n i < n<br />
i := i + 1;<br />
Michael Gellner Einführung in die Verifikation<br />
tion fortgesetzt werden kann, müssen die augenscheinlich nun differierenden<br />
Terme in den Klauseln abgeglichen werden 5 .<br />
{ I} k = 2 i – 1 y = i 2 i n<br />
while i < n do<br />
begin<br />
{ I B } k = 2 i –1 y = i 2 i n i < n<br />
k + 2 = 2 (i + 1) –1 y + k + 2 = (i + 1) 2 i + 1 n<br />
i := i + 1;<br />
k + 2 = 2 i –1 y + k + 2 = i 2 i n<br />
k := k + 2;<br />
k := k + 2;<br />
y := y + k;<br />
end<br />
{ I} k = 2 i – 1 y = i 2 i n<br />
{ IB } k = 2 i – 1 y = i 2 i n (i < n)<br />
end<br />
k = 2 i –1 y + k = i 2 i n<br />
y := y + k;<br />
{ I } k = 2 i –1 y = i 2 i n<br />
{ I} k = 2 i – 1 y = i 2 i n<br />
{ I B } k = 2 i – 1 y = i 2 i n (i < n)<br />
3./4.Da es im Falle der While-Schleife innere Anweisungen (die drei Zuweisungen)<br />
gibt, sind diese zunächst <strong>mit</strong>tels Zuweisungsaxiom von unten nach<br />
oben zu verifizieren:<br />
k + 2 = 2 (i + 1) – 1 y + k + 2 = (i + 1) 2 i + 1 n<br />
i := i + 1;<br />
k + 2 = 2 i – 1 y + k + 2 = i 2 i n<br />
k := k + 2;<br />
k = 2 i – 1 y + k = i 2 i n<br />
y := y + k;<br />
{ I} k = 2 i – 1 y = i 2 i n<br />
Die oberste Klausel dieses Abschnitts trifft nun auf die zweite Klausel<br />
I B, die für die Iterationsregel aufgestellt wurde. Da<strong>mit</strong> die Verifika-<br />
29<br />
R 1<br />
R 1<br />
R 1<br />
Es ergibt sich also:<br />
k+2=2(i+1) –1 y+k+2=(i+1) 2 i+1n k=2i–1 y=i 2 in i