La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires."— Transcription de la présentation:

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


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

Présentations similaires


Annonces Google