Cours : Logique propositionnelle et Hoare
Logique propositionnelle et Logique de Hoare
Section titled “Logique propositionnelle et Logique de Hoare”Fiche de cours - CPGE MP2I (Première année) Professeur Agrégé de Mathématiques et d’Informatique
Introduction
Section titled “Introduction”Ce chapitre jette les bases formelles de la rigueur en informatique. La logique propositionnelle permet de formaliser le raisonnement mathématique et la structure des conditions dans les programmes. La logique de Hoare, introduite par Sir Tony Hoare, fournit quant à elle le cadre formel indispensable pour prouver la correction des programmes impératifs.
I. Logique propositionnelle
Section titled “I. Logique propositionnelle”1. Syntaxe et sémantique
Section titled “1. Syntaxe et sémantique”Une proposition (ou formule) est une assertion qui est soit vraie ( ou ), soit fausse ( ou ).
- Connecteurs fondamentaux : (négation), (conjonction / et), (disjonction / ou), (implication), (équivalence).
- Définition (Implication) : est logiquement équivalent à .
- Tautologie : Une formule est une tautologie si elle est vraie pour toutes les valuations possibles de ses variables (noté ).
2. Équivalences logiques usuelles
Section titled “2. Équivalences logiques usuelles”Soient des propositions.
- Lois de De Morgan :
- Contraposition :
- Distributivité :
3. Formes normales
Section titled “3. Formes normales”- CNF (Forme Normale Conjonctive) : Conjonction () de clauses, une clause étant une disjonction () de littéraux (variables ou leurs négations).
- DNF (Forme Normale Disjonctive) : Disjonction de conjonctions de littéraux.
- Propriété fondamentale : Toute formule propositionnelle est logiquement équivalente à une CNF et à une DNF.
II. Logique de Hoare
Section titled “II. Logique de Hoare”La logique de Hoare permet de raisonner sur la correction des programmes impératifs.
1. Le Triplet de Hoare
Section titled “1. Le Triplet de Hoare”Un triplet de Hoare est un énoncé de la forme :
- : Précondition (assertion vraie avant l’exécution du commande ).
- : Commande (instruction ou bloc d’instructions).
- : Postcondition (assertion garantie vraie après l’exécution de , si se termine).
Correction partielle vs Correction totale
Section titled “Correction partielle vs Correction totale”- Correction partielle : Si est valide, alors si l’exécution de partant d’un état satisfaisant se termine, l’état final satisfait .
- Correction totale : Correction partielle + garantie de terminaison de .
2. Règles d’inférence de Hoare (Correction partielle)
Section titled “2. Règles d’inférence de Hoare (Correction partielle)”Règle de l’affectation (Assignment)
Section titled “Règle de l’affectation (Assignment)”Pour une variable et une expression : (Où désigne la substitution dans de toutes les occurrences libres de par ).
Règle de la séquence
Section titled “Règle de la séquence”Pour deux commandes et :
Règle de l’alternative (If-Then-Else)
Section titled “Règle de l’alternative (If-Then-Else)”
Règle de la conséquence (Consequence)
Section titled “Règle de la conséquence (Consequence)”Permet de renforcer la précondition ou d’affaiblir la postcondition :
3. La boucle While et l’Invariant
Section titled “3. La boucle While et l’Invariant”Prouver une boucle nécessite de trouver un invariant de boucle .
- Invariant () : Propriété vraie avant et après chaque itération.
- Variant () : Expression entière strictement décroissante garantissant la terminaison (pour la correction totale).
Règle de Hoare pour le While
Section titled “Règle de Hoare pour le While”
Méthodologie de preuve d’une boucle :
- Initialisation : Prouver que l’invariant est établi avant la boucle ().
- Conservation : Prouver que l’invariant est préservé par le corps de la boucle ().
- Terminaison : Prouver que le variant décroit strictement et est minoré (pour la correction totale).
- Finalisation : Montrer qu’à la sortie, l’invariant couplé à la négation de la garde implique la postcondition ().
III. Exemple type : Preuve d’un programme
Section titled “III. Exemple type : Preuve d’un programme”Soit le programme calculant la somme des entiers de à ():
s := 0;i := 0;while i < n do s := s + i; i := i + 1;doneTriplet à prouver :
- Invariant choisi : .
- Variant choisi : .
La vérification formelle de ce type de programme par application rigoureuse des règles de Hoare constitue un attendu majeur des épreuves en MP2I.