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 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édurale preuves Preuves sur les R-langages Exemple : Soit la procédure récursive : F 91 (x,y) =si x > 100 : y := x-10 sinon F 91 (x+11,z); f 91 (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 y=91)
Programmation procédurale preuves Preuves sur les R-langages Dans le cas où x > 100, le résultat est immédiat. Dans le cas 0 =0 {F91(x+11; z)} (x>89 ==>z=x+1) et x z=91. 2) z>=0 {F91(z;y)} (z>100 ==>y=z-10 )et (z y=91)
Programmation procédurale preuves Preuves sur les R-langages D'après 1) deux cas apparaissent: x>89 : donc z = x+1 et d'après 2) deux sous cas 11) x+1 > 100, c'est à dire x>99, donc x =100 et donc y=x+1-10=91 (q(x,y) vérifiée) 12) x+1 <=100, cad x <= 99 donc 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édurale preuves 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édurale preuves 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édurale preuves 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édurale preuves 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
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.