1 / 11

Programmation procédurale preuves

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

barny
Download Presentation

Programmation procédurale preuves

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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)

  3. 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)

  4. 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)

  5. 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)

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. Programmation procéduralepreuves

  11. 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.

More Related