Adloun

Logique propositionnelle

Cours · informatique (MP2I/MPI), chapitre 20 · MP2I et MPI · le début du chapitre, la suite sur Adloun

La logique propositionnelle : la table de vérité de la conjonction, de la disjonction et de l'implication.

20.1 Séparer ce qu'on écrit de ce que cela veut dire

Le programme assigne à ce chapitre un objectif qu'il faut prendre au mot : « familiariser progressivement les étudiants avec la différence entre syntaxe et sémantique ». Cette distinction est l'une des plus fécondes de l'informatique, et elle sera reprise telle quelle au chapitre chap:automates — où une expression régulière (syntaxe) dénotera un langage (sémantique) — et au chapitre chap:deduction, où l'on opposera à .

SyntaxeSémantique
Ce que c'estune suite de symbolesune valeur de vérité
Ce qu'on manipuleun arbreune fonction des valuations
Deux formules égales simêmes arbresmêmes tables de vérité

Le second usage de ce chapitre est plus concret : le programme veut « donner le vocabulaire permettant de modéliser une grande variété de situations (satisfaction de contraintes, planification, diagnostic, vérification de modèles) ». Une formule logique est un format d'entrée universel — et sat, le problème de sa satisfiabilité, sera au cœur du chapitre chap:decidabilite.

20.2 Syntaxe

Définition 20.1Formule propositionnelle

On se donne un ensemble de variables propositionnelles L'ensemble des formules est le plus petit ensemble tel que :

et de même pour . Les notations sont celles que le programme fixe : . L'arité d'un connecteur est son nombre d'arguments : pour , pour les autres.

ImportantUne formule est une donnée informatique, et c'est un arbre

Le programme est explicite deux fois : « les formules sont des données informatiques », et « on implémente uniquement les formules propositionnelles sous forme d'arbres ».


type formule =
  | Var of string
  | Non of formule
  | Et of formule * formule
  | Ou of formule * formule
  | Implique of formule * formule

C'est le type inductif du chapitre chap:induction, et tout ce qui y a été démontré s'applique : les fonctions sur les formules terminent par l'ordre induit, et se prouvent par induction structurelle. Rien n'est à réapprendre.

Définition 20.2Sous-formule, taille, hauteur

Les sous-formules de sont elle-même et, récursivement, celles de ses arguments — ce sont exactement les sous-arbres. La taille est le nombre de nœuds, la hauteur celle de l'arbre.


let rec taille = function
  | Var _ -> 1
  | Non f -> 1 + taille f
  | Et (a, b) | Ou (a, b) | Implique (a, b) -> 1 + taille a + taille b
iRemarqueLe parenthésage n'est pas dans l'arbre

Écrire est ambigu ; l'arbre, lui, ne l'est jamais. Les parenthèses ne servent qu'à écrire une formule en une ligne — et le programme demande de « faire le lien entre les écritures d'une formule comme mot et les parcours d'arbres » : l'écriture infixe parenthésée est le parcours infixe, la notation polonaise le parcours préfixe. C'est exactement le chapitre chap:arbres, et l'analyse syntaxique du chapitre chap:grammaires fera le trajet inverse.

20.2.1 Quantificateurs, variables libres et liées

Définition 20.3Portée, variables libres et liées

Les quantificateurs et introduisent une notion de portée : dans , la portée de est . Une occurrence de dans cette portée est liée ; une occurrence hors de toute portée d'un quantificateur sur est libre.

ImportantC'est exactement la portée des variables d'un programme

Le programme le dit : ce sont des « notions que l'on retrouve dans la pratique de la programmation ». Dans let f x = x + a, le est lié par fun, le est libre et va chercher sa valeur ailleurs. Renommer un lié ne change rien ; renommer un libre change tout. C'est le même phénomène, et le même piège.

iRemarqueCe que le programme écarte

« On ne soulève aucune difficulté technique sur la substitution. L'unification est hors programme. » Et la sémantique n'est présentée que pour des formules sans quantificateurs — « par souci d'éviter trop de technicité ». Les quantificateurs reviendront au chapitre chap:deduction, par leurs règles d'inférence seulement.

Exercices du chapitre

La suite du cours · Tous les exercices du chapitre