Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare...
-
Upload
fernand-lagrange -
Category
Documents
-
view
104 -
download
0
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/1.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/2.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/3.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/4.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/5.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/6.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/7.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/8.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/9.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/10.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/11.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/12.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/13.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/14.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/15.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/16.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/17.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/18.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/19.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/20.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/21.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/22.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/23.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/24.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/25.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/26.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/27.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/28.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/29.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/30.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/31.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/32.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/33.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/34.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/35.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/36.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/37.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/38.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/39.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/40.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/41.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/42.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/43.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/44.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/45.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/46.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/47.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/48.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/49.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/50.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/51.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/52.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/53.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/54.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/55.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/56.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/57.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/58.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/59.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/60.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/61.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/62.jpg)
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 « « » ! » !
![Page 63: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/63.jpg)
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 } !!
![Page 64: Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/64.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/65.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/66.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/67.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/68.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/69.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/70.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/71.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/72.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/73.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/74.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/75.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/76.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/77.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/78.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/79.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/80.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/81.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/82.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/83.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/84.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/85.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/86.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/87.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/88.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/89.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/90.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/91.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/92.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/93.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/94.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/95.jpg)
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
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/96.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/97.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/98.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/99.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/100.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/101.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/102.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/103.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/104.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/105.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/106.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/107.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/108.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/109.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/110.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/111.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/112.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/113.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/114.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/115.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/116.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/117.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/118.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/119.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/120.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/121.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/122.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/123.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/124.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/125.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/126.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/127.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/128.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/129.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/130.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/131.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/132.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/133.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/134.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/135.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/136.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/137.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/138.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/139.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/140.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/141.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/142.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/143.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/144.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/145.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/146.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/147.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/148.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/149.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/150.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/151.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/152.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/153.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/154.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/155.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/156.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/157.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/158.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/159.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/160.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/161.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/162.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/163.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/164.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/165.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/166.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/167.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/168.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/169.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/170.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/171.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/172.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/173.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/174.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/175.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/176.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/177.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/178.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/179.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062511/551d9d84497959293b8bfa4d/html5/thumbnails/180.jpg)
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 ! ! !