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 />
Dies führt auf folgende Spezifikation:<br />
while u x do<br />
begin<br />
{ P } x = A y = B<br />
0 = 0 y x = A y = B<br />
z := 0;<br />
z = 0 y x = A y = B<br />
u := 0;<br />
{ I} z = u y x = A y = B<br />
{ IB } z = u y u x x = A y = B<br />
r := x;<br />
z + y = (u + 1) y x = A y = B<br />
z := z + y;<br />
z = (u + 1) y x = A y = B<br />
R 1<br />
R 1<br />
R 1<br />
3.6.7 Verifikation von Code <strong>zur</strong> Er<strong>mit</strong>tlung des ggT<br />
<strong>Der</strong> folgende Code zieht jeweils die Variable <strong>mit</strong> <strong>dem</strong> aktuell größeren Wert<br />
von der <strong>mit</strong> <strong>dem</strong> momentan kleineren Wert ab. Dies wird wiederholt, bis beide<br />
Variablen den gleichen Wert haben, ist dies erreicht, ist der ggT er<strong>mit</strong>telt.<br />
function ggT(x, y : integer) : integer;<br />
var a, b : integer;<br />
begin<br />
a := x;<br />
b := y;<br />
while a b do<br />
begin<br />
while a > b do<br />
a := a - b;<br />
while b > a do<br />
b := b - a;<br />
end;<br />
ggT := b;<br />
end;<br />
Anweisungen, die zu<br />
verifizieren sind<br />
1. Umfassende Vor- und Nachbedingungen aufstellen:<br />
end<br />
u := u + 1;<br />
{ I} z = u y x = A y = B<br />
R 1<br />
{ P } x > 0 y > 0<br />
a := x;<br />
{ IB } z = u y x = A y = B (u x)<br />
R 4a<br />
b := y;<br />
{ Q } z = x y x = A y = B<br />
while a b do<br />
begin<br />
while a > b do<br />
begin<br />
end;<br />
end;<br />
while b > a do<br />
begin<br />
end;<br />
a := a - b;<br />
b := b - a;<br />
{ Q } a = b b = ggT(x, y)<br />
45<br />
46