Programmation procédurale preuves

11
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes . Règle de l'appel (Hoare) . Exemple Preuves sur les B-algorithmes (Floyd) Automatisation

description

Programmation procédurale preuves. D. Preuves Preuves sur les R-algorithmes . Règle de l'appel (Hoare) . Exemple Preuves sur les B-algorithmes (Floyd) Automatisation. Programmation procédurale preuves. Preuves sur les R-langages - PowerPoint PPT Presentation

Transcript of Programmation procédurale preuves

Page 1: Programmation procédurale preuves

Programmation procéduralepreuves

D. Preuves

Preuves sur les R-algorithmes

. Règle de l'appel (Hoare)

. Exemple

Preuves sur les B-algorithmes (Floyd)

Automatisation

Page 2: Programmation procédurale preuves

Programmation procéduralepreuves

� Preuves sur les R-langages

• Théorie des systèmes formels( Méthode de Hoare).Soit f(x;y) : µ une déclaration de procédure de corps µ. Nous voulons démontrer que si p(x) est vérifiée à l'entrée de la procédure alors q(x,y) est vérifiée à la sortie.

p(x) {f(x;y):µ} q(x,y)x : listes des paramètres valeurs(entrées)y : listes des paramètres résultats(sorties)Théorème :

Si l'on peut démontrer la correction du corps µ relativement au prédicat d'entrée p(x) et au prédicat de sortie q(x, y) sous l'hypothèse de la correction par rapport à p et q de tous les appels internes alors :p(x) {f(x;y) : µ} q(x, y)

Page 3: Programmation procédurale preuves

Programmation procéduralepreuves

� Preuves sur les R-langagesExemple : Soit la procédure récursive :

F91(x,y) =si x > 100 : y := x-10sinon F91(x+11,z); f91(z, y)

Démontrer la correction partielle de cette procédure relativement aux prédicat p et q suivants:

p(x) : ( x>=0)

q(x, y) : (x>100 ==> y =x-10 )et (x<=100 ==> y=91)

Page 4: Programmation procédurale preuves

Programmation procéduralepreuves

� Preuves sur les R-langages

• Dans le cas où x > 100, le résultat est immédiat.Dans le cas 0 <= x <= 100, supposons la correction des appels internes, c'est à dire :

1) (x+11) >=0 {F91(x+11; z)} (x>89 ==>z=x+1) et x<=89 ==> z=91.

2) z>=0 {F91(z;y)} (z>100 ==>y=z-10 )et (z<=100 ==> y=91)

Page 5: Programmation procédurale preuves

Programmation procéduralepreuves

� Preuves sur les R-langages

• D'après 1) deux cas apparaissent:

x>89 : donc z = x+1et d'après 2) deux sous cas11) x+1 > 100, c'est à dire x>99, donc x =100et donc y=x+1-10=91 (q(x,y) vérifiée)

12) x+1 <=100, cad x <= 99donc y=91 (q(x,y) vérifiée)

x<=89 donc z=91 d'après 1)et d'après 2) y=91 (q(x, y) vérifiée)

Page 6: Programmation procédurale preuves

Programmation procéduralepreuves

� Preuves sur les B-langages(Floyd)

• Technique exposée sur les organigrammes qui n'est rien d'autre que la représentation graphique des B-algorithmes.

• Définition de points de coupure de sorte à former des cycles.

Page 7: Programmation procédurale preuves

Programmation procéduralepreuves

� Automatisation

• La démo part de la fin (post-condition) pour arriver à une plus faible condition. Ensuite il faudra prouver que la pré-condition implique cette plus faible( démonstrateur de théorème)

• Pour un D-algorithme, prouveur semi-automatique puisque on ne peut déterminer l'invariant de manière automatique.

• Pour un R-algorithme, prouveur entièrement automatique puisque pas de problème d'invariant.

Page 8: Programmation procédurale preuves

Programmation procéduralepreuves

� Automatisation ( Exemple )

• Les règles de Hoare définissent un système formel de preuve utilisant la logique des prédicats du premier ordre. Une automatisation pourrait être envisagée.

• L'automatisation sera basée sur un prouveur de théorème. Elle sera semi-décidable ( Théorie de la logique des prédicats). La difficulté réside dans le choix des bons invariants et reste entièrement à la charge de l'utilisateur.

Page 9: Programmation procédurale preuves

Programmation procéduralepreuves

� Automatisation

• Scénario du prouveur automatique utilisant le chaînage arrière.

Soit à prouver la correction partielle du programme P suivant muni des assertions d'entrées et de sortie (E et S) et d'un invariant de boucle I.

Page 10: Programmation procédurale preuves

Programmation procédurale

preuves

Page 11: Programmation procédurale preuves

Programmation procéduralepreuves

� Automatisation

• Pour prouver le but initial E {P} S (1), il faut prouver par la règle(SEQ) les 2 sous-buts :

E {P1} I (2) et I {P2} S (3)

(2) peut être prouvé par (AFF) et (SEQ)

Pour prouver (3) il faut prouver (IMP2)I {P2} I & (J>n) (4) et,I & (J>n) --> S (5)

L'implication (5) pourrait être montré facilement.