Programmation procédurale preuves
description
Transcript of 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
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)
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)
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)
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)
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.
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.
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.
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.
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.