• Aucun résultat trouvé

Preuve de programmes Logique de Hoare

N/A
N/A
Protected

Academic year: 2022

Partager "Preuve de programmes Logique de Hoare"

Copied!
2
0
0

Texte intégral

(1)

Preuve de programmes Logique de Hoare

Exercice L’algorithme suivant calcule les entiers q et r t.q. q = x/y et q∗y+r=x. Prouver :

{x≥0∧y >0}

q:=0;

r:=x;

while r >= y do r := r - y;

q := q + 1;

done

{q∗y+r=x∧0≤r < y}

Correction:

On d´eroule l’algorithme avecx= 13 ety= 2:

q 0 1 2 3 4 5 6

r 13 11 9 7 5 3 1

On poseInv=q∗y+r=x∧r≥0. On prouve : 1. Avant le while:

{x≥0∧y >0}

q:= 0;

r:=x;

{Inv}={q∗y+r=x∧r≥0}

{x≥0∧y >0} ⇒

{x≥0} ≡

{x=x∧x≥0} ≡ {0∗y+x=x∧x≥0}

q:= 0;

{q∗y+x=x∧x≥0}

r:=x;

{q∗y+r=x∧r≥0}

1

(2)

2. Le while:

{Inv}={q∗y+r=x∧r≥0}

while r≥y do r:=r−y;

q:=q+ 1;

done

{Inv∧r < y}={q∗y+r=x∧0≤r < y}

{q∗y+r=x∧r≥0∧r≥y} ⇒ {q∗y+r=x∧r≥y} ≡ {(q∗y+y+r−y=x∧r≥y} ≡ {(q+ 1)∗y+r−y=x∧r−y≥0}

r:=r−y;

{(q+ 1)∗y+r=x∧r≥0}

q:=q+ 1;

{q∗y+r=x∧r≥0}

3. On en conclut par la r`egle de cons´equence

{x≥0∧y >0}

P rog

{q∗y+r=x∧0≤r < y}

2

Références

Documents relatifs

– Sous cette même précondition, la valeur de len(t) − i à la fin du corps de la boucle est strictement plus petite qu’au début. Donc le

– Sous cette même précondition, la valeur de len(t)− i à la fin du corps de la boucle est strictement plus petite qu’au début. Donc le

La proposition suivante montre qu'on peut écrire le PGDC de deux nombres comme une combinaison linéaire entière de ces deux nombres.. Lemme 9.1 (Lemme

possibilit´es (la division par 2! correspond au fait que la d´ecomposition en produit de cycles `a supports disjoints est unique modulo l’ordre des cycles, et pour arranger

[r]

[r]

[r]

Exercice 03 : Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa