• Aucun résultat trouvé

Correction des règles de Hoare

N/A
N/A
Protected

Academic year: 2022

Partager "Correction des règles de Hoare"

Copied!
2
0
0

Texte intégral

(1)

Correction des règles de Hoare

On ommet dans les assertions les notations pour les interprétations, ce qui n’a aucune conséquence dans le déroulement de la preuve. Pour le reste, la preuve est celle de [1].

Lemme 1. Soient a, a0 ∈Aexpv, et X∈Var. Alors pour tout état σ, AvJa0[a/X]Kσ =AvJa0Kσ[AvJaKσ/X]

Démonstration. Induction structurelle sura0.

Lemme 2. Soit B∈Assn,X ∈Var eta∈Aexp. Alors pour tout état σ : σ|=B[a/X] ssi σ[AJaKσ/X]|=B.

Démonstration. Induction structurelle surB.

Théorème 3. Soit un triplet de Hoare{A}c{B}. Alors` {A}c{B}implique

|={A}c{B}.

On remarque que pour montrer le théorème, il suffit de prouver que chaque règle de Hoare est correcte, car on peut alors déduire le théorème par induction sur le nombre de règles dans une preuve.

Skip : |={A}skip{A} est clair.

Affectation : Notonsc≡(X := a). On a σ|=B[a/X] ssiσ[AJaKσ/X]|= B d’après le lemme 2, donc σ |= B[a/X] =⇒ CJX := aKσ |= B, d’où

|={B[a/X]}X :=a{B}.

Séquence : Supposons |= {A}c{C} et |= {C}c1{B}. Supposons σ |= A.

Alors CJc0Kσ |= C car |= {A}c0{C}. On a aussi CJc1K(CJc0Kσ) |= B car

|={C}c1{B}. D’où |={A}c0 c1{B}.

Conditionnelle : Supposons|={A∧b}c0{B} et|={A∧ ¬b}c1{B}. Sup- posonsσ |=A. Ou bienσ|=bou bienσ|=¬b. Dans le premier casσ|=Ab doncCJc0Kσ|=B. Dans le deuxième analoguement CJc1Kσ |=B aussi, donc

|={A} if bthen c0 else c1{B}.

1

(2)

Boucles While : Supposons |= {A∧b}c{A}, i.e A invariant de wwhile b do c. On sait queCJwK= limnθnavec desθnde domaine croissant, et définis de sorte que :

θn+1:σ7→

(σ si BJbKσ = falsenCJcK)σ si BJbKσ = true.

Montrons par induction surn,P(n) : ∀σ, σ0 ∈Σ, (θn(σ) =σ0 etσ|=A) =⇒ (σ0 |=A∧ ¬b)

On aura alors σ |= A =⇒ CJwKσ |= A ∧ ¬b pour tout σ ∈ Σ, d’où

|={A}w{A∧ ¬b} comme voulu.

Cas n= 0. Il est très vrai. Induction.On supposeP(n) pour unn>0.

Supposonsθn+1σ=σ0, etσ|=A. Deux cas sont possibles : 1. BJbKσ =trueetσ0 = (θnCJcK)σ;

2. BJbKσ =falseetσ =σ0.

Montrons que dans les deux casσ0 |=A∧ ¬b.

1. On aσ |=bdonc σ |=Ab. D’où il existe σ00∈Σ tel queσ00=CJcKσ etσ0 =θnσ00. D’où σ00|=Acar |={A∧b}c{A} (hypothèse du while).

Par hypothèse d’inductionσ0|=A∧ ¬b.

2. Iciσ|=A∧ ¬b. Maisσ =σ0 donc c’est fini.

Conséquence : Supposons|= (A =⇒ A0) et |={A0}c{B0} et|= (B0 =⇒ B). Supposonsσ|=A. Alors σ|=A0, d’où CJcKσ|=B0 et donc CJcKσ |=B.

D’où |={A}c{B}.

Références

[1] G.Winskel,The Formal Semantics of Programming Languages.

2

Références

Documents relatifs

Le cercle, étant le lieu du point M, touche la conique en deux points *, tous les cercles appartenant aux diffé- rentes valeurs de l'angle <x enveloppent la conique

L'illustre auteur a remarqué qu'on peut dans son pre- mier théorème remplacer les doubles permanences des suites ( ƒ ) et (G) parles variations sur permanences con- sidérées dans

[r]

∧ x n , où chaque x i est un littéral ; qu’une formule est dite sous forme normale disjonctive si et seule- ment si elle s’écrit comme une disjonction de clauses conjonctives ;

Conclusion : un entier naturel n ne peut pas s’écrire de deux façons différentes comme somme de nombres de Fibonacci non consécutifs.. Son écriture est

• Déterminer le pourcentage relatif à un caractère d’un groupe constitué de la réunion de deux groupes dont les effectifs et les. pourcentages relatifs à ce caractère

In particular, HTT cc features two type constructors which we use to provide annotations for side-effectful programs and for con- tinuation objects. R describes what holds when

L’accès aux archives de la revue « Annali della Scuola Normale Superiore di Pisa, Classe di Scienze » ( http://www.sns.it/it/edizioni/riviste/annaliscienze/ ) implique l’accord