Modelli e computazione - modelli della concorrenza (L. Pomello

Transcript

Modelli e computazione - modelli della concorrenza (L. Pomello
Modelli e computazione - modelli della concorrenza (L. Pomello)
Esercizi
Si dimostri la correttezza totale delle seguenti triple di Hoare:
1. di questo esercizio é stata data la prova per esteso in altro file
{m > 0 ∧ n > 0}
x := m;
y := n;
z := 0;
Inv = {z = (m ∗ n) − (x ∗ y) ∧ x ≥ 0}
while (x 6= 0) do
if (x mod 2 = 0) then x := x div 2; y := y ∗ 2;
else x := x − 1; z := z + y;
fi
od
{z = m ∗ n}
Funzione di terminazione: t = x.
2. il seguente esercizio é stato svolto in dettaglio a lezione
{y > 0}
x := 1;
j := 1;
Inv = {x = z j−1 ∧ y ≥ j − 1}
while (y ≥ j) do
j := j + 1;
x := x ∗ z;
od
{x = z y }
Funzione di terminazione: t = y − j + 1.
3.
{m ≥ 0}
y := 1;
z := x;
k := m;
Inv = {y ∗ z k = xm ∧ k ≥ 0}
while (k 6= 0) do
if (k mod 2 6= 0) then k := k − 1; y := y ∗ z fi
k := k div 2;
z := z ∗ z
od
{y = xm }
Funzione di terminazione: t = k.
1
4.
{X = x0 ∧ x0 ≥ 0}
Y := 0;
Inv = {Y = 2(x0 − X) ∧ X ≥ 0}
while (X 6= 0) do
X := X − 1;
Y := Y + 2
od
{Y = 2x0 }
Funzione di terminazione: t = X.
2