Aller au contenu
Topos Uranos

Résumé

La sémantique avait promis des méthodes pour décider l’insatisfaisabilité qui ne parcourent pas la table de vérité ; cette leçon livre la principale d’entre elles. On écrit un ensemble de formules comme un ensemble de clauses, chacune étant un ensemble fini de littéraux, au moyen de la forme normale conjonctive ou, pour éviter sa croissance exponentielle, au moyen de clauses de définition avec des variables nouvelles, qui conservent la satisfaisabilité. Une seule règle agit sur les clauses, celle de résolution : d’une clause qui contient un littéral et d’une autre qui contient son opposé, on infère la réunion des deux sans cette paire. Une réfutation est une dérivation qui aboutit à la clause vide. On démontre la correction (s’il y a une réfutation, l’ensemble est insatisfaisable), par récurrence sur la longueur de la dérivation, et la complétude pour la réfutation (si un ensemble fini est insatisfaisable, il y a une réfutation), par récurrence sur le nombre de variables, en les éliminant une à une ; avec le théorème de compacité, la complétude s’étend aux ensembles infinis. Il en résulte une méthode pour décider les conséquences, que l’on compare avec les tables, et une présentation du problème de la satisfaisabilité, avec deux cas qui se décident rapidement : les clauses de Horn et les clauses à deux littéraux.

Objectifs d’apprentissage

  1. Représenter un ensemble de formules comme un ensemble de clauses, au moyen de la forme normale conjonctive ou de clauses de définition avec des variables nouvelles, et justifier que la représentation conserve la satisfaisabilité et la conséquence.
  2. Construire des réfutations par résolution et décider avec elles des conséquences et l’insatisfaisabilité, sans tomber dans les erreurs typiques, comme éliminer deux paires complémentaires en un seul pas.
  3. Démontrer la correction de la résolution par récurrence sur la longueur des dérivations et sa complétude pour la réfutation par élimination des variables, et l’étendre aux ensembles infinis avec le théorème de compacité.
  4. Expliquer le problème de la satisfaisabilité, son coût connu et les cas qui se décident rapidement (clauses de Horn et clauses à deux littéraux), et comparer la résolution avec les tables de vérité.

La leçon sur la sémantique de la logique propositionnelle a montré que la validité et la satisfaisabilité sont décidables par la table de vérité, à un coût qui double avec chaque variable, et a annoncé des méthodes qui n’exigeraient pas de la parcourir. La leçon sur la conséquence et l’équivalence sémantiques a ramené toute conséquence à une insatisfaisabilité : Γ⊨φ\Gamma \models \varphi si et seulement si Γ∪{¬φ}\Gamma \cup \{\neg\varphi\} est insatisfaisable. Les leçons sur les formes normales et sur leur algorithme ont donné à toute formule une forme conjonctive, dont la validité se voit au premier coup d’œil, mais dont la satisfaisabilité ne se voit pas. S’il en est ainsi, il manque une procédure qui décide l’insatisfaisabilité d’une conjonction de clauses en opérant sur les clauses elles-mêmes. Cette procédure est la résolution, proposée par John Alan Robinson en 1965 à partir d’idées de Martin Davis et Hilary Putnam (1960) ; c’est le cœur des programmes qui décident aujourd’hui la satisfaisabilité de formules à des millions de variables. À la différence du système de l’unité de déduction, dont les relations avec la sémantique sont étudiées dans les leçons sur la correction et la complétude et sur le théorème de compacité, la résolution ne déduit pas de conclusions : elle réfute des ensembles. Cette leçon démontre qu’elle le fait de façon correcte et complète.

Comme dans les leçons précédentes, pp, qq, rr, ss et tt nomment les variables v1v_1 à v5v_5 ; la lettre vv sans indice, ainsi que ww, désignent des valuations ; et V(φ)V(\varphi) est l’ensemble des variables de φ\varphi.

Clauses et ensembles de clauses

Rappelons, d’après la leçon sur les formes normales, qu’un littéral est une variable ou la négation d’une variable, et que l’opposé d’un littéral ℓ\ell, noté ℓ∗\ell^{*}, est le littéral de la même variable et de l’autre signe ; deux littéraux opposés forment une paire complémentaire. Par le lemme de la négation d’un littéral, v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) pour toute valuation vv. Là, une clause était une disjonction de littéraux ; ici, il convient d’oublier l’ordre et les répétitions, qui n’altèrent pas la valeur, et de ne garder que l’ensemble.

Une clause est un ensemble fini de littéraux. La clause sans littéraux s’appelle la clause vide et se note □\Box. Une valuation vv satisfait une clause CC, ce que l’on note v⊨Cv \models C, si un littéral de CC vaut 11 sous vv ; dans le cas contraire, vv la réfute. Une clause d’un seul littéral est dite unitaire. Les variables d’une clause forment l’ensemble V(C)V(C) ; celles d’un ensemble SS de clauses, l’ensemble V(S)V(S), réunion des précédents. Une valuation satisfait un ensemble SS de clauses, v⊨Sv \models S, si elle satisfait chacune de ses clauses ; SS est satisfaisable si une valuation le satisfait, et insatisfaisable dans le cas contraire. Enfin, si SS est un ensemble de clauses et CC une clause, S⊨CS \models C signifie que toute valuation qui satisfait SS satisfait CC.

v⊨C  ⇔  (∃ℓ∈C)  v(ℓ)=1,v⊨S  ⇔  (∀C∈S)  v⊨Cv \models C \;\Leftrightarrow\; (\exists \ell \in C)\; v(\ell) = 1, \qquad v \models S \;\Leftrightarrow\; (\forall C \in S)\; v \models C

Deux cas extrêmes découlent de la définition, et il convient de les fixer. La clause vide n’a pas de littéraux ; par conséquent, aucun de ses littéraux ne vaut 11, et aucune valuation ne la satisfait : □\Box est insatisfaisable, et tout ensemble qui la contient l’est aussi. L’ensemble vide de clauses, en revanche, n’a aucune clause à satisfaire, et toute valuation le satisfait. Il ne faut pas les confondre : {□}\{\Box\} est insatisfaisable et ∅\emptyset est satisfait par toutes les valuations.

LemmeLa clause et sa disjonction

Soit C={ℓ1,…,ℓk}C = \{\ell_1, \ldots, \ell_k\} une clause non vide, avec ses littéraux écrits dans un ordre quelconque et sans répétition. Pour toute valuation vv, v⊨Cv \models C si et seulement si v(⋁j=1kℓj)=1v\left( \bigvee_{j=1}^{k} \ell_j \right) = 1. En particulier, toutes les disjonctions des littéraux de CC, dans un ordre quelconque et avec répétitions, sont équivalentes entre elles. De plus, CC est satisfaite par toute valuation si et seulement si elle contient une paire complémentaire.

Démonstration

  1. v(⋁j=1kℓj)=1  ⇔  (∃j≤k)  v(ℓj)=1v\left( \bigvee_{j=1}^{k} \ell_j \right) = 1 \;\Leftrightarrow\; (\exists j \leq k)\; v(\ell_j) = 1

    Par le lemme de la valeur des disjonctions de nn formules, démontré dans la leçon sur les lois généralisées de De Morgan et de distributivité, la disjonction vaut 11 si et seulement si l’un de ses termes vaut 11.

  2. v(⋁j=1kℓj)=1  ⇔  v⊨Cv\left( \bigvee_{j=1}^{k} \ell_j \right) = 1 \;\Leftrightarrow\; \resaltar{v \models C}

    Qu’un ℓj\ell_j vaille 11, c’est qu’un littéral de CC vaille 11, c’est-à-dire que vv satisfasse CC. La condition ne dépend ni de l’ordre ni des répétitions, car elle demande seulement quels littéraux sont présents.

  3. (∀v)  v⊨C  ⇔  (∃ℓ)  ℓ∈C,  ℓ∗∈C(\forall v)\; v \models C \;\Leftrightarrow\; (\exists \ell)\; \ell \in C, \; \ell^{*} \in C

    Par le lemme des conjonctions élémentaires et des clauses (leçon sur les formes normales), une disjonction de littéraux est valide si et seulement si elle contient une paire complémentaire ; d’après ce qui précède, il en va de même pour CC.

Une clause qui contient une paire complémentaire est dite tautologique : elle n’impose aucune condition, et on peut la retirer de n’importe quel ensemble sans en altérer les modèles. Écrire les clauses comme des ensembles n’est pas un caprice de notation. Si de (p∨q)(p \vee q) et (p∨¬q)(p \vee \neg q) on veut obtenir pp, la disjonction donne (p∨p)(p \vee p), qui équivaut à pp mais n’est pas la même formule ; avec des ensembles, {p}∪{p}={p}\{p\} \cup \{p\} = \{p\}, et la fusion des littéraux répétés se fait d’elle-même.

ExempleSatisfaire un ensemble de clauses

Soit S={{p,q},{¬p,r},{¬q}}S = \{ \{p, q\}, \{\neg p, r\}, \{\neg q\} \}. La clause {¬q}\{\neg q\} exige v(q)=0v(q) = 0 ; alors {p,q}\{p, q\} exige v(p)=1v(p) = 1, et alors {¬p,r}\{\neg p, r\} exige v(r)=1v(r) = 1. La valuation qui donne 11 à pp et à rr et 00 aux autres variables satisfait SS, et c’est la seule possibilité sur V(S)={p,q,r}V(S) = \{p, q, r\}. Si l’on ajoute la clause {¬r}\{\neg r\}, aucune valuation ne satisfait l’ensemble élargi : il est insatisfaisable, bien qu’il ne contienne pas □\Box.

v(q)=0  ⇒  v(p)=1  ⇒  v(r)=1v(q) = 0 \;\Rightarrow\; v(p) = 1 \;\Rightarrow\; v(r) = 1