11 février 2014 Cours d'algorithmique 3 - Intranet 1 Cours dAlgorithmique Arbres. Parcours darbres.
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...
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.
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
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 !
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 !
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.
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, … !
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 » !
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
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 ?
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 ?
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
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).
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,,
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..
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
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
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
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 }
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..
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 !
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 ? ? ? ? ?
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
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, … ),
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,
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,
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 !
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 » !
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 » !
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 » !
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 » !
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) !
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 » !
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.
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 ».
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 ».
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’ !!
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’
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’ }
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 !
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 ! !
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 }
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
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
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’
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’
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’
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’
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 » :
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
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
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
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
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
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 ?
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 « » ! » !
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 !
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 :
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 « » ! » !
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 !
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 !
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 « « » ! » !
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 « « » ! » !
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 } !!
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
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
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
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
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 . . ..
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
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
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
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
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
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
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
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
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
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
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
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 :
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 }
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 }
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 }
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 }}
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
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
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
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 : :
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 }
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
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
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
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
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
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
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 : :
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 }
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 }
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 }
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 }
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 }
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 }
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 } : :
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 !
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 ..
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 <-- … … { ??? }{ ??? }
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 <-- … … { ??? }{ ??? }
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 <-- … … { ??? }{ ??? }
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 ) { ??? }{ ??? }
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
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
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
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
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 }
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 ]
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 }
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 ]
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 }
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 ]
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 }
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 }
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
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 }
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 ]
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 }
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 !
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 ]
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 }
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 !
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 ]
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 }
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 !
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 }
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é ? ? ?
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 }}
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 }}
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
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 }
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 ]
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 }
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 !
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 ]
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 }
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 !
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 ]
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 }
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 !
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 }
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é ? ? ?
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 }}
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 }}
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
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
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
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
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
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
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
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
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
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
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
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 !
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 !
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
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
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 }}
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 }}
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
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
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 }
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
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 | }}
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 | }}
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
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
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 }
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 }
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.
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 ! ! !