Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare...

180
Cours d'algorithmique 9 - Cours d'algorithmique 9 - Intranet Intranet 1 12 décembre 2006 12 décembre 2006 Cours d’Algorithmique Cours d’Algorithmique Logique de Hoare (début) : Logique de Hoare (début) : Principes et Principes et constructions élémentaires. constructions élémentaires.

Transcript of Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare...

Page 1: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1112 décembre 200612 décembre 2006

Cours d’AlgorithmiqueCours d’Algorithmique

Logique de Hoare (début) :Logique de Hoare (début) :

Principes etPrincipes et

constructions élémentaires.constructions élémentaires.

Page 2: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 22

• Trier et chercher, recherche textuelleTrier et chercher, recherche textuelle• Listes et arbresListes et arbres• Le back-trackLe back-track• Arbres équilibrésArbres équilibrés• Récursivité et induction sur la structureRécursivité et induction sur la structure• Divide and conquer, algorithmes gloutonsDivide and conquer, algorithmes gloutons• Minimax, alpha-betaMinimax, alpha-beta• DérécursionDérécursion• Divers problèmes particuliersDivers problèmes particuliers• Logique de HoareLogique de Hoare• Programmation dynamiqueProgrammation dynamique• Complexité et calculabilitéComplexité et calculabilité

Les grandes lignes du coursLes grandes lignes du cours

Page 3: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 33

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Logique de Hoare !Logique de Hoare !

• Plus faibles pré-conditions de Dijkstra !Plus faibles pré-conditions de Dijkstra !

Page 4: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 44

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Logique de Hoare !Logique de Hoare !

• Plus faibles pré-conditions de Dijkstra !Plus faibles pré-conditions de Dijkstra !

• Objectif :Objectif :

– Raisonnement formel sur la correction d’un Raisonnement formel sur la correction d’un programme !programme !

Page 5: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 55

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Logique de Hoare !Logique de Hoare !

• Plus faibles pré-conditions de Dijkstra !Plus faibles pré-conditions de Dijkstra !

• Objectif :Objectif :

– Raisonnement formel sur la correction d’un programme !Raisonnement formel sur la correction d’un programme !

• Cadre :Cadre :

– Spécifications formelles.Spécifications formelles.

– Génie logiciel.Génie logiciel.

Page 6: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 66

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Indispensable dans certains cas (lois européennes) !Indispensable dans certains cas (lois européennes) !

• Transport, nucléaire, … !Transport, nucléaire, … !

Page 7: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 77

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Indispensable dans certains cas (lois européennes) !Indispensable dans certains cas (lois européennes) !

• Transport, nucléaire, … !Transport, nucléaire, … !

• Il faut :Il faut :

– fournir une preuve formelle de la correction du fournir une preuve formelle de la correction du programme !programme !

• On peut :On peut :

– utiliser des outils comme « Atelier B » !utiliser des outils comme « Atelier B » !

Page 8: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 88

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Analyse de programmes :Analyse de programmes :

ProgrammeProgramme

Page 9: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 99

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Analyse de programmes :Analyse de programmes :

ProgrammeProgramme

Que fait-il ?Que fait-il ?

Page 10: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1010

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Analyse de programmes :Analyse de programmes :

ProgrammeProgramme

• Construction d’un programme :Construction d’un programme :

Ce qu’il doit faire ! (cahier des charges)Ce qu’il doit faire ! (cahier des charges)

Que fait-il ?Que fait-il ?

Page 11: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1111

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Analyse de programmes :Analyse de programmes :

ProgrammeProgramme

• Construction d’un programme :Construction d’un programme :

Ce qu’il doit faire ! (cahier des charges)Ce qu’il doit faire ! (cahier des charges)

Que fait-il ?Que fait-il ?

ProgrammeProgramme

Page 12: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1212

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Une Une spécification formellespécification formelle est un est un

cahier de charges formel (des définitions cahier de charges formel (des définitions précises).précises).

Page 13: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1313

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Une Une spécification formellespécification formelle est un est un

cahier de charges formel (des définitions cahier de charges formel (des définitions précises).précises).

• Elle donneElle donne

– les les pré-conditions, notées PRE, pré-conditions, notées PRE, qui sont les conditions qui sont les conditions

vérifiées par vérifiées par les arguments en entréeles arguments en entrée,,

Page 14: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1414

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Une Une spécification formellespécification formelle est un est un

cahier de charges formel (des définitions précises).cahier de charges formel (des définitions précises).

• Elle donneElle donne

– les les pré-conditions, notées PRE, pré-conditions, notées PRE, qui sont les conditions qui sont les conditions

vérifiées par vérifiées par les arguments en entréeles arguments en entrée,,

– les les post-conditions, notées POST, post-conditions, notées POST, qui sont les conditions qui sont les conditions

vérifiées par vérifiées par les résultats en sortieles résultats en sortie..

Page 15: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1515

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un exemple :Un exemple :

– PRE : ENTREE , DIV PRE : ENTREE , DIV N N

– POST: POST: QUO , RESTE QUO , RESTE N N

telles ENTREE = QUO * DIV + RESTEtelles ENTREE = QUO * DIV + RESTE et RESTE < DIV .et RESTE < DIV .

II

II

Page 16: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1616

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un exemple :Un exemple :

– PRE : ENTREE , DIV PRE : ENTREE , DIV N N

– POST: POST: QUO , RESTE QUO , RESTE N N

telles ENTREE = QUO * DIV + RESTEtelles ENTREE = QUO * DIV + RESTE et RESTE < DIV .et RESTE < DIV .

– C’est la spécification de la division euclidienne !C’est la spécification de la division euclidienne !

II

II

Page 17: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1717

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un exemple :Un exemple :

– PRE : ENTREE , DIV PRE : ENTREE , DIV N N

– POST: POST: QUO , RESTE QUO , RESTE N N

telles ENTREE = QUO * DIV + RESTEtelles ENTREE = QUO * DIV + RESTE et RESTE < DIV .et RESTE < DIV .

– C’est la spécification de la division euclidienne !C’est la spécification de la division euclidienne !

– Nous savons ce qu’il faut faire !Nous savons ce qu’il faut faire !

– Nous ne savons pas encore comment faire ?Nous ne savons pas encore comment faire ?

II

II

Page 18: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1818

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Ensuite, nous construisons un Ensuite, nous construisons un programmeprogramme tel que tel que

{ PRE } { PRE } programme programme { POST }{ POST }

Page 19: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 1919

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Ensuite, nous construisons un Ensuite, nous construisons un programmeprogramme tel que tel que

{ PRE } { PRE } programme programme { POST }{ POST }

• Ceci signifie queCeci signifie que

– si les si les pré-conditionspré-conditions sont vérifiées par sont vérifiées par les argumentsles arguments,,

– alors les alors les post-conditions post-conditions seront vérifiées par seront vérifiées par les les résultatsrésultats..

Page 20: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2020

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Ensuite, nous construisons un Ensuite, nous construisons un programmeprogramme tel que tel que

{ PRE } { PRE } programme programme { POST }{ POST }

• Ceci signifie queCeci signifie que

– si les si les pré-conditionspré-conditions sont vérifiées par sont vérifiées par les argumentsles arguments,,

– alors les alors les post-conditions post-conditions seront vérifiées par seront vérifiées par les les résultatsrésultats..

• Ce lien est fait à l’aide de la logique de Hoare !Ce lien est fait à l’aide de la logique de Hoare !

Page 21: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2121

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Ensuite, nous construisons un Ensuite, nous construisons un programmeprogramme tel que tel que

{ PRE } { PRE } programme programme { POST }{ POST }

• Ceci signifie queCeci signifie que

– si les si les pré-conditionspré-conditions sont vérifiées par sont vérifiées par les argumentsles arguments,,

– alors les alors les post-conditions post-conditions seront vérifiées par seront vérifiées par les résultatsles résultats..

• Ce lien est fait à l’aide de la logique de Hoare !Ce lien est fait à l’aide de la logique de Hoare !

• Et si les pré-conditions ne sont pas vérifiées ? ? ? ? ?Et si les pré-conditions ne sont pas vérifiées ? ? ? ? ?

Page 22: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2222

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme Si la pré-condition n’est pas vérifiée, le programme peutpeut

Page 23: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2323

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme Si la pré-condition n’est pas vérifiée, le programme peutpeut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

Page 24: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2424

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme Si la pré-condition n’est pas vérifiée, le programme peutpeut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

– boucler,boucler,

Page 25: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2525

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme Si la pré-condition n’est pas vérifiée, le programme peutpeut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

– boucler,boucler,

– répondre n’importe quoi,répondre n’importe quoi,

Page 26: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2626

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme Si la pré-condition n’est pas vérifiée, le programme peutpeut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

– boucler,boucler,

– répondre n’importe quoi,répondre n’importe quoi,

– répondre correctement, malgré tout !répondre correctement, malgré tout !

Page 27: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2727

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme peutSi la pré-condition n’est pas vérifiée, le programme peut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

– boucler,boucler,

– répondre n’importe quoi,répondre n’importe quoi,

– répondre correctement, malgré tout !répondre correctement, malgré tout !

• Sage précaution :Sage précaution :

– Testons la validité des arguments et générons des messages Testons la validité des arguments et générons des messages d’erreur s’il le faut !d’erreur s’il le faut !

– Ce sont les « assert » !Ce sont les « assert » !

Page 28: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2828

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme peutSi la pré-condition n’est pas vérifiée, le programme peut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

– boucler,boucler,

– répondre n’importe quoi,répondre n’importe quoi,

– répondre correctement, malgré tout !répondre correctement, malgré tout !

• Sage précaution :Sage précaution :

– Testons la validité des arguments et générons des messages Testons la validité des arguments et générons des messages d’erreur s’il le faut !d’erreur s’il le faut !

– Ce sont les « assert » !Ce sont les « assert » !

Page 29: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 2929

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme peutSi la pré-condition n’est pas vérifiée, le programme peut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

– boucler,boucler,

– répondre n’importe quoi,répondre n’importe quoi,

– répondre correctement, malgré tout !répondre correctement, malgré tout !

• Sage précaution :Sage précaution :

– Testons la validité des arguments et générons des messages Testons la validité des arguments et générons des messages d’erreur s’il le faut !d’erreur s’il le faut !

– Ce sont les « assert » !Ce sont les « assert » !

Page 30: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3030

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si la pré-condition n’est pas vérifiée, le programme peutSi la pré-condition n’est pas vérifiée, le programme peut

– provoquer une erreur (segmentation fault, … ),provoquer une erreur (segmentation fault, … ),

– boucler,boucler,

– répondre n’importe quoi,répondre n’importe quoi,

– répondre correctement, malgré tout !répondre correctement, malgré tout !

• Sage précaution :Sage précaution :

– Testons la validité des arguments et générons des messages Testons la validité des arguments et générons des messages d’erreur s’il le faut !d’erreur s’il le faut !

– Ce sont les « assert » !Ce sont les « assert » !

Page 31: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3131

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• DansDans

{ PRE } { PRE } programme programme { POST }{ POST }

nous avons en faitnous avons en fait

PRE => POSTPRE => POST (l’implication logique) ! (l’implication logique) !

Page 32: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3232

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• DansDans

{ PRE } { PRE } programme programme { POST }{ POST }

nous avons en faitnous avons en fait

PRE => POSTPRE => POST (l’implication logique) ! (l’implication logique) !

• Rappels :Rappels :

A => B « Tous les A sont B » !A => B « Tous les A sont B » !

Page 33: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3333

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• DansDans

{ PRE } { PRE } programme programme { POST }{ POST }

nous avons en faitnous avons en fait

PRE => POSTPRE => POST (l’implication logique) ! (l’implication logique) !

• Rappels :Rappels :

A => B « Tous les A sont B » !A => B « Tous les A sont B » !

AA

BBA A : : ceux qui vérifient A.ceux qui vérifient A.

B B : : ceux qui vérifient B.ceux qui vérifient B.

Page 34: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3434

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• DansDans

{ PRE } { PRE } programme programme { POST }{ POST }

nous avons en faitnous avons en fait

PRE => POSTPRE => POST (l’implication logique) ! (l’implication logique) !

• Rappels :Rappels :

A => B « Tous les A sont B » !A => B « Tous les A sont B » !

AA

BB « A » est une condition« A » est une conditionplus forte que « B ».plus forte que « B ».

Page 35: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3535

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• DansDans

{ PRE } { PRE } programme programme { POST }{ POST }

nous avons en faitnous avons en fait

PRE => POSTPRE => POST (l’implication logique) ! (l’implication logique) !

• Rappels :Rappels :

A => B « Tous les A sont B » !A => B « Tous les A sont B » !

AA

BB « A » est une condition« A » est une conditionplus forte que « B ».plus forte que « B ».

« B » est une condition« B » est une conditionplus faible que « A ».plus faible que « A ».

Page 36: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3636

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• SoitSoit { PRE } { PRE } programme programme { POST }{ POST } ! !

• Soit Soit PRE’ => PRE PRE’ => PRE !!

• Soit Soit POST => POST’ POST => POST’ !!

Page 37: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3737

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• SoitSoit { PRE } { PRE } programme programme { POST }{ POST } ! !

• Soit Soit PRE’ => PRE PRE’ => PRE !!

• Soit Soit POST => POST’ POST => POST’ !!

• Donc :Donc :

PRE’ => { PRE } PRE’ => { PRE } programme programme { POST } => { POST } => POST’POST’

Page 38: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3838

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• SoitSoit { PRE } { PRE } programme programme { POST }{ POST } ! !

• Soit Soit PRE’ => PRE PRE’ => PRE !!

• Soit Soit POST => POST’ POST => POST’ !!

• Donc :Donc :

PRE’ => { PRE } PRE’ => { PRE } programme programme { POST } => { POST } => POST’POST’

etet { PRE’ } { PRE’ } programme programme { POST’ }{ POST’ }

Page 39: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 3939

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• SoitSoit { PRE } { PRE } programme programme { POST }{ POST } ! !

• Soit Soit PRE’ => PRE PRE’ => PRE !!

• Soit Soit POST => POST’ POST => POST’ !!

• Donc :Donc :

PRE’ => { PRE } PRE’ => { PRE } programme programme { POST } => POST’{ POST } => POST’ etet { PRE’ } { PRE’ } programme programme { POST’ }{ POST’ }

Pré-condition plus forte ! Post-condition plus faible !Pré-condition plus forte ! Post-condition plus faible !

Page 40: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4040

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• SoitSoit { PRE } { PRE } programme programme { POST }{ POST } ! !

• Soit Soit PRE’ => PRE PRE’ => PRE !!

• Soit Soit POST => POST’ POST => POST’ !!

• Donc :Donc :

PRE’ => { PRE } PRE’ => { PRE } programme programme { POST } => POST’{ POST } => POST’ etet { PRE’ } { PRE’ } programme programme { POST’ }{ POST’ }

Pré-condition plus forte ! Post-condition plus faible !Pré-condition plus forte ! Post-condition plus faible !

• Pour un Pour un ensemble plus restreint d’argumentsensemble plus restreint d’arguments,,

le programme répond le programme répond de manière plus vaguede manière plus vague ! !

Page 41: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4141

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Graphiquement :Graphiquement :

{ PRE } { PRE } programme programme { POST } { POST }

Page 42: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4242

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Graphiquement :Graphiquement :

{ PRE } { PRE } programme programme { POST } { POST }

programmeprogramme

PREPRE POSTPOST

Page 43: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4343

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Graphiquement :Graphiquement :

{ PRE } { PRE } programme programme { POST } { POST }

programmeprogramme

PREPRE POSTPOSTxx yy

Page 44: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4444

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Graphiquement :Graphiquement :

{ PRE } { PRE } programme programme { POST } { POST }

programmeprogramme

PREPRE POSTPOST

PRE’ => PREPRE’ => PRE

PRE’PRE’

Page 45: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4545

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Graphiquement :Graphiquement :

{ PRE } { PRE } programme programme { POST } { POST }

programmeprogramme

PREPRE POSTPOST

PRE’ => PREPRE’ => PRE

PRE’PRE’

POST => POST’POST => POST’

Page 46: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4646

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Graphiquement :Graphiquement :

{ PRE } { PRE } programme programme { POST } { POST }

{ PRE’ }{ PRE’ } programme programme { POST’ }{ POST’ }

programmeprogramme

PREPRE POSTPOST

PRE’ => PREPRE’ => PRE

PRE’PRE’

POST => POST’POST => POST’

Page 47: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4747

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Graphiquement :Graphiquement :

{ PRE } { PRE } programme programme { POST } { POST }

{ PRE’ }{ PRE’ } programme programme { POST’ }{ POST’ }

programmeprogramme

PREPRE POSTPOST

PRE’ => PREPRE’ => PRE

PRE’PRE’

POST => POST’POST => POST’

Page 48: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4848

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Le lien entre le « cahier des charges » et le Le lien entre le « cahier des charges » et le « programme » :« programme » :

Page 49: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 4949

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Le lien entre le « cahier des charges » et le Le lien entre le « cahier des charges » et le « programme » :« programme » :

Cahier des chargesCahier des charges

Page 50: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5050

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Le lien entre le « cahier des charges » et le Le lien entre le « cahier des charges » et le « programme » :« programme » :

programmeprogramme

Cahier des chargesCahier des charges

Page 51: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5151

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Le lien entre le « cahier des charges » et le « programme » :Le lien entre le « cahier des charges » et le « programme » :

• Le programme accepte toutes les données, voire plus !Le programme accepte toutes les données, voire plus !

programmeprogramme

Cahier des chargesCahier des charges

Page 52: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5252

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Le lien entre le « cahier des charges » et le « programme » :Le lien entre le « cahier des charges » et le « programme » :

• Le programme accepte toutes les données, voire plus !Le programme accepte toutes les données, voire plus !

• Le programme répond précisément, même plus qu’exigé !Le programme répond précisément, même plus qu’exigé !

programmeprogramme

Cahier des chargesCahier des charges

Page 53: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5353

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Le lien entre le « cahier des charges » et le « programme » :Le lien entre le « cahier des charges » et le « programme » :

• Le programme accepte toutes les données, voire plus !Le programme accepte toutes les données, voire plus !

• Le programme répond précisément, même plus qu’exigé !Le programme répond précisément, même plus qu’exigé !

• Le cahier des charges est l’exigence minimale ! ! !Le cahier des charges est l’exigence minimale ! ! !

programmeprogramme

Cahier des chargesCahier des charges

Page 54: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5454

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Que ferons-nous ?Que ferons-nous ?

Page 55: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5555

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Que ferons-nous ?Que ferons-nous ?

– Soient les prédicats « P » et « Q » !Soient les prédicats « P » et « Q » !

– Soit le programme « Soit le programme «  » ! » !

Page 56: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5656

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Que ferons-nous ?Que ferons-nous ?

– Soient les prédicats « P » et « Q » !Soient les prédicats « P » et « Q » !

– Soit le programme « Soit le programme «  » ! » !

• Nous pouvons dire siNous pouvons dire si { P } { P } { Q } { Q } est vraie ou est vraie ou non !non !

Page 57: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5757

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Que ferons-nous ?Que ferons-nous ?

– Soient les prédicats « P » et « Q » !Soient les prédicats « P » et « Q » !

– Soit le programme « Soit le programme «  » ! » !

• Nous pouvons dire siNous pouvons dire si { P } { P } { Q } { Q } est vraie ou est vraie ou non !non !

• Plus intéressant :Plus intéressant :

Page 58: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5858

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Que ferons-nous ?Que ferons-nous ?

– Soient les prédicats « P » et « Q » !Soient les prédicats « P » et « Q » !

– Soit le programme « Soit le programme «  » ! » !

• Nous pouvons dire siNous pouvons dire si { P } { P } { Q } { Q } est vraie ou non !est vraie ou non !

• Plus intéressant :Plus intéressant :

– Soit la post-condition « Q » !Soit la post-condition « Q » !

– Soit le programme « Soit le programme «  » ! » !

Page 59: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 5959

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Que ferons-nous ?Que ferons-nous ?

– Soient les prédicats « P » et « Q » !Soient les prédicats « P » et « Q » !

– Soit le programme « Soit le programme «  » ! » !

• Nous pouvons dire siNous pouvons dire si { P } { P } { Q } { Q } est vraie ou non !est vraie ou non !

• Plus intéressant :Plus intéressant :

– Soit la post-condition « Q » !Soit la post-condition « Q » !

– Soit le programme « Soit le programme «  » ! » !

Nous avons un programmeNous avons un programmeet une définition de ce queet une définition de ce que

le programme devrait faire !le programme devrait faire !

Page 60: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6060

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Que ferons-nous ?Que ferons-nous ?

– Soient les prédicats « P » et « Q » !Soient les prédicats « P » et « Q » !

– Soit le programme « Soit le programme «  » ! » !

• Nous pouvons dire siNous pouvons dire si { P } { P } { Q } { Q } est vraie ou non !est vraie ou non !

• Plus intéressant :Plus intéressant :

– Soit la post-condition « Q » !Soit la post-condition « Q » !

– Soit le programme « Soit le programme «  » ! » !

• Nous pouvons calculer la plus faible conditionNous pouvons calculer la plus faible condition F F telle quetelle que { F } { F } { Q } { Q } soit vraie !soit vraie !

Nous avons un programmeNous avons un programmeet une définition de ce queet une définition de ce que

le programme devrait faire !le programme devrait faire !

Page 61: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6161

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• La démarche complète :La démarche complète :

– Soit la post-condition « Q » ! Soit le programme Soit la post-condition « Q » ! Soit le programme « «  » ! » !

Page 62: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6262

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• La démarche complète :La démarche complète :

– Soit la post-condition « Q » ! Soit le programme Soit la post-condition « Q » ! Soit le programme « «  » ! » !

QQ

Page 63: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6363

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• La démarche complète :La démarche complète :

– Soit la post-condition « Q » ! Soit le programme « Soit la post-condition « Q » ! Soit le programme «  » ! » !

• Calculons la plus faible condition Calculons la plus faible condition FF telle que telle que { F } { F } { Q } { Q } !!

QQ

Page 64: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6464

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• La démarche complète :La démarche complète :

– Soit la post-condition « Q » ! Soit le programme « Soit la post-condition « Q » ! Soit le programme «  » ! » !

• Calculons la plus faible condition Calculons la plus faible condition FF telle que telle que { F } { F } { Q } { Q } !!

FF QQ

Page 65: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6565

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• La démarche complète :La démarche complète :

– Soit la post-condition « Q » ! Soit le programme « Soit la post-condition « Q » ! Soit le programme «  » ! » !

• Calculons la plus faible condition Calculons la plus faible condition FF telle que telle que { F } { F } { Q } { Q } !!

• Nous comparons avec le cahier des charges ! ! !Nous comparons avec le cahier des charges ! ! !

FF QQ

Page 66: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6666

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• La démarche complète :La démarche complète :

– Soit la post-condition « Q » ! Soit le programme « Soit la post-condition « Q » ! Soit le programme «  » ! » !

• Calculons la plus faible condition Calculons la plus faible condition FF telle que telle que { F } { F } { Q } { Q } !!

• Nous comparons avec le cahier des charges ! ! !Nous comparons avec le cahier des charges ! ! !

Cahier des chargesCahier des charges

FFPREPRE

QQ = POST = POST

Page 67: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6767

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• La démarche complète :La démarche complète :

– Soit la post-condition « Q » ! Soit le programme « Soit la post-condition « Q » ! Soit le programme «  » ! » !

• Calculons la plus faible condition Calculons la plus faible condition FF telle que telle que { F } { F } { Q } { Q } !!

• Nous comparons avec le cahier des charges ! ! !Nous comparons avec le cahier des charges ! ! !

• Et nous vérifions que PRE => Et nous vérifions que PRE => F !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Cahier des chargesCahier des charges

QQ = POST = POSTFFPREPRE

Page 68: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6868

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

C O N C R E T E M E N T . . C O N C R E T E M E N T . . ..

Page 69: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 6969

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skipskip

– x <x <-- e e

– if C thenif C then else else

– while C dowhile C do

22

11

11

22

Page 70: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7070

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skip le programme qui ne fait skip le programme qui ne fait rien !rien !

– x <x <-- e e

– if C thenif C then else else

– while C dowhile C do

22

11

11

22

Page 71: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7171

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skip le programme qui ne fait skip le programme qui ne fait rien !rien !

– x <x <-- e l’affectation ! e l’affectation !

– if C thenif C then else else

– while C dowhile C do

22

11

11

22

Page 72: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7272

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skip le programme qui ne fait skip le programme qui ne fait rien !rien !

– x <x <-- e l’affectation ! e l’affectation !

– la séquence la séquence d’instructions !d’instructions !

– if C thenif C then else else

– while C dowhile C do

22

11

11

22

Page 73: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7373

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skip le programme qui ne fait skip le programme qui ne fait rien !rien !

– x <x <-- e l’affectation ! e l’affectation !

– la séquence la séquence d’instructions !d’instructions !

– if C thenif C then else else la conditionnelle !la conditionnelle !

– while C dowhile C do

22

11

11

22

Page 74: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7474

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skip le programme qui ne fait skip le programme qui ne fait rien !rien !

– x <x <-- e l’affectation ! e l’affectation !

– la séquence la séquence d’instructions !d’instructions !

– if C thenif C then else else la conditionnelle !la conditionnelle !

– while C dowhile C do la boucle ! la boucle !

22

11

11

22

Page 75: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7575

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skip le programme qui ne fait rien !skip le programme qui ne fait rien !

– x <x <-- e l’affectation ! e l’affectation !

– la séquence d’instructions !la séquence d’instructions !

– if C thenif C then else else la conditionnelle !la conditionnelle !

– while C dowhile C do la boucle ! la boucle !

• Les conditions « C » ne font pas d’affectation !Les conditions « C » ne font pas d’affectation !

22

11

11

22

Page 76: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7676

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Les programmes :Les programmes :

– skip le programme qui ne fait rien !skip le programme qui ne fait rien !

– x <x <-- e l’affectation ! e l’affectation !

– la séquence d’instructions !la séquence d’instructions !

– if C thenif C then else else la conditionnelle !la conditionnelle !

– while C dowhile C do la boucle ! la boucle !

• Les conditions « C » ne font pas d’affectation !Les conditions « C » ne font pas d’affectation !

• Toutes les autres constructions peuvent s’exprimer à l’aide de Toutes les autres constructions peuvent s’exprimer à l’aide de celles ci-dessus !celles ci-dessus !

22

11

11

22

Page 77: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7777

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous utilisons des règles logiques de la forme :Nous utilisons des règles logiques de la forme :

HYP . . . HYPHYP . . . HYP1 n1 n

CONCLCONCL

Page 78: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7878

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous utilisons des règles logiques de la forme :Nous utilisons des règles logiques de la forme :

• Celles-ci sont utilisées enCelles-ci sont utilisées en

– MODUS PONENS : Si nous avons les hypothèses nous MODUS PONENS : Si nous avons les hypothèses nous pouvons déduire la conclusion !pouvons déduire la conclusion !

HYP . . . HYPHYP . . . HYP1 n1 n

CONCLCONCL

Page 79: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 7979

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous utilisons des règles logiques de la forme :Nous utilisons des règles logiques de la forme :

• Celles-ci sont utilisées enCelles-ci sont utilisées en

– MODUS PONENS : Si nous avons les hypothèses nous pouvons MODUS PONENS : Si nous avons les hypothèses nous pouvons déduire la conclusion !déduire la conclusion !

– MODUS TOLLENS : Pour avoir la conclusion, il suffit d’avoir les MODUS TOLLENS : Pour avoir la conclusion, il suffit d’avoir les hypothèses !hypothèses !

HYP . . . HYPHYP . . . HYP1 n1 n

CONCLCONCL

Page 80: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8080

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

Page 81: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8181

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

P => Q P => Q { Q } { Q } { R } { R }

Page 82: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8282

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

P => Q P => Q { Q } { Q } { R } { R }

{ { PP } } { R } { R }

Page 83: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8383

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

P => Q { Q } P => Q { Q } { R } { R }

{ P } { P } { R } { R }

Q => R Q => R { P } { P } { Q } { Q }

Page 84: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8484

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

P => Q { Q } P => Q { Q } { R } { R }

{ P } { P } { R } { R }

Q => R Q => R { P } { P } { Q } { Q }

{ P } { P } { { R R }}

Page 85: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8585

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

P => Q { Q } P => Q { Q } { R } { R }

{ P } { P } { R } { R }

Q => R { P } Q => R { P } { Q } { Q }

{ P } { P } { R } { R }

{ P } { P } { Q } { Q }1 11 1 { P } { P } { Q } { Q }

2 2 2 2

Page 86: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8686

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

P => Q { Q } P => Q { Q } { R } { R }

{ P } { P } { R } { R }

Q => R { P } Q => R { P } { Q } { Q }

{ P } { P } { R } { R }

{ P } { P } { Q } { Q }1 11 1 { P } { P } { Q } { Q }

2 2 2 2

{ P , { P , PP } } { Q , { Q , QQ } }1 11 12 2 2 2

Page 87: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8787

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Trois règles qui sont toujours vraies :Trois règles qui sont toujours vraies :

• PRE-STRENGTH :PRE-STRENGTH :

• POST-WEAK :POST-WEAK :

• CONJUNCTION :CONJUNCTION :

P => Q { Q } P => Q { Q } { R } { R }

{ P } { P } { R } { R }

Q => R { P } Q => R { P } { Q } { Q }

{ P } { P } { R } { R }

{ P } { P } { Q } { Q }1 11 1 { P } { P } { Q } { Q }

2 2 2 2

{ P , { P , PP } } { Q , { Q , QQ } }1 11 12 2 2 2

ConjonctionConjonction

Page 88: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8888

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme skipskip : :

Page 89: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 8989

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme skipskip : :

{ P } skip { P }{ P } skip { P }

Page 90: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9090

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme ; ; : :1 21 2

Page 91: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9191

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme ; ; : :

{ P } { P } { Q } { Q } { Q } { Q } { R } { R }11 22

{ P } { P } ;; { R } { R }11 22

1 21 2

Page 92: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9292

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme ; ; : :

• A cause de PRE-STRENGTH et POST-WEAK, nous n’avons pas A cause de PRE-STRENGTH et POST-WEAK, nous n’avons pas besoin d’une règle de la forme :besoin d’une règle de la forme :

{ P } { P } { Q } { Q } { Q } { Q } { R } { R }11 22

{ P } { P } ;; { R } { R }11 22

{ P } { P } { L } { L } { Q } { Q } { R } { R }11 22

{ P } { P } ;; { R } { R }11 22

L => QL => Q

1 21 2

Page 93: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9393

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

{ P } { P } { L } { L } { Q } { Q } { R } { R }11 22L => QL => Q

Page 94: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9494

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

{ P } { P } { L } { L } { Q } { Q } { R } { R }11 22L => QL => Q

11

PPLL

Page 95: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9595

22

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

{ P } { P } { L } { L } { Q } { Q } { R } { R }11 22L => QL => Q

QQ

RR11

PPLL

Page 96: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9696

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme x <x <-- e e : :

Page 97: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9797

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme x <x <-- e e : :

{ P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P }

Page 98: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9898

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme x <x <-- e e : :

ou ou P[ x <P[ x <-- e ] e ] est laest la

substitution de « e » à toutes les occurrencessubstitution de « e » à toutes les occurrences libres de « x » dans « P ».libres de « x » dans « P ».

{ P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P }

Page 99: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 9999

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme x <x <-- e e : :

ou ou P[ x <P[ x <-- e ] e ] est laest la

substitution de « e » à toutes les occurrencessubstitution de « e » à toutes les occurrences libres de « x » dans « P ».libres de « x » dans « P ».

Une occurrence de « x » dans « P » est libre si elle n’est pas sous la portée d’un Une occurrence de « x » dans « P » est libre si elle n’est pas sous la portée d’un quantification universel ou existentiel.quantification universel ou existentiel.

{ P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P }

Page 100: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 100100

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme x <x <-- e e : :

ou ou P[ x <P[ x <-- e ] e ] est laest la

substitution de « e » à toutes les occurrencessubstitution de « e » à toutes les occurrences libres de « x » dans « P ».libres de « x » dans « P ».

( x > 3 et ( x > 3 et x . ( x >= 17 ) ) x . ( x >= 17 ) ) [ x <[ x <-- 9 ] 9 ]

{ P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P }

Page 101: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 101101

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme x <x <-- e e : :

ou ou P[ x <P[ x <-- e ] e ] est laest la

substitution de « e » à toutes les occurrencessubstitution de « e » à toutes les occurrences libres de « x » dans « P ».libres de « x » dans « P ».

( x > 3 et ( x > 3 et x . ( x >= 17 ) ) x . ( x >= 17 ) ) [ x <[ x <-- 9 ] 9 ]= = ( ( xx > 3 et > 3 et x . ( x >= 17 ) ) x . ( x >= 17 ) ) [ x <[ x <-- 9 ] 9 ]

{ P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P }

Page 102: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 102102

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme x <x <-- e e : :

ou ou P[ x <P[ x <-- e ] e ] est laest la

substitution de « e » à toutes les occurrencessubstitution de « e » à toutes les occurrences libres de « x » dans « P ».libres de « x » dans « P ».

( x > 3 et ( x > 3 et x . ( x >= 17 ) ) x . ( x >= 17 ) ) [ x <[ x <-- 9 ] 9 ]= = ( ( xx > 3 et > 3 et x . ( x >= 17 ) ) x . ( x >= 17 ) ) [ x <[ x <-- 9 ] 9 ]= = ( ( 99 > 3 et > 3 et x . ( x >= 17 ) ) x . ( x >= 17 ) )

{ P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P }

Page 103: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 103103

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Interprétation de Interprétation de { P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P } : :

Page 104: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 104104

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Interprétation de Interprétation de { P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P } : :

– Si « x » n’est pas libre dans « P » :Si « x » n’est pas libre dans « P » :

• la post-condition ne s’intéresse pas à « x »,la post-condition ne s’intéresse pas à « x »,

• la pré-condition la pré-condition P[ x <P[ x <--e ] = P e ] = P non plus d’ailleurs,non plus d’ailleurs,

• l’affectation l’affectation x <x <-- e e n’est pas fausse, mais inutile !n’est pas fausse, mais inutile !

Page 105: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 105105

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Interprétation de Interprétation de { P[ x <{ P[ x <--e ] } e ] } x <x <-- e e { P } { P } : :

– Si « x » est libre dans « P » :Si « x » est libre dans « P » :

• la post-condition dépend bien de « x »,la post-condition dépend bien de « x »,

• la pré-condition la pré-condition P[ x <P[ x <--e ] e ] est la formule ou nous avons des « est la formule ou nous avons des « ee » à la place des  » à la place des «« x x », »,

• l’affectation l’affectation x <x <-- e e donne la valeur « donne la valeur « ee » à «  » à « xx » et nous pouvons donc dans  » et nous pouvons donc dans P[ x <P[ x <--e ] e ] remplacer « remplacer « ee » par «  » par « x x »,»,

• c’est-à-dire considérer la post-condition c’est-à-dire considérer la post-condition P P ..

Page 106: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 106106

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Illustration :Illustration :

{ { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) )( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } } x <x <-- … … { ??? }{ ??? }

Page 107: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 107107

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Illustration :Illustration :

{ { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) )( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( ( 11 + 34 )( 11 + 34 ) * y mod ( 1 + * y mod ( 1 + ( 11 + 34 ) ( 11 + 34 ) ) )) ) } } x <x <-- … … { ??? }{ ??? }

Page 108: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 108108

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Illustration :Illustration :

{ { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) )( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( ( 11 + 34 )( 11 + 34 ) * y mod ( 1 + * y mod ( 1 + ( 11 + 34 ) ( 11 + 34 ) ) )) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- … … { ??? }{ ??? }

Page 109: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 109109

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Illustration :Illustration :

{ { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) )( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( ( 11 + 34 )( 11 + 34 ) * y mod ( 1 + * y mod ( 1 + ( 11 + 34 ) ( 11 + 34 ) ) )) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- ( 11 + 34 )( 11 + 34 ) { ??? }{ ??? }

Page 110: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 110110

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Illustration :Illustration :

{ { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) )( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( ( 11 + 34 )( 11 + 34 ) * y mod ( 1 + * y mod ( 1 + ( 11 + 34 ) ( 11 + 34 ) ) )) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- ( 11 + 34 )( 11 + 34 ) { ??? }{ ??? }

PP

Page 111: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 111111

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Illustration :Illustration :

{ { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) )( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( ( 11 + 34 )( 11 + 34 ) * y mod ( 1 + * y mod ( 1 + ( 11 + 34 ) ( 11 + 34 ) ) )) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- ( 11 + 34 )( 11 + 34 ) { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- ( 11 + 34 )( 11 + 34 ) { P }{ P }

PP

Page 112: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 112112

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Illustration :Illustration :

{ { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) )( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( ( 11 + 34 )( 11 + 34 ) * y mod ( 1 + * y mod ( 1 + ( 11 + 34 ) ( 11 + 34 ) ) )) ) } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- … … { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- ( 11 + 34 )( 11 + 34 ) { ??? }{ ??? }

{ { ( ( xx * y mod ( 1 + * y mod ( 1 + x x ) )) )[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- ( 11 + 34 )( 11 + 34 ) { P }{ P }

{ { PP[ [ x x <<-- ( 11 + 34 ) ( 11 + 34 ) ] ] } } x <x <-- ( 11 + 34 )( 11 + 34 ) { P }{ P }

PP

Page 113: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 113113

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Page 114: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 114114

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

Page 115: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 115115

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ y <R = Q[ y <-- m ] m ]

Page 116: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 116116

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ y <R = Q[ y <-- m ] = { x = a , m = b } m ] = { x = a , m = b }

Page 117: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 117117

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ y <R = Q[ y <-- m ] = { x = a , m = b } m ] = { x = a , m = b }

S = R[ x <S = R[ x <-- y ] y ]

Page 118: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 118118

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ y <R = Q[ y <-- m ] = { x = a , m = b } m ] = { x = a , m = b }

S = R[ x <S = R[ x <-- y ] = { y = a , m = b } y ] = { y = a , m = b }

Page 119: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 119119

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ y <R = Q[ y <-- m ] = { x = a , m = b } m ] = { x = a , m = b }

S = R[ x <S = R[ x <-- y ] = { y = a , m = b } y ] = { y = a , m = b }

P = S[ m <P = S[ m <-- x ] x ]

Page 120: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 120120

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ y <R = Q[ y <-- m ] = { x = a , m = b } m ] = { x = a , m = b }

S = R[ x <S = R[ x <-- y ] = { y = a , m = b } y ] = { y = a , m = b }

P = S[ m <P = S[ m <-- x ] = { y = a , x = b } x ] = { y = a , x = b }

Page 121: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 121121

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Premier exemple :Premier exemple :

• Post-condition :Post-condition :

m <- x ;m <- x ;

x <- y ;x <- y ;

y <- my <- m

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ y <R = Q[ y <-- m ] = { x = a , m = b } m ] = { x = a , m = b }

S = R[ x <S = R[ x <-- y ] = { y = a , m = b } y ] = { y = a , m = b }

P = S[ m <P = S[ m <-- x ] = { y = a , x = b } x ] = { y = a , x = b }

Page 122: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 122122

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Page 123: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 123123

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

Page 124: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 124124

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] y ]

Page 125: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 125125

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } y ] = { x – y = a , y = b }

Page 126: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 126126

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

Des maths !Des maths !

Page 127: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 127127

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] y ]

Page 128: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 128128

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , x y ] = { x = a + b , x -- y = b } y = b }

Page 129: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 129129

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , x y ] = { x = a + b , x -- y = b } = { x = a + b , y = a } y = b } = { x = a + b , y = a }

Des maths !Des maths !

Page 130: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 130130

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , x y ] = { x = a + b , x -- y = b } = { x = a + b , y = a } y = b } = { x = a + b , y = a }

P = S[ x <P = S[ x <-- x + y ] x + y ]

Page 131: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 131131

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , x y ] = { x = a + b , x -- y = b } = { x = a + b , y = a } y = b } = { x = a + b , y = a }

P = S[ x <P = S[ x <-- x + y ] = { x + y = a + b , y = a } x + y ] = { x + y = a + b , y = a }

Page 132: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 132132

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , x y ] = { x = a + b , x -- y = b } = { x = a + b , y = a } y = b } = { x = a + b , y = a }

P = S[ x <P = S[ x <-- x + y ] = { x + y = a + b , y = a } = { x = b , y = a } x + y ] = { x + y = a + b , y = a } = { x = b , y = a }

Des maths !Des maths !

Page 133: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 133133

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , x y ] = { x = a + b , x -- y = b } = { x = a + b , y = a } y = b } = { x = a + b , y = a }

P = S[ x <P = S[ x <-- x + y ] = { x + y = a + b , y = a } = { x = b , y = a } x + y ] = { x + y = a + b , y = a } = { x = b , y = a }

Page 134: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 134134

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple :Deuxième exemple :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- x x -- y ] = { x – y = a , y = b } = { x = a + b , y = b } y ] = { x – y = a , y = b } = { x = a + b , y = b }

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , x y ] = { x = a + b , x -- y = b } = { x = a + b , y = a } y = b } = { x = a + b , y = a }

P = S[ x <P = S[ x <-- x + y ] = { x + y = a + b , y = a } = { x = b , y = a } x + y ] = { x + y = a + b , y = a } = { x = b , y = a }

DépassementDépassementde capacité ? ? ?de capacité ? ? ?

Page 135: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 135135

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple, avec vérification de la capacité :Deuxième exemple, avec vérification de la capacité :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b Q = { x = a , y = b , a , a DD , b , b DD }}

Page 136: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 136136

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Deuxième exemple, avec vérification de la capacité :Deuxième exemple, avec vérification de la capacité :

• POST :POST :

x <- x + y ;x <- x + y ;

y <- x - y ;y <- x - y ;

x <- x - yx <- x - y

Q = { x = a , y = b Q = { x = a , y = b , a , a DD , b , b DD }}

R = Q[ x <R = Q[ x <-- x x -- y ] = { x = a + b , y = b y ] = { x = a + b , y = b , a , a DD , b , b DD , a + b , a + b DD }}

S = R[ y <S = R[ y <-- x x -- y ] = { x = a + b , y = a y ] = { x = a + b , y = a , a , a DD , b , b DD , a + b , a + b DD }}

P = S[ x <P = S[ x <-- x + y ] = { x = b , y = a x + y ] = { x = b , y = a , a , a DD , b , b DD , a + b , a + b DD }}

Page 137: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 137137

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Page 138: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 138138

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

Page 139: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 139139

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] x ]

Page 140: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 140140

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } x ] = { y – x = a , y = b }

Page 141: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 141141

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

Des maths !Des maths !

Page 142: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 142142

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] y ]

Page 143: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 143143

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , x y ] = { x = b – a , x ++ y = b } y = b }

Page 144: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 144144

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , x y ] = { x = b – a , x ++ y = b } = { x = b – a , y = a } y = b } = { x = b – a , y = a }

Des maths !Des maths !

Page 145: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 145145

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , x y ] = { x = b – a , x ++ y = b } = { x = b – a , y = a } y = b } = { x = b – a , y = a }

P = S[ x <P = S[ x <-- x x -- y ] y ]

Page 146: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 146146

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , x y ] = { x = b – a , x ++ y = b } = { x = b – a , y = a } y = b } = { x = b – a , y = a }

P = S[ x <P = S[ x <-- x x -- y ] = { x y ] = { x -- y = b – a , y = a } y = b – a , y = a }

Page 147: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 147147

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , x y ] = { x = b – a , x ++ y = b } = { x = b – a , y = a } y = b } = { x = b – a , y = a }

P = S[ x <P = S[ x <-- x x -- y ] = { x y ] = { x -- y = b – a , y = a } = { x = b , y = a } y = b – a , y = a } = { x = b , y = a }

Des maths !Des maths !

Page 148: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 148148

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , x y ] = { x = b – a , x ++ y = b } = { x = b – a , y = a } y = b } = { x = b – a , y = a }

P = S[ x <P = S[ x <-- x x -- y ] = { x y ] = { x -- y = b – a , y = a } = { x = b , y = a } y = b – a , y = a } = { x = b , y = a }

Page 149: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 149149

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple :Troisième exemple :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b }Q = { x = a , y = b }

R = Q[ x <R = Q[ x <-- y y -- x ] = { y – x = a , y = b } = { x = b x ] = { y – x = a , y = b } = { x = b -- a , y = b } a , y = b }

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , x y ] = { x = b – a , x ++ y = b } = { x = b – a , y = a } y = b } = { x = b – a , y = a }

P = S[ x <P = S[ x <-- x x -- y ] = { x y ] = { x -- y = b – a , y = a } = { x = b , y = a } y = b – a , y = a } = { x = b , y = a }

DépassementDépassementde capacité ? ? ?de capacité ? ? ?

Page 150: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 150150

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple, avec vérification de la capacité :Troisième exemple, avec vérification de la capacité :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b Q = { x = a , y = b , a , a DD , b , b DD }}

Page 151: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 151151

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Troisième exemple, avec vérification de la capacité :Troisième exemple, avec vérification de la capacité :

• POST :POST :

x <- x - y ;x <- x - y ;

y <- x + y ;y <- x + y ;

x <- y - xx <- y - x

Q = { x = a , y = b Q = { x = a , y = b , a , a DD , b , b DD }}

R = Q[ x <R = Q[ x <-- y y -- x ] = { x = b x ] = { x = b -- a , y = b a , y = b , a , a DD , b , b DD , b , b -- a a DD }}

S = R[ y <S = R[ y <-- x x ++ y ] = { x = b – a , y = a y ] = { x = b – a , y = a , a , a DD , b , b DD , b , b -- a a DD }}

P = S[ x <P = S[ x <-- x x -- y ] = { x = b , y = a y ] = { x = b , y = a , a , a DD , b , b DD , b , b -- a a DD }}

Page 152: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 152152

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme if C then if C then else else : :

2211

Page 153: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 153153

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme if C then if C then else else : :

{ P ,{ P , C } C } { Q } { Q }

{ P } if C then { P } if C then else else { Q } { Q }

2211

1 21 2

22{ P , C } { P , C } { Q } { Q }11

Page 154: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 154154

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Règle pour le programme Règle pour le programme if C then if C then else else : :

• Mais, dans la pratique, nous n’aurons pas « P » :Mais, dans la pratique, nous n’aurons pas « P » :

{ P ,{ P , T } T } { Q } { Q }

{ P } if C then { P } if C then else else { Q } { Q }

2211

1 21 2

22{ P , T } { P , T } { Q } { Q }11

{ ??? ,{ ??? , C } C } { Q } { Q }

{ ??? } if C then { ??? } if C then else else { Q } { Q }1 21 2

22{ ??? , C } { ??? , C } { Q } { Q }11

Page 155: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 155155

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous allons déduire les pré-conditions Nous allons déduire les pré-conditions FF et et FF à partir de à partir de et et et de et de Q Q :: 2211

11 22

Page 156: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 156156

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous allons déduire les pré-conditions Nous allons déduire les pré-conditions FF et et FF à partir de à partir de et et et de et de Q Q ::

{ F }{ F } { Q } { Q }

2211

22{ F }{ F } { Q } { Q }1111 22

11 22

Page 157: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 157157

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous allons déduire les pré-conditions Nous allons déduire les pré-conditions FF et et FF à partir de à partir de et et et de et de Q Q ::

• Ensuite, il s’agira de trouver Ensuite, il s’agira de trouver PP tel que : tel que :

{ F }{ F } { Q } { Q }

2211

22{ F }{ F } { Q } { Q }11

P ,P , C => C => FF22P , C =>P , C => FF11

11 22

11 22

Page 158: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 158158

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous allons déduire les pré-conditions Nous allons déduire les pré-conditions FF et et FF à partir de à partir de et et et et de de Q Q ::

• Ensuite, il s’agira de trouver Ensuite, il s’agira de trouver PP tel que : tel que :

• Mais, comment faire ? ? ? ? ?Mais, comment faire ? ? ? ? ?

{ F }{ F } { Q } { Q }

2211

22{ F }{ F } { Q } { Q }11

P ,P , C => C => FF22P , C =>P , C => FF11

11 22

11 22

Page 159: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 159159

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous allons déduire les pré-conditions Nous allons déduire les pré-conditions FF et et FF à partir de à partir de et et et de et de Q Q ::

• Ensuite, il s’agira de trouver Ensuite, il s’agira de trouver PP tel que : tel que :

• Mais, comment faire ? ? ? ? ?Mais, comment faire ? ? ? ? ?

• Si vous avez de la chance, vous trouverez !Si vous avez de la chance, vous trouverez !• Sinon, il faudra trouver une autre approche !Sinon, il faudra trouver une autre approche !

{ F }{ F } { Q } { Q }

2211

22{ F }{ F } { Q } { Q }11

P ,P , C => C => FF22P , C =>P , C => FF11

11 22

11 22

Page 160: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 160160

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si nous ne trouvons pas Si nous ne trouvons pas PP nous pouvons toujours nous pouvons toujours faire une discussion par cas et partir de :faire une discussion par cas et partir de :

{ ??? } if C then { ??? } if C then else else { Q } { Q }1 21 2

{ ??? } { ??? } { Q } { Q }11

Page 161: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 161161

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si nous ne trouvons pas Si nous ne trouvons pas PP nous pouvons toujours nous pouvons toujours faire une discussion par cas et partir de :faire une discussion par cas et partir de :

• pour chercher pour chercher F F : :

{ ??? } if C then { ??? } if C then else else { Q } { Q }1 21 2

{ ??? } { ??? } { Q } { Q }11

11

{ ??? } if C then { ??? } if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }1111

Page 162: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 162162

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Si nous ne trouvons pas Si nous ne trouvons pas PP nous pouvons toujours faire une discussion par cas et partir nous pouvons toujours faire une discussion par cas et partir de :de :

• pour chercher pour chercher F F : :

• et déduire une pré-condition au cas ou le test est vrai :et déduire une pré-condition au cas ou le test est vrai :

{ ??? } if C then { ??? } if C then else else { Q } { Q }1 21 2

{ ??? } { ??? } { Q } { Q }11

11

{ ??? } if C then { ??? } if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }1111

{ F , C }{ F , C } if C then if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }1111

11

Page 163: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 163163

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous obtenons deux cas :Nous obtenons deux cas :

{ F , C }{ F , C } if C then if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }1111

11

Test vrai !Test vrai !

Page 164: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 164164

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous obtenons deux cas :Nous obtenons deux cas :

{ F , C }{ F , C } if C then if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }1111

11

Test vrai !Test vrai !

{ F , { F , C }C } if C then if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }2222

22

Test faux !Test faux !

Page 165: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 165165

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Nous obtenons deux cas :Nous obtenons deux cas :

• que nous fusionnons ensuite :que nous fusionnons ensuite :

{ F , C }{ F , C } if C then if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }1111

11

Test vrai !Test vrai !

{ F , { F , C }C } if C then if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }2222

22

Test faux !Test faux !

{ F , C } ou { F , { F , C } ou { F , C }C } if C then if C then else else { Q } { Q }1 21 2

{ F }{ F } { Q } { Q }2222

2211

{ F }{ F } { Q } { Q }1111

Page 166: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 166166

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un premier exemple :Un premier exemple :

if ( a < 0 )if ( a < 0 )thenthen

x <- x + 7x <- x + 7

elseelse

x = x – 3x = x – 3

Page 167: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 167167

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un premier exemple :Un premier exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- x + 7x <- x + 7

elseelse

x = x – 3x = x – 3

Q = { x = a + 8Q = { x = a + 8 }}

Page 168: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 168168

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un premier exemple :Un premier exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- x + 7x <- x + 7

elseelse

x = x – 3x = x – 3

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

Page 169: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 169169

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un premier exemple :Un premier exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- x + 7x <- x + 7

elseelse

x = x – 3x = x – 3

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

F = { x = a + 11 }F = { x = a + 11 }22

Page 170: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 170170

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un premier exemple :Un premier exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- x + 7x <- x + 7

elseelse

x = x – 3x = x – 3

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

F = { x = a + 11 }F = { x = a + 11 }22

F = { x = a + 1 }F = { x = a + 1 }11

Page 171: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 171171

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un premier exemple :Un premier exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- x + 7x <- x + 7

elseelse

x = x – 3x = x – 3

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

Q = { x = a + 8Q = { x = a + 8 }}

F = { x = a + 11 }F = { x = a + 11 }22

F = { x = a + 1 }F = { x = a + 1 }11

{ x = a + 1 , a < 0 } { x = a + 1 , a < 0 } ouou { x = a + 11 , a >= 0 }{ x = a + 11 , a >= 0 }

Page 172: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 172172

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un second exemple :Un second exemple :

if ( a < 0 )if ( a < 0 )thenthen

x <- -ax <- -a

elseelse

x = ax = a

Page 173: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 173173

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un second exemple :Un second exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- -ax <- -a

elseelse

x = ax = a

Q = { x = | a |Q = { x = | a | }}

Page 174: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 174174

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un second exemple :Un second exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- -ax <- -a

elseelse

x = ax = a

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

Page 175: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 175175

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un second exemple :Un second exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- -ax <- -a

elseelse

x = ax = a

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

F = { a >= 0 }F = { a >= 0 }22

Page 176: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 176176

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un second exemple :Un second exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- -ax <- -a

elseelse

x = ax = a

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

F = { a >= 0 }F = { a >= 0 }22

F = { a < 0 }F = { a < 0 }11

Page 177: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 177177

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un second exemple :Un second exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- -ax <- -a

elseelse

x = ax = a

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

F = { a >= 0 }F = { a >= 0 }22

F = { a < 0 }F = { a < 0 }11

{ a < 0 } { a < 0 } ouou { a >= 0 }{ a >= 0 }

Page 178: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 178178

Logique de HoareLogique de Hoare----------------------------------------------------------------------------------------------------------------------------------

• Un second exemple :Un second exemple :

• POST : POST :

if ( a < 0 )if ( a < 0 )thenthen

x <- -ax <- -a

elseelse

x = ax = a

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

Q = { x = | a |Q = { x = | a | }}

F = { a >= 0 }F = { a >= 0 }22

F = { a < 0 }F = { a < 0 }11

{ a < 0 } { a < 0 } ouou { a >= 0 } { a >= 0 } = = { VRAI }{ VRAI }

Page 179: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 179179

SynthèseSynthèse----------------------------------------------------------------------------------------------------------------------------------

Logique de Hoare (début) :Logique de Hoare (début) :

Principes etPrincipes et

constructions élémentaires.constructions élémentaires.

Page 180: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.

12 décembre 200612 décembre 2006 Cours d'algorithmique 9 - IntranetCours d'algorithmique 9 - Intranet 180180

m E r C i e Tm E r C i e Tb O n N e J o U r N é b O n N e J o U r N é

E ! ! !E ! ! !

n ‘ O u B l I e Z p A s D en ‘ O u B l I e Z p A s D ep R é P a R e R v O sp R é P a R e R v O s

T D ! ! !T D ! ! !