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

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

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

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

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

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 !

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 !

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 !

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 }

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

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 : { ( ( ) * y mod ( 1 + ( ) ) ) } x < - … { ??? }

107 12 décembre 2006Cours d'algorithmique 9 - Intranet107 Logique de Hoare Illustration : Illustration : { ( ( ) * y mod ( 1 + ( ) ) ) } x < - … { ??? }

108 12 décembre 2006Cours d'algorithmique 9 - Intranet108 Logique de Hoare Illustration : Illustration : { ( ( ) * y mod ( 1 + ( ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - … { ??? }

109 12 décembre 2006Cours d'algorithmique 9 - Intranet109 Logique de Hoare Illustration : Illustration : { ( ( ) * y mod ( 1 + ( ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - ( ) { ??? }

110 12 décembre 2006Cours d'algorithmique 9 - Intranet110 Logique de Hoare Illustration : Illustration : { ( ( ) * y mod ( 1 + ( ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - ( ) { ??? } P

111 12 décembre 2006Cours d'algorithmique 9 - Intranet111 Logique de Hoare Illustration : Illustration : { ( ( ) * y mod ( 1 + ( ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - ( ) { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - ( ) { P } P

112 12 décembre 2006Cours d'algorithmique 9 - Intranet112 Logique de Hoare Illustration : Illustration : { ( ( ) * y mod ( 1 + ( ) ) ) } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - … { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - ( ) { ??? } { ( x * y mod ( 1 + x ) )[ x < - ( ) ] } x < - ( ) { P } { P[ x < - ( ) ] } x < - ( ) { 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 } { 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 } { P, T } { Q } 1 { ???, C } { Q } { ??? } if C then else { Q } { ???, 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 }

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 } P, C => F

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 } P, C => F

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 } P, C => F

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 } 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 } Test vrai ! { F, C } if C then else { Q } 1 2 { F } { Q } 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 } Test vrai ! { F, C } if C then else { Q } 1 2 { F } { Q } Test faux ! { F, C } ou { F, C } if C then else { Q } 1 2 { F } { Q }

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