04.01.2015 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!