Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parFernand Lagrange Modifié depuis plus de 11 années
1
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
2
12 décembre 2006Cours d'algorithmique 9 - Intranet2 Trier et chercher, recherche textuelle Trier et chercher, recherche textuelle Listes et arbres Listes et arbres Le back-track Le back-track Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer, algorithmes gloutons Divide and conquer, algorithmes gloutons Minimax, alpha-beta Minimax, alpha-beta Dérécursion Dérécursion Divers problèmes particuliers Divers problèmes particuliers Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Les grandes lignes du cours
3
12 décembre 2006Cours d'algorithmique 9 - Intranet3 Logique de Hoare ----------------------------------------------------------------- Logique de Hoare ! Logique de Hoare ! Plus faibles pré-conditions de Dijkstra ! Plus faibles pré-conditions de Dijkstra !
4
12 décembre 2006Cours d'algorithmique 9 - Intranet4 Logique 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 dun programme !
5
12 décembre 2006Cours d'algorithmique 9 - Intranet5 Logique 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 dun programme ! Cadre : Cadre : – Spécifications formelles. – Génie logiciel.
6
12 décembre 2006Cours d'algorithmique 9 - Intranet6 Logique de Hoare ----------------------------------------------------------------- Indispensable dans certains cas (lois européennes) ! Indispensable dans certains cas (lois européennes) ! Transport, nucléaire, … ! Transport, nucléaire, … !
7
12 décembre 2006Cours d'algorithmique 9 - Intranet7 Logique 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 programme ! On peut : On peut : – utiliser des outils comme « Atelier B » !
8
12 décembre 2006Cours d'algorithmique 9 - Intranet8 Logique de Hoare ----------------------------------------------------------------- Analyse de programmes : Analyse de programmes :Programme
9
12 décembre 2006Cours d'algorithmique 9 - Intranet9 Logique de Hoare ----------------------------------------------------------------- Analyse de programmes : Analyse de programmes :Programme Que fait-il ?
10
12 décembre 2006Cours d'algorithmique 9 - Intranet10 Logique de Hoare ----------------------------------------------------------------- Analyse de programmes : Analyse de programmes :Programme Construction dun programme : Construction dun programme : Ce quil doit faire ! (cahier des charges) Ce quil doit faire ! (cahier des charges) Que fait-il ?
11
12 décembre 2006Cours d'algorithmique 9 - Intranet11 Logique de Hoare ----------------------------------------------------------------- Analyse de programmes : Analyse de programmes :Programme Construction dun programme : Construction dun programme : Ce quil doit faire ! (cahier des charges) Ce quil doit faire ! (cahier des charges) Que fait-il ? Programme
12
12 décembre 2006Cours d'algorithmique 9 - Intranet12 Logique de Hoare ----------------------------------------------------------------- Une spécification formelle est un Une spécification formelle est un cahier de charges formel (des définitions précises). cahier de charges formel (des définitions précises).
13
12 décembre 2006Cours d'algorithmique 9 - Intranet13 Logique de Hoare ----------------------------------------------------------------- Une spécification formelle est un Une spécification formelle est un cahier de charges formel (des définitions précises). cahier de charges formel (des définitions précises). Elle donne Elle donne – les pré-conditions, notées PRE, qui sont les conditions vérifiées par les arguments en entrée, vérifiées par les arguments en entrée,
14
12 décembre 2006Cours d'algorithmique 9 - Intranet14 Logique de Hoare ----------------------------------------------------------------- Une spécification formelle est un Une spécification formelle est un cahier de charges formel (des définitions précises). cahier de charges formel (des définitions précises). Elle donne Elle donne – les pré-conditions, notées PRE, qui sont les conditions vérifiées par les arguments en entrée, vérifiées par les arguments en entrée, – les post-conditions, notées POST, qui sont les conditions vérifiées par les résultats en sortie. vérifiées par les résultats en sortie.
15
12 décembre 2006Cours d'algorithmique 9 - Intranet15 Logique de Hoare ----------------------------------------------------------------- Un exemple : Un exemple : – PRE : ENTREE, DIV N – POST: QUO, RESTE N telles ENTREE = QUO * DIV + RESTE et RESTE < DIV. et RESTE < DIV. I I
16
12 décembre 2006Cours d'algorithmique 9 - Intranet16 Logique de Hoare ----------------------------------------------------------------- Un exemple : Un exemple : – PRE : ENTREE, DIV N – POST: QUO, RESTE N telles ENTREE = QUO * DIV + RESTE et RESTE < DIV. et RESTE < DIV. – Cest la spécification de la division euclidienne ! I I
17
12 décembre 2006Cours d'algorithmique 9 - Intranet17 Logique de Hoare ----------------------------------------------------------------- Un exemple : Un exemple : – PRE : ENTREE, DIV N – POST: QUO, RESTE N telles ENTREE = QUO * DIV + RESTE et RESTE < DIV. et RESTE < DIV. – Cest la spécification de la division euclidienne ! – Nous savons ce quil faut faire ! – Nous ne savons pas encore comment faire ? I I
18
12 décembre 2006Cours d'algorithmique 9 - Intranet18 Logique de Hoare ----------------------------------------------------------------- Ensuite, nous construisons un programme tel que Ensuite, nous construisons un programme tel que { PRE } programme { POST } { PRE } programme { POST }
19
12 décembre 2006Cours d'algorithmique 9 - Intranet19 Logique de Hoare ----------------------------------------------------------------- Ensuite, nous construisons un programme tel que Ensuite, nous construisons un programme tel que { PRE } programme { POST } { PRE } programme { POST } Ceci signifie que Ceci signifie que – si les pré-conditions sont vérifiées par les arguments, – alors les post-conditions seront vérifiées par les résultats.
20
12 décembre 2006Cours d'algorithmique 9 - Intranet20 Logique de Hoare ----------------------------------------------------------------- Ensuite, nous construisons un programme tel que Ensuite, nous construisons un programme tel que { PRE } programme { POST } { PRE } programme { POST } Ceci signifie que Ceci signifie que – si les pré-conditions sont vérifiées par les arguments, – alors les post-conditions seront vérifiées par les résultats. Ce lien est fait à laide de la logique de Hoare ! Ce lien est fait à laide de la logique de Hoare !
21
12 décembre 2006Cours d'algorithmique 9 - Intranet21 Logique de Hoare ----------------------------------------------------------------- Ensuite, nous construisons un programme tel que Ensuite, nous construisons un programme tel que { PRE } programme { POST } { PRE } programme { POST } Ceci signifie que Ceci signifie que – si les pré-conditions sont vérifiées par les arguments, – alors les post-conditions seront vérifiées par les résultats. Ce lien est fait à laide de la logique de Hoare ! Ce lien est fait à laide 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 ? ? ? ? ?
22
12 décembre 2006Cours d'algorithmique 9 - Intranet22 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut
23
12 décembre 2006Cours d'algorithmique 9 - Intranet23 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ),
24
12 décembre 2006Cours d'algorithmique 9 - Intranet24 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ), – boucler,
25
12 décembre 2006Cours d'algorithmique 9 - Intranet25 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ), – boucler, – répondre nimporte quoi,
26
12 décembre 2006Cours d'algorithmique 9 - Intranet26 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ), – boucler, – répondre nimporte quoi, – répondre correctement, malgré tout !
27
12 décembre 2006Cours d'algorithmique 9 - Intranet27 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ), – boucler, – répondre nimporte quoi, – répondre correctement, malgré tout ! Sage précaution : Sage précaution : – Testons la validité des arguments et générons des messages derreur sil le faut ! – Ce sont les « assert » !
28
12 décembre 2006Cours d'algorithmique 9 - Intranet28 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ), – boucler, – répondre nimporte quoi, – répondre correctement, malgré tout ! Sage précaution : Sage précaution : – Testons la validité des arguments et générons des messages derreur sil le faut ! – Ce sont les « assert » !
29
12 décembre 2006Cours d'algorithmique 9 - Intranet29 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ), – boucler, – répondre nimporte quoi, – répondre correctement, malgré tout ! Sage précaution : Sage précaution : – Testons la validité des arguments et générons des messages derreur sil le faut ! – Ce sont les « assert » !
30
12 décembre 2006Cours d'algorithmique 9 - Intranet30 Logique de Hoare ----------------------------------------------------------------- Si la pré-condition nest pas vérifiée, le programme peut Si la pré-condition nest pas vérifiée, le programme peut – provoquer une erreur (segmentation fault, … ), – boucler, – répondre nimporte quoi, – répondre correctement, malgré tout ! Sage précaution : Sage précaution : – Testons la validité des arguments et générons des messages derreur sil le faut ! – Ce sont les « assert » !
31
12 décembre 2006Cours d'algorithmique 9 - Intranet31 Logique de Hoare ----------------------------------------------------------------- Dans Dans { PRE } programme { POST } { PRE } programme { POST } nous avons en fait nous avons en fait PRE => POST (limplication logique) ! PRE => POST (limplication logique) !
32
12 décembre 2006Cours d'algorithmique 9 - Intranet32 Logique de Hoare ----------------------------------------------------------------- Dans Dans { PRE } programme { POST } { PRE } programme { POST } nous avons en fait nous avons en fait PRE => POST (limplication logique) ! PRE => POST (limplication logique) ! Rappels : Rappels : A => B « Tous les A sont B » ! A => B « Tous les A sont B » !
33
12 décembre 2006Cours d'algorithmique 9 - Intranet33 Logique de Hoare ----------------------------------------------------------------- Dans Dans { PRE } programme { POST } { PRE } programme { POST } nous avons en fait nous avons en fait PRE => POST (limplication logique) ! PRE => POST (limplication logique) ! Rappels : Rappels : A => B « Tous les A sont B » ! A => B « Tous les A sont B » ! A B A : ceux qui vérifient A. B : ceux qui vérifient B.
34
12 décembre 2006Cours d'algorithmique 9 - Intranet34 Logique de Hoare ----------------------------------------------------------------- Dans Dans { PRE } programme { POST } { PRE } programme { POST } nous avons en fait nous avons en fait PRE => POST (limplication logique) ! PRE => POST (limplication logique) ! Rappels : Rappels : A => B « Tous les A sont B » ! A => B « Tous les A sont B » ! A B « A » est une condition plus forte que « B ».
35
12 décembre 2006Cours d'algorithmique 9 - Intranet35 Logique de Hoare ----------------------------------------------------------------- Dans Dans { PRE } programme { POST } { PRE } programme { POST } nous avons en fait nous avons en fait PRE => POST (limplication logique) ! PRE => POST (limplication logique) ! Rappels : Rappels : A => B « Tous les A sont B » ! A => B « Tous les A sont B » ! A B « A » est une condition plus forte que « B ». « B » est une condition plus faible que « A ».
36
12 décembre 2006Cours d'algorithmique 9 - Intranet36 Logique de Hoare ----------------------------------------------------------------- Soit { PRE } programme { POST } ! Soit { PRE } programme { POST } ! Soit PRE => PRE ! Soit PRE => PRE ! Soit POST => POST ! Soit POST => POST !
37
12 décembre 2006Cours d'algorithmique 9 - Intranet37 Logique de Hoare ----------------------------------------------------------------- Soit { PRE } programme { POST } ! Soit { PRE } programme { POST } ! Soit PRE => PRE ! Soit PRE => PRE ! Soit POST => POST ! Soit POST => POST ! Donc : Donc : PRE => { PRE } programme { POST } => POST PRE => { PRE } programme { POST } => POST
38
12 décembre 2006Cours d'algorithmique 9 - Intranet38 Logique de Hoare ----------------------------------------------------------------- Soit { PRE } programme { POST } ! Soit { PRE } programme { POST } ! Soit PRE => PRE ! Soit PRE => PRE ! Soit POST => POST ! Soit POST => POST ! Donc : Donc : PRE => { PRE } programme { POST } => POST PRE => { PRE } programme { POST } => POST et et { PRE } programme { POST } { PRE } programme { POST }
39
12 décembre 2006Cours d'algorithmique 9 - Intranet39 Logique de Hoare ----------------------------------------------------------------- Soit { PRE } programme { POST } ! Soit { PRE } programme { POST } ! Soit PRE => PRE ! Soit PRE => PRE ! Soit POST => POST ! Soit POST => POST ! Donc : Donc : PRE => { PRE } programme { POST } => POST PRE => { PRE } programme { POST } => POST et et { PRE } programme { POST } { PRE } programme { POST } Pré-condition plus forte ! Post-condition plus faible !
40
12 décembre 2006Cours d'algorithmique 9 - Intranet40 Logique de Hoare ----------------------------------------------------------------- Soit { PRE } programme { POST } ! Soit { PRE } programme { POST } ! Soit PRE => PRE ! Soit PRE => PRE ! Soit POST => POST ! Soit POST => POST ! Donc : Donc : PRE => { PRE } programme { POST } => POST PRE => { PRE } programme { POST } => POST et et { PRE } programme { POST } { PRE } programme { POST } Pré-condition plus forte ! Post-condition plus faible ! Pour un ensemble plus restreint darguments, Pour un ensemble plus restreint darguments, le programme répond de manière plus vague ! le programme répond de manière plus vague !
41
12 décembre 2006Cours d'algorithmique 9 - Intranet41 Logique de Hoare ----------------------------------------------------------------- Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST }
42
12 décembre 2006Cours d'algorithmique 9 - Intranet42 Logique de Hoare ----------------------------------------------------------------- Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST } programme PRE POST
43
12 décembre 2006Cours d'algorithmique 9 - Intranet43 Logique de Hoare ----------------------------------------------------------------- Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST } programme PRE POST xy
44
12 décembre 2006Cours d'algorithmique 9 - Intranet44 Logique de Hoare ----------------------------------------------------------------- Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST } programme PRE POST PRE => PRE PRE
45
12 décembre 2006Cours d'algorithmique 9 - Intranet45 Logique de Hoare ----------------------------------------------------------------- Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST } programme PRE POST PRE => PRE PRE POST => POST
46
12 décembre 2006Cours d'algorithmique 9 - Intranet46 Logique de Hoare ----------------------------------------------------------------- Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST } programme PRE POST PRE => PRE PRE POST => POST
47
12 décembre 2006Cours d'algorithmique 9 - Intranet47 Logique de Hoare ----------------------------------------------------------------- Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST } programme PRE POST PRE => PRE PRE POST => POST
48
12 décembre 2006Cours d'algorithmique 9 - Intranet48 Logique de Hoare ----------------------------------------------------------------- Le lien entre le « cahier des charges » et le « programme » : Le lien entre le « cahier des charges » et le « programme » :
49
12 décembre 2006Cours d'algorithmique 9 - Intranet49 Logique de Hoare ----------------------------------------------------------------- Le lien entre le « cahier des charges » et le « programme » : Le lien entre le « cahier des charges » et le « programme » : Cahier des charges
50
12 décembre 2006Cours d'algorithmique 9 - Intranet50 Logique de Hoare ----------------------------------------------------------------- Le lien entre le « cahier des charges » et le « programme » : Le lien entre le « cahier des charges » et le « programme » : programme Cahier des charges
51
12 décembre 2006Cours d'algorithmique 9 - Intranet51 Logique 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 ! programme Cahier des charges
52
12 décembre 2006Cours d'algorithmique 9 - Intranet52 Logique 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 quexigé ! Le programme répond précisément, même plus quexigé ! programme Cahier des charges
53
12 décembre 2006Cours d'algorithmique 9 - Intranet53 Logique 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 quexigé ! Le programme répond précisément, même plus quexigé ! Le cahier des charges est lexigence minimale ! ! ! Le cahier des charges est lexigence minimale ! ! ! programme Cahier des charges
54
12 décembre 2006Cours d'algorithmique 9 - Intranet54 Logique de Hoare ----------------------------------------------------------------- Que ferons-nous ? Que ferons-nous ?
55
12 décembre 2006Cours d'algorithmique 9 - Intranet55 Logique de Hoare ----------------------------------------------------------------- Que ferons-nous ? Que ferons-nous ? – Soient les prédicats « P » et « Q » ! – Soit le programme « » !
56
12 décembre 2006Cours d'algorithmique 9 - Intranet56 Logique de Hoare ----------------------------------------------------------------- Que ferons-nous ? Que ferons-nous ? – Soient les prédicats « P » et « Q » ! – Soit le programme « » ! Nous pouvons dire si { P } { Q } est vraie ou non ! Nous pouvons dire si { P } { Q } est vraie ou non !
57
12 décembre 2006Cours d'algorithmique 9 - Intranet57 Logique de Hoare ----------------------------------------------------------------- Que ferons-nous ? Que ferons-nous ? – Soient les prédicats « P » et « Q » ! – Soit le programme « » ! Nous pouvons dire si { P } { Q } est vraie ou non ! Nous pouvons dire si { P } { Q } est vraie ou non ! Plus intéressant : Plus intéressant :
58
12 décembre 2006Cours d'algorithmique 9 - Intranet58 Logique de Hoare ----------------------------------------------------------------- Que ferons-nous ? Que ferons-nous ? – Soient les prédicats « P » et « Q » ! – Soit le programme « » ! Nous pouvons dire si { P } { Q } est vraie ou non ! Nous pouvons dire si { P } { Q } est vraie ou non ! Plus intéressant : Plus intéressant : – Soit la post-condition « Q » ! – Soit le programme « » !
59
12 décembre 2006Cours d'algorithmique 9 - Intranet59 Logique de Hoare ----------------------------------------------------------------- Que ferons-nous ? Que ferons-nous ? – Soient les prédicats « P » et « Q » ! – Soit le programme « » ! Nous pouvons dire si { P } { Q } est vraie ou non ! Nous pouvons dire si { P } { Q } est vraie ou non ! Plus intéressant : Plus intéressant : – Soit la post-condition « Q » ! – Soit le programme « » ! Nous avons un programme et une définition de ce que le programme devrait faire !
60
12 décembre 2006Cours d'algorithmique 9 - Intranet60 Logique de Hoare ----------------------------------------------------------------- Que ferons-nous ? Que ferons-nous ? – Soient les prédicats « P » et « Q » ! – Soit le programme « » ! Nous pouvons dire si { P } { Q } est vraie ou non ! Nous pouvons dire si { P } { Q } est vraie ou non ! Plus intéressant : Plus intéressant : – Soit la post-condition « Q » ! – Soit le programme « » ! Nous pouvons calculer la plus faible condition F telle que { F } { Q } soit vraie ! Nous pouvons calculer la plus faible condition F telle que { F } { Q } soit vraie ! Nous avons un programme et une définition de ce que le programme devrait faire !
61
12 décembre 2006Cours d'algorithmique 9 - Intranet61 Logique de Hoare ----------------------------------------------------------------- La démarche complète : La démarche complète : – Soit la post-condition « Q » ! Soit le programme « » !
62
12 décembre 2006Cours d'algorithmique 9 - Intranet62 Logique de Hoare ----------------------------------------------------------------- La démarche complète : La démarche complète : – Soit la post-condition « Q » ! Soit le programme « » ! Q
63
12 décembre 2006Cours d'algorithmique 9 - Intranet63 Logique de Hoare ----------------------------------------------------------------- La démarche complète : La démarche complète : – Soit la post-condition « Q » ! Soit le programme « » ! Calculons la plus faible condition F telle que { F } { Q } ! Calculons la plus faible condition F telle que { F } { Q } ! Q
64
12 décembre 2006Cours d'algorithmique 9 - Intranet64 Logique de Hoare ----------------------------------------------------------------- La démarche complète : La démarche complète : – Soit la post-condition « Q » ! Soit le programme « » ! Calculons la plus faible condition F telle que { F } { Q } ! Calculons la plus faible condition F telle que { F } { Q } ! F Q
65
12 décembre 2006Cours d'algorithmique 9 - Intranet65 Logique de Hoare ----------------------------------------------------------------- La démarche complète : La démarche complète : – Soit la post-condition « Q » ! Soit le programme « » ! Calculons la plus faible condition F telle que { F } { Q } ! Calculons la plus faible condition F telle que { F } { Q } ! Nous comparons avec le cahier des charges ! ! ! Nous comparons avec le cahier des charges ! ! ! F Q
66
12 décembre 2006Cours d'algorithmique 9 - Intranet66 Logique de Hoare ----------------------------------------------------------------- La démarche complète : La démarche complète : – Soit la post-condition « Q » ! Soit le programme « » ! Calculons la plus faible condition F telle que { F } { Q } ! Calculons la plus faible condition F telle que { F } { Q } ! Nous comparons avec le cahier des charges ! ! ! Nous comparons avec le cahier des charges ! ! ! Cahier des charges F PRE Q = POST
67
12 décembre 2006Cours d'algorithmique 9 - Intranet67 Logique de Hoare ----------------------------------------------------------------- La démarche complète : La démarche complète : – Soit la post-condition « Q » ! Soit le programme « » ! Calculons la plus faible condition F telle que { F } { Q } ! Calculons la plus faible condition F telle que { F } { Q } ! Nous comparons avec le cahier des charges ! ! ! Nous comparons avec le cahier des charges ! ! ! Et nous vérifions que PRE => F !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Et nous vérifions que PRE => F !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Cahier des charges Q = POST F PRE
68
12 décembre 2006Cours d'algorithmique 9 - Intranet68 Logique de Hoare ----------------------------------------------------------------- C O N C R E T E M E N T...
69
12 décembre 2006Cours d'algorithmique 9 - Intranet69 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip – x < - e – – – if C then else – if C then else – while C do – while C do 2 1 1 2
70
12 décembre 2006Cours d'algorithmique 9 - Intranet70 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip le programme qui ne fait rien ! – x < - e – – – if C then else – if C then else – while C do – while C do 2 1 1 2
71
12 décembre 2006Cours d'algorithmique 9 - Intranet71 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip le programme qui ne fait rien ! – x < - e laffectation ! – – – if C then else – if C then else – while C do – while C do 2 1 1 2
72
12 décembre 2006Cours d'algorithmique 9 - Intranet72 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip le programme qui ne fait rien ! – x < - e laffectation ! – la séquence dinstructions ! – if C then else – if C then else – while C do – while C do 2 1 1 2
73
12 décembre 2006Cours d'algorithmique 9 - Intranet73 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip le programme qui ne fait rien ! – x < - e laffectation ! – la séquence dinstructions ! – if C then else la conditionnelle ! – while C do – while C do 2 1 1 2
74
12 décembre 2006Cours d'algorithmique 9 - Intranet74 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip le programme qui ne fait rien ! – x < - e laffectation ! – la séquence dinstructions ! – if C then else la conditionnelle ! – while C do la boucle ! 2 1 1 2
75
12 décembre 2006Cours d'algorithmique 9 - Intranet75 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip le programme qui ne fait rien ! – x < - e laffectation ! – la séquence dinstructions ! – if C then else la conditionnelle ! – while C do la boucle ! Les conditions « C » ne font pas daffectation ! Les conditions « C » ne font pas daffectation ! 2 1 1 2
76
12 décembre 2006Cours d'algorithmique 9 - Intranet76 Logique de Hoare ----------------------------------------------------------------- Les programmes : Les programmes : – skip le programme qui ne fait rien ! – x < - e laffectation ! – la séquence dinstructions ! – if C then else la conditionnelle ! – while C do la boucle ! Les conditions « C » ne font pas daffectation ! Les conditions « C » ne font pas daffectation ! Toutes les autres constructions peuvent sexprimer à laide de celles ci-dessus ! Toutes les autres constructions peuvent sexprimer à laide de celles ci-dessus ! 2 1 1 2
77
12 décembre 2006Cours d'algorithmique 9 - Intranet77 Logique de Hoare ----------------------------------------------------------------- Nous utilisons des règles logiques de la forme : Nous utilisons des règles logiques de la forme : HYP... HYP 1 n CONCL
78
12 décembre 2006Cours d'algorithmique 9 - Intranet78 Logique 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 en Celles-ci sont utilisées en – MODUS PONENS : Si nous avons les hypothèses nous pouvons déduire la conclusion ! HYP... HYP 1 n CONCL
79
12 décembre 2006Cours d'algorithmique 9 - Intranet79 Logique 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 en Celles-ci sont utilisées en – MODUS PONENS : Si nous avons les hypothèses nous pouvons déduire la conclusion ! – MODUS TOLLENS : Pour avoir la conclusion, il suffit davoir les hypothèses ! HYP... HYP 1 n CONCL
80
12 décembre 2006Cours d'algorithmique 9 - Intranet80 Logique 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 :
81
12 décembre 2006Cours d'algorithmique 9 - Intranet81 Logique 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 } { R }
82
12 décembre 2006Cours d'algorithmique 9 - Intranet82 Logique 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 } { R } { P } { R }
83
12 décembre 2006Cours d'algorithmique 9 - Intranet83 Logique 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 } { R } { P } { R } Q => R { P } { Q }
84
12 décembre 2006Cours d'algorithmique 9 - Intranet84 Logique 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 } { R } { P } { R } Q => R { P } { Q } { P } { R }
85
12 décembre 2006Cours d'algorithmique 9 - Intranet85 Logique 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 } { R } { P } { R } Q => R { P } { Q } { P } { R } { P } { Q } 1 1 { P } { Q } 2 2
86
12 décembre 2006Cours d'algorithmique 9 - Intranet86 Logique 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 } { R } { P } { R } Q => R { P } { Q } { P } { R } { P } { Q } 1 1 { P } { Q } 2 2 { P, P } { Q, Q } 1 1 2 2
87
12 décembre 2006Cours d'algorithmique 9 - Intranet87 Logique 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 } { R } { P } { R } Q => R { P } { Q } { P } { R } { P } { Q } 1 1 { P } { Q } 2 2 { P, P } { Q, Q } 1 1 2 2 Conjonction
88
12 décembre 2006Cours d'algorithmique 9 - Intranet88 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme skip : Règle pour le programme skip :
89
12 décembre 2006Cours d'algorithmique 9 - Intranet89 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme skip : Règle pour le programme skip : { P } skip { P }
90
12 décembre 2006Cours d'algorithmique 9 - Intranet90 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme ; : Règle pour le programme ; : 1 2
91
12 décembre 2006Cours d'algorithmique 9 - Intranet91 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme ; : Règle pour le programme ; : { P } { Q } { Q } { R } 12 { P } ; { R } 12 1 2
92
12 décembre 2006Cours d'algorithmique 9 - Intranet92 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme ; : Règle pour le programme ; : A cause de PRE-STRENGTH et POST-WEAK, nous navons pas besoin dune règle de la forme : A cause de PRE-STRENGTH et POST-WEAK, nous navons pas besoin dune règle de la forme : { P } { Q } { Q } { R } 12 { P } ; { R } 12 { P } { L } { Q } { R } 12 { P } ; { R } 12 L => Q 1 2
93
12 décembre 2006Cours d'algorithmique 9 - Intranet93 Logique de Hoare ----------------------------------------------------------------- { P } { L } { Q } { R } 12 L => Q
94
12 décembre 2006Cours d'algorithmique 9 - Intranet94 Logique de Hoare ----------------------------------------------------------------- { P } { L } { Q } { R } 12 L => Q 1 P L
95
12 décembre 2006Cours d'algorithmique 9 - Intranet95 2 Logique de Hoare ----------------------------------------------------------------- { P } { L } { Q } { R } 12 L => Q Q R 1 P L
96
12 décembre 2006Cours d'algorithmique 9 - Intranet96 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme x < - e : Règle pour le programme x < - e :
97
12 décembre 2006Cours d'algorithmique 9 - Intranet97 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme x < - e : Règle pour le programme x < - e : { P[ x < - e ] } x < - e { P }
98
12 décembre 2006Cours d'algorithmique 9 - Intranet98 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme x < - e : Règle pour le programme x < - e : ou P[ x < - e ] est la ou P[ x < - e ] est la substitution de « e » à toutes les occurrences substitution de « e » à toutes les occurrences libres de « x » dans « P ». libres de « x » dans « P ». { P[ x < - e ] } x < - e { P }
99
12 décembre 2006Cours d'algorithmique 9 - Intranet99 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme x < - e : Règle pour le programme x < - e : ou P[ x < - e ] est la ou P[ x < - e ] est la substitution de « e » à toutes les occurrences substitution 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 nest pas sous la portée dun quantification universel ou existentiel. Une occurrence de « x » dans « P » est libre si elle nest pas sous la portée dun quantification universel ou existentiel. { P[ x < - e ] } x < - e { P }
100
12 décembre 2006Cours d'algorithmique 9 - Intranet100 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme x < - e : Règle pour le programme x < - e : ou P[ x < - e ] est la ou P[ x < - e ] est la substitution de « e » à toutes les occurrences substitution de « e » à toutes les occurrences libres de « x » dans « P ». libres de « x » dans « P ». ( x > 3 et x. ( x >= 17 ) ) [ x 3 et x. ( x >= 17 ) ) [ x < - 9 ] { P[ x < - e ] } x < - e { P }
101
12 décembre 2006Cours d'algorithmique 9 - Intranet101 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme x < - e : Règle pour le programme x < - e : ou P[ x < - e ] est la ou P[ x < - e ] est la substitution de « e » à toutes les occurrences substitution de « e » à toutes les occurrences libres de « x » dans « P ». libres de « x » dans « P ». ( x > 3 et x. ( x >= 17 ) ) [ x 3 et x. ( x >= 17 ) ) [ x < - 9 ] = ( x > 3 et x. ( x >= 17 ) ) [ x 3 et x. ( x >= 17 ) ) [ x < - 9 ] { P[ x < - e ] } x < - e { P }
102
12 décembre 2006Cours d'algorithmique 9 - Intranet102 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme x < - e : Règle pour le programme x < - e : ou P[ x < - e ] est la ou P[ x < - e ] est la substitution de « e » à toutes les occurrences substitution de « e » à toutes les occurrences libres de « x » dans « P ». libres de « x » dans « P ». ( x > 3 et x. ( x >= 17 ) ) [ x 3 et x. ( x >= 17 ) ) [ x < - 9 ] = ( x > 3 et x. ( x >= 17 ) ) [ x 3 et x. ( x >= 17 ) ) [ x < - 9 ] = ( 9 > 3 et x. ( x >= 17 ) ) { P[ x < - e ] } x < - e { P }
103
12 décembre 2006Cours d'algorithmique 9 - Intranet103 Logique de Hoare ----------------------------------------------------------------- Interprétation de { P[ x < - e ] } x < - e { P } : Interprétation de { P[ x < - e ] } x < - e { P } :
104
12 décembre 2006Cours d'algorithmique 9 - Intranet104 Logique de Hoare ----------------------------------------------------------------- Interprétation de { P[ x < - e ] } x < - e { P } : Interprétation de { P[ x < - e ] } x < - e { P } : – Si « x » nest pas libre dans « P » : la post-condition ne sintéresse pas à « x », la post-condition ne sintéresse pas à « x », la pré-condition P[ x < - e ] = P non plus dailleurs, la pré-condition P[ x < - e ] = P non plus dailleurs, laffectation x < - e nest pas fausse, mais inutile ! laffectation x < - e nest pas fausse, mais inutile !
105
12 décembre 2006Cours d'algorithmique 9 - Intranet105 Logique de Hoare ----------------------------------------------------------------- Interprétation de { P[ x < - e ] } x < - e { P } : Interprétation de { P[ x < - e ] } x < - e { 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 P[ x < - e ] est la formule ou nous avons des « e » à la place des « x », la pré-condition P[ x < - e ] est la formule ou nous avons des « e » à la place des « x », laffectation x < - e donne la valeur « e » à « x » et nous pouvons donc dans P[ x < - e ] remplacer « e » par « x », laffectation x < - e donne la valeur « e » à « x » et nous pouvons donc dans P[ x < - e ] remplacer « e » par « x », cest-à-dire considérer la post-condition P. cest-à-dire considérer la post-condition P.
106
12 décembre 2006Cours d'algorithmique 9 - Intranet106 Logique de Hoare ----------------------------------------------------------------- Illustration : Illustration : { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } x < - … { ??? }
107
12 décembre 2006Cours d'algorithmique 9 - Intranet107 Logique de Hoare ----------------------------------------------------------------- Illustration : Illustration : { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } x < - … { ??? }
108
12 décembre 2006Cours d'algorithmique 9 - Intranet108 Logique de Hoare ----------------------------------------------------------------- Illustration : Illustration : { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - … { ??? }
109
12 décembre 2006Cours d'algorithmique 9 - Intranet109 Logique de Hoare ----------------------------------------------------------------- Illustration : Illustration : { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - ( 11 + 34 ) { ??? }
110
12 décembre 2006Cours d'algorithmique 9 - Intranet110 Logique de Hoare ----------------------------------------------------------------- Illustration : Illustration : { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - ( 11 + 34 ) { ??? } P
111
12 décembre 2006Cours d'algorithmique 9 - Intranet111 Logique de Hoare ----------------------------------------------------------------- Illustration : Illustration : { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - ( 11 + 34 ) { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - ( 11 + 34 ) { P } P
112
12 décembre 2006Cours d'algorithmique 9 - Intranet112 Logique de Hoare ----------------------------------------------------------------- Illustration : Illustration : { ( ( 11 + 34 ) * y mod ( 1 + ( 11 + 34 ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - ( 11 + 34 ) { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( 11 + 34 ) ] } x < - ( 11 + 34 ) { P } { P[ x < - ( 11 + 34 ) ] } x < - ( 11 + 34 ) { P } P
113
12 décembre 2006Cours d'algorithmique 9 - Intranet113 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : m <- x ; x <- y ; y <- m
114
12 décembre 2006Cours d'algorithmique 9 - Intranet114 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b }
115
12 décembre 2006Cours d'algorithmique 9 - Intranet115 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b } R = Q[ y < - m ]
116
12 décembre 2006Cours d'algorithmique 9 - Intranet116 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b } R = Q[ y < - m ] = { x = a, m = b }
117
12 décembre 2006Cours d'algorithmique 9 - Intranet117 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b } R = Q[ y < - m ] = { x = a, m = b } S = R[ x < - y ]
118
12 décembre 2006Cours d'algorithmique 9 - Intranet118 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b } R = Q[ y < - m ] = { x = a, m = b } S = R[ x < - y ] = { y = a, m = b }
119
12 décembre 2006Cours d'algorithmique 9 - Intranet119 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b } R = Q[ y < - m ] = { x = a, m = b } S = R[ x < - y ] = { y = a, m = b } P = S[ m < - x ]
120
12 décembre 2006Cours d'algorithmique 9 - Intranet120 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b } R = Q[ y < - m ] = { x = a, m = b } S = R[ x < - y ] = { y = a, m = b } P = S[ m < - x ] = { y = a, x = b }
121
12 décembre 2006Cours d'algorithmique 9 - Intranet121 Logique de Hoare ----------------------------------------------------------------- Premier exemple : Premier exemple : Post-condition : Post-condition : m <- x ; x <- y ; y <- m Q = { x = a, y = b } R = Q[ y < - m ] = { x = a, m = b } S = R[ x < - y ] = { y = a, m = b } P = S[ m < - x ] = { y = a, x = b }
122
12 décembre 2006Cours d'algorithmique 9 - Intranet122 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : x <- x + y ; y <- x - y ; x <- x - y
123
12 décembre 2006Cours d'algorithmique 9 - Intranet123 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b }
124
12 décembre 2006Cours d'algorithmique 9 - Intranet124 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ]
125
12 décembre 2006Cours d'algorithmique 9 - Intranet125 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b }
126
12 décembre 2006Cours d'algorithmique 9 - Intranet126 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } Des maths !
127
12 décembre 2006Cours d'algorithmique 9 - Intranet127 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ]
128
12 décembre 2006Cours d'algorithmique 9 - Intranet128 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ] = { x = a + b, x - y = b }
129
12 décembre 2006Cours d'algorithmique 9 - Intranet129 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ] = { x = a + b, x - y = b } = { x = a + b, y = a } Des maths !
130
12 décembre 2006Cours d'algorithmique 9 - Intranet130 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ] = { x = a + b, x - y = b } = { x = a + b, y = a } P = S[ x < - x + y ]
131
12 décembre 2006Cours d'algorithmique 9 - Intranet131 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ] = { x = a + b, x - y = b } = { x = a + b, y = a } P = S[ x < - x + y ] = { x + y = a + b, y = a }
132
12 décembre 2006Cours d'algorithmique 9 - Intranet132 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ] = { x = a + b, x - y = b } = { x = a + b, y = a } P = S[ x < - x + y ] = { x + y = a + b, y = a } = { x = b, y = a } Des maths !
133
12 décembre 2006Cours d'algorithmique 9 - Intranet133 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ] = { x = a + b, x - y = b } = { x = a + b, y = a } P = S[ x < - x + y ] = { x + y = a + b, y = a } = { x = b, y = a }
134
12 décembre 2006Cours d'algorithmique 9 - Intranet134 Logique de Hoare ----------------------------------------------------------------- Deuxième exemple : Deuxième exemple : POST : POST : x <- x + y ; y <- x - y ; x <- x - y Q = { x = a, y = b } R = Q[ x < - x - y ] = { x – y = a, y = b } = { x = a + b, y = b } S = R[ y < - x - y ] = { x = a + b, x - y = b } = { x = a + b, y = a } P = S[ x < - x + y ] = { x + y = a + b, y = a } = { x = b, y = a } Dépassement de capacité ? ? ?
135
12 décembre 2006Cours d'algorithmique 9 - Intranet135 Logique 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 ; y <- x - y ; x <- x - y Q = { x = a, y = b, a D, b D }
136
12 décembre 2006Cours d'algorithmique 9 - Intranet136 Logique 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 ; y <- x - y ; x <- x - y Q = { x = a, y = b, a D, b D } R = Q[ x < - x - y ] = { x = a + b, y = b, a D, b D, a + b D } S = R[ y < - x - y ] = { x = a + b, y = a, a D, b D, a + b D } P = S[ x < - x + y ] = { x = b, y = a, a D, b D, a + b D }
137
12 décembre 2006Cours d'algorithmique 9 - Intranet137 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : x <- x - y ; y <- x + y ; x <- y - x
138
12 décembre 2006Cours d'algorithmique 9 - Intranet138 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b }
139
12 décembre 2006Cours d'algorithmique 9 - Intranet139 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ]
140
12 décembre 2006Cours d'algorithmique 9 - Intranet140 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b }
141
12 décembre 2006Cours d'algorithmique 9 - Intranet141 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } Des maths !
142
12 décembre 2006Cours d'algorithmique 9 - Intranet142 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ]
143
12 décembre 2006Cours d'algorithmique 9 - Intranet143 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ] = { x = b – a, x + y = b }
144
12 décembre 2006Cours d'algorithmique 9 - Intranet144 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ] = { x = b – a, x + y = b } = { x = b – a, y = a } Des maths !
145
12 décembre 2006Cours d'algorithmique 9 - Intranet145 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ] = { x = b – a, x + y = b } = { x = b – a, y = a } P = S[ x < - x - y ]
146
12 décembre 2006Cours d'algorithmique 9 - Intranet146 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ] = { x = b – a, x + y = b } = { x = b – a, y = a } P = S[ x < - x - y ] = { x - y = b – a, y = a }
147
12 décembre 2006Cours d'algorithmique 9 - Intranet147 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ] = { x = b – a, x + y = b } = { x = b – a, y = a } P = S[ x < - x - y ] = { x - y = b – a, y = a } = { x = b, y = a } Des maths !
148
12 décembre 2006Cours d'algorithmique 9 - Intranet148 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ] = { x = b – a, x + y = b } = { x = b – a, y = a } P = S[ x < - x - y ] = { x - y = b – a, y = a } = { x = b, y = a }
149
12 décembre 2006Cours d'algorithmique 9 - Intranet149 Logique de Hoare ----------------------------------------------------------------- Troisième exemple : Troisième exemple : POST : POST : x <- x - y ; y <- x + y ; x <- y - x Q = { x = a, y = b } R = Q[ x < - y - x ] = { y – x = a, y = b } = { x = b - a, y = b } S = R[ y < - x + y ] = { x = b – a, x + y = b } = { x = b – a, y = a } P = S[ x < - x - y ] = { x - y = b – a, y = a } = { x = b, y = a } Dépassement de capacité ? ? ?
150
12 décembre 2006Cours d'algorithmique 9 - Intranet150 Logique 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 ; y <- x + y ; x <- y - x Q = { x = a, y = b, a D, b D }
151
12 décembre 2006Cours d'algorithmique 9 - Intranet151 Logique 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 ; y <- x + y ; x <- y - x Q = { x = a, y = b, a D, b D } R = Q[ x < - y - x ] = { x = b - a, y = b, a D, b D, b - a D } S = R[ y < - x + y ] = { x = b – a, y = a, a D, b D, b - a D } P = S[ x < - x - y ] = { x = b, y = a, a D, b D, b - a D }
152
12 décembre 2006Cours d'algorithmique 9 - Intranet152 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme if C then else : Règle pour le programme if C then else : 21
153
12 décembre 2006Cours d'algorithmique 9 - Intranet153 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme if C then else : Règle pour le programme if C then else : { P, C } { Q } { P } if C then else { Q } 21 1 2 2 { P, C } { Q } 1
154
12 décembre 2006Cours d'algorithmique 9 - Intranet154 Logique de Hoare ----------------------------------------------------------------- Règle pour le programme if C then else : Règle pour le programme if C then else : Mais, dans la pratique, nous naurons pas « P » : Mais, dans la pratique, nous naurons pas « P » : { P, T } { Q } { P } if C then else { Q } 21 1 2 2 { P, T } { Q } 1 { ???, C } { Q } { ??? } if C then else { Q } 1 2 2 { ???, C } { Q } 1
155
12 décembre 2006Cours d'algorithmique 9 - Intranet155 Logique de Hoare ----------------------------------------------------------------- Nous allons déduire les pré-conditions F et F à partir de et et de Q : Nous allons déduire les pré-conditions F et F à partir de et et de Q : 21 12
156
12 décembre 2006Cours d'algorithmique 9 - Intranet156 Logique de Hoare ----------------------------------------------------------------- Nous allons déduire les pré-conditions F et F à partir de et et de Q : Nous allons déduire les pré-conditions F et F à partir de et et de Q : { F } { Q } 21 2 1 12 12
157
12 décembre 2006Cours d'algorithmique 9 - Intranet157 Logique de Hoare ----------------------------------------------------------------- Nous allons déduire les pré-conditions F et F à partir de et et de Q : Nous allons déduire les pré-conditions F et F à partir de et et de Q : Ensuite, il sagira de trouver P tel que : Ensuite, il sagira de trouver P tel que : { F } { Q } 21 2 1 P, C => F 2 1 12 12
158
12 décembre 2006Cours d'algorithmique 9 - Intranet158 Logique de Hoare ----------------------------------------------------------------- Nous allons déduire les pré-conditions F et F à partir de et et de Q : Nous allons déduire les pré-conditions F et F à partir de et et de Q : Ensuite, il sagira de trouver P tel que : Ensuite, il sagira de trouver P tel que : Mais, comment faire ? ? ? ? ? Mais, comment faire ? ? ? ? ? { F } { Q } 21 2 1 P, C => F 2 1 12 12
159
12 décembre 2006Cours d'algorithmique 9 - Intranet159 Logique de Hoare ----------------------------------------------------------------- Nous allons déduire les pré-conditions F et F à partir de et et de Q : Nous allons déduire les pré-conditions F et F à partir de et et de Q : Ensuite, il sagira de trouver P tel que : Ensuite, il sagira de trouver P 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 } { Q } 21 2 1 P, C => F 2 1 12 12
160
12 décembre 2006Cours d'algorithmique 9 - Intranet160 Logique de Hoare ----------------------------------------------------------------- Si nous ne trouvons pas P nous pouvons toujours faire une discussion par cas et partir de : Si nous ne trouvons pas P nous pouvons toujours faire une discussion par cas et partir de : { ??? } if C then else { Q } 1 2 { ??? } { Q } 1
161
12 décembre 2006Cours d'algorithmique 9 - Intranet161 Logique de Hoare ----------------------------------------------------------------- Si nous ne trouvons pas P nous pouvons toujours faire une discussion par cas et partir de : Si nous ne trouvons pas P nous pouvons toujours faire une discussion par cas et partir de : pour chercher F : pour chercher F : { ??? } if C then else { Q } 1 2 { ??? } { Q } 1 1 { ??? } if C then else { Q } 1 2 { F } { Q } 1 1
162
12 décembre 2006Cours d'algorithmique 9 - Intranet162 Logique de Hoare ----------------------------------------------------------------- Si nous ne trouvons pas P nous pouvons toujours faire une discussion par cas et partir de : Si nous ne trouvons pas P nous pouvons toujours faire une discussion par cas et partir de : pour chercher F : pour chercher 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 else { Q } 1 2 { ??? } { Q } 1 1 { ??? } if C then else { Q } 1 2 { F } { Q } 1 1 { F, C } if C then else { Q } 1 2 { F } { Q } 1 1 1
163
12 décembre 2006Cours d'algorithmique 9 - Intranet163 Logique de Hoare ----------------------------------------------------------------- Nous obtenons deux cas : Nous obtenons deux cas : { F, C } if C then else { Q } 1 2 { F } { Q } 1 1 1 Test vrai !
164
12 décembre 2006Cours d'algorithmique 9 - Intranet164 Logique de Hoare ----------------------------------------------------------------- Nous obtenons deux cas : Nous obtenons deux cas : { F, C } if C then else { Q } 1 2 { F } { Q } 1 1 1 Test vrai ! { F, C } if C then else { Q } 1 2 { F } { Q } 2 2 2 Test faux !
165
12 décembre 2006Cours d'algorithmique 9 - Intranet165 Logique de Hoare ----------------------------------------------------------------- Nous obtenons deux cas : Nous obtenons deux cas : que nous fusionnons ensuite : que nous fusionnons ensuite : { F, C } if C then else { Q } 1 2 { F } { Q } 1 1 1 Test vrai ! { F, C } if C then else { Q } 1 2 { F } { Q } 2 2 2 Test faux ! { F, C } ou { F, C } if C then else { Q } 1 2 { F } { Q } 2 2 21 1 1
166
12 décembre 2006Cours d'algorithmique 9 - Intranet166 Logique de Hoare ----------------------------------------------------------------- Un premier exemple : Un premier exemple : if ( a < 0 ) then x <- x + 7 x <- x + 7else x = x – 3 x = x – 3
167
12 décembre 2006Cours d'algorithmique 9 - Intranet167 Logique de Hoare ----------------------------------------------------------------- Un premier exemple : Un premier exemple : POST : POST : if ( a < 0 ) then x <- x + 7 x <- x + 7else x = x – 3 x = x – 3 Q = { x = a + 8 }
168
12 décembre 2006Cours d'algorithmique 9 - Intranet168 Logique de Hoare ----------------------------------------------------------------- Un premier exemple : Un premier exemple : POST : POST : if ( a < 0 ) then x <- x + 7 x <- x + 7else x = x – 3 x = x – 3 Q = { x = a + 8 }
169
12 décembre 2006Cours d'algorithmique 9 - Intranet169 Logique de Hoare ----------------------------------------------------------------- Un premier exemple : Un premier exemple : POST : POST : if ( a < 0 ) then x <- x + 7 x <- x + 7else x = x – 3 x = x – 3 Q = { x = a + 8 } F = { x = a + 11 } 2
170
12 décembre 2006Cours d'algorithmique 9 - Intranet170 Logique de Hoare ----------------------------------------------------------------- Un premier exemple : Un premier exemple : POST : POST : if ( a < 0 ) then x <- x + 7 x <- x + 7else x = x – 3 x = x – 3 Q = { x = a + 8 } F = { x = a + 11 } 2 F = { x = a + 1 } 1
171
12 décembre 2006Cours d'algorithmique 9 - Intranet171 Logique de Hoare ----------------------------------------------------------------- Un premier exemple : Un premier exemple : POST : POST : if ( a < 0 ) then x <- x + 7 x <- x + 7else x = x – 3 x = x – 3 Q = { x = a + 8 } F = { x = a + 11 } 2 F = { x = a + 1 } 1 { x = a + 1, a = 0 }
172
12 décembre 2006Cours d'algorithmique 9 - Intranet172 Logique de Hoare ----------------------------------------------------------------- Un second exemple : Un second exemple : if ( a < 0 ) then x <- -a x <- -aelse x = a x = a
173
12 décembre 2006Cours d'algorithmique 9 - Intranet173 Logique de Hoare ----------------------------------------------------------------- Un second exemple : Un second exemple : POST : POST : if ( a < 0 ) then x <- -a x <- -aelse x = a x = a Q = { x = | a | }
174
12 décembre 2006Cours d'algorithmique 9 - Intranet174 Logique de Hoare ----------------------------------------------------------------- Un second exemple : Un second exemple : POST : POST : if ( a < 0 ) then x <- -a x <- -aelse x = a x = a Q = { x = | a | }
175
12 décembre 2006Cours d'algorithmique 9 - Intranet175 Logique de Hoare ----------------------------------------------------------------- Un second exemple : Un second exemple : POST : POST : if ( a < 0 ) then x <- -a x <- -aelse x = a x = a Q = { x = | a | } F = { a >= 0 } 2
176
12 décembre 2006Cours d'algorithmique 9 - Intranet176 Logique de Hoare ----------------------------------------------------------------- Un second exemple : Un second exemple : POST : POST : if ( a < 0 ) then x <- -a x <- -aelse x = a x = a Q = { x = | a | } F = { a >= 0 } 2 F = { a < 0 } 1
177
12 décembre 2006Cours d'algorithmique 9 - Intranet177 Logique de Hoare ----------------------------------------------------------------- Un second exemple : Un second exemple : POST : POST : if ( a < 0 ) then x <- -a x <- -aelse x = a x = a Q = { x = | a | } F = { a >= 0 } 2 F = { a < 0 } 1 { a = 0 }
178
12 décembre 2006Cours d'algorithmique 9 - Intranet178 Logique de Hoare ----------------------------------------------------------------- Un second exemple : Un second exemple : POST : POST : if ( a < 0 ) then x <- -a x <- -aelse x = a x = a Q = { x = | a | } F = { a >= 0 } 2 F = { a < 0 } 1 { a = 0 } = { VRAI }
179
12 décembre 2006Cours d'algorithmique 9 - Intranet179 Synthèse ----------------------------------------------------------------- Logique de Hoare (début) : Principes et constructions élémentaires.
180
12 décembre 2006Cours d'algorithmique 9 - Intranet180 m E r C i e T b O n N e J o U r N é E ! ! ! n O u B l I e Z p A s D e p R é P a R e R v O s T D ! ! !
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.