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

Slides:



Advertisements
Présentations similaires
Présentation générale Marc Gengler
Advertisements

Algorithmes et structures de données avancées Cours 7
Algorithmes et structures de données avancés
Spécification et qualité du logiciel
Calculs de complexité d'algorithmes
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d’Algorithmique
Problème des 4 couleurs, graphes planaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.
Cours d’Algorithmique
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
21 septembre 2007Cours de compilation 2 - Intranet1 Cours de compilation Evaluation partielle etcompilation.
Analyse syntaxique (intro)
Cours d'algorithmique 8 - Intranet 1 4 décembre 2006 Cours dAlgorithmique Dérécursion (fin) : Équivalences entre programmes récursifs et programmes itératifs.
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Cours d’Algorithmique
Séminaire Biblio LISC - 3/04/02 Complexité, information Daprès JP Delahaye (1999)
La voie intuitionniste
Logique et raisonnement scientifique cours transversal Collège Doctoral Pr. Alain Lecomte.
Cours d’Algorithmique
Cours d'algorithmique 2 - Intranet 1 8 novembre 2006 Cours dAlgorithmique Listes, piles et files. Arbres. Types de données abstraits. Implantations.
Cours d’Algorithmique
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Calcul et programmation au lycée avec Scilab
Cours d’Algorithmique
Algorithmique et structure de données
Les algorithmes: complexité et notation asymptotique
Programmation logique Logique des prédicats du premier ordre
Sémantique axiomatique
Problème des 4 couleurs, graphes planaires.
Quelques applications.
Quelques graphes particuliers.
Calcul Relationnel Chapitre 4, Section 4.3.
Programmation logique Démonstrateur automatique
Cours de graphes Les arbres et arborescences.
16 mars 2007Cours de graphes 7 - Intranet1 Cours de graphes Problèmes NP-complets. Réductions polynômiales.
Rappels de logique des prédicats du 1er ordre
IFT Complexité et NP-complétude
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
Partie II Sémantique.
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Cours de graphes 6 - Intranet
23 février 2007Cours de graphes 4 - Intranet1 Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut. Algos de Ford-Fulkerson et Edmonds-Karp.
Programmation non procédurale Le projet ECOLE 2000
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Programmation procédurale Transformations
Paradigmes des Langages de Programmation
INTRODUCTION.
Cours n°2UE102e(S. Sidhom) UE 102e. M1.IST-IE cours n°2 Systèmes à base de règles Par : Sahbi SIDHOM MCF. Université Nancy 2 Équipe de recherche SITE –
Test d'hypothèse pour des proportions:
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.
Programmation linéaire en nombres entiers
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
LOGIQUE ET PROGRAMMATION LOGIQUE
1 Spécifications de Problèmes. 2 Plan Définition Motivation Qualités attendues Types de formalismes Rappels du cours de programmation Spécifications structurées.
Relation de conséquence logique Nous avons vu une relation entre formules: l’équivalence tautologique (  ) Nous allons définir une nouvelle relation,
Transcription de la présentation:

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

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

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 ! Objectif : Objectif : – Raisonnement formel sur la correction dun programme ! Cadre : Cadre : – Spécifications formelles. – Génie logiciel.

12 décembre 2006Cours d'algorithmique 9 - Intranet4 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 » !

12 décembre 2006Cours d'algorithmique 9 - Intranet5 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 décembre 2006Cours d'algorithmique 9 - Intranet6 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.

12 décembre 2006Cours d'algorithmique 9 - Intranet7 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

12 décembre 2006Cours d'algorithmique 9 - Intranet8 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 ? ? ? ? ?

12 décembre 2006Cours d'algorithmique 9 - Intranet9 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 » !

12 décembre 2006Cours d'algorithmique 9 - Intranet10 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 » !

12 décembre 2006Cours d'algorithmique 9 - Intranet11 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.

12 décembre 2006Cours d'algorithmique 9 - Intranet12 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 ».

12 décembre 2006Cours d'algorithmique 9 - Intranet13 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 !

12 décembre 2006Cours d'algorithmique 9 - Intranet14 Logique de Hoare Graphiquement : Graphiquement : { PRE } programme { POST } { PRE } programme { POST } programme PRE POST PRE => PRE PRE POST => POST

12 décembre 2006Cours d'algorithmique 9 - Intranet15 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

12 décembre 2006Cours d'algorithmique 9 - Intranet16 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 !

12 décembre 2006Cours d'algorithmique 9 - Intranet17 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

12 décembre 2006Cours d'algorithmique 9 - Intranet18 Logique de Hoare C O N C R E T E M E N T...

12 décembre 2006Cours d'algorithmique 9 - Intranet19 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 !

12 décembre 2006Cours d'algorithmique 9 - Intranet20 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

12 décembre 2006Cours d'algorithmique 9 - Intranet21 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

12 décembre 2006Cours d'algorithmique 9 - Intranet22 Logique de Hoare Règle pour le programme skip : Règle pour le programme skip : { P } skip { P }

12 décembre 2006Cours d'algorithmique 9 - Intranet23 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

12 décembre 2006Cours d'algorithmique 9 - Intranet24 2 Logique de Hoare { P } { L } { Q } { R } 12 L => Q Q R 1 P L

12 décembre 2006Cours d'algorithmique 9 - Intranet25 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet26 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet27 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 !

12 décembre 2006Cours d'algorithmique 9 - Intranet28 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.

12 décembre 2006Cours d'algorithmique 9 - Intranet29 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

12 décembre 2006Cours d'algorithmique 9 - Intranet30 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet31 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet32 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet33 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet34 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet35 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

12 décembre 2006Cours d'algorithmique 9 - Intranet36 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

12 décembre 2006Cours d'algorithmique 9 - Intranet37 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

12 décembre 2006Cours d'algorithmique 9 - Intranet38 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet39 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

12 décembre 2006Cours d'algorithmique 9 - Intranet40 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 }

12 décembre 2006Cours d'algorithmique 9 - Intranet41 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

12 décembre 2006Cours d'algorithmique 9 - Intranet42 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 }