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
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