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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Michael Gellner<br />

Einführung in die Verifikation<br />

Michael Gellner<br />

Einführung in die Verifikation<br />

Schleife stellt hierbei erneut die für die Schleife aufgestellte Invariante<br />

dar. Hierin wird die Variable r durch die Variable x substituiert.<br />

x = q y + x x 0<br />

r := x;<br />

x = q y + r r 0<br />

Ebenso wird auch <strong>mit</strong> der Initialisierung der Variablen q verfahren:<br />

x = 0 y + x x 0<br />

q := 0;<br />

x = q y + r r 0<br />

Schritt 5:<br />

Abschließend entsteht auch aus der Vorbedingung des Programms und<br />

der oberen Klausel aus der ersten Zuweisung kein Widerspruch.<br />

Aus <strong>dem</strong> Quelltext und der <strong>Hoare</strong>-Klauseln geht die folgende Spezifikation<br />

(auch als Beweisskizze bezeichnet) hervor:<br />

while r >= y do<br />

begin<br />

{ P } x 0 y > 0<br />

x = 0 y + x x 0<br />

q := 0;<br />

x = q y + r r 0<br />

r := x;<br />

{ I } x = q y + r r 0<br />

r<br />

{ I B } x = q y + r r 0 r y<br />

:= x;<br />

x = (q + 1) y + r – y r – y 0<br />

r := r - y;<br />

q := q + 1;<br />

x = q y + r r 0<br />

R 1<br />

R 1<br />

R 1<br />

R 1<br />

R 4a<br />

end<br />

{ I B } x = q y + r r 0 r y<br />

{ I B } x = q y + r r 0 r < y<br />

{ Q } x = q y + r r 0 r < y<br />

3.6.2 Bilden des Quadrats aus einer Zahl<br />

Das folgende Programm bildet aus einer eingegebenen Zahl n das Quadrat:<br />

function quad(n : integer) : integer;<br />

var i, k, y : integer;<br />

begin<br />

i := 0;<br />

k := -1;<br />

y := 0;<br />

while i < n do<br />

begin<br />

i := i + 1;<br />

k := k + 2;<br />

y := y + k;<br />

end;<br />

quad := y;<br />

end;<br />

25<br />

26

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!