110 likes | 258 Views
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
E N D
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-10 sinon 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é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.