Aller au contenu
Topos Uranos

Résumé

Une même fonction de vérité admet une infinité de formules qui la représentent, et aucune d’elles, prise au hasard, ne laisse voir ce qu’elle dit. Cette leçon fixe deux moules dans lesquels toute formule entre à équivalence près : la forme normale disjonctive, une disjonction de conjonctions de littéraux, et la forme normale conjonctive, une conjonction de disjonctions de littéraux. On définit les littéraux, les clauses et les conjonctions élémentaires ; on démontre que la négation transforme une forme en l’autre lorsqu’on change chaque littéral en son opposé, ce qui est la dualité entre les deux ; on construit à partir de la table de vérité les formes canoniques et l’on démontre qu’elles sont uniques. Le théorème d’existence reçoit deux démonstrations : par la table, comme corollaire de la complétude fonctionnelle, et par induction sur la complexité, avec le seul cas de la négation conjointe et avec l’hypothèse double que cette démonstration exige. À la fin, on voit pourquoi elles valent l’effort : la validité d’une forme conjonctive et la satisfaisabilité d’une forme disjonctive se décident d’un coup d’œil.

Objectifs d’apprentissage

  1. Reconnaître les littéraux, les clauses, les conjonctions élémentaires et les formules en forme normale disjonctive ou conjonctive, en distinguant la forme, qui est une propriété de la chaîne, de l’équivalence, qui est une propriété du sens.
  2. Construire à partir de la table de vérité les formes canoniques disjonctive et conjonctive d’une formule, et démontrer que la forme canonique est unique et qu’elle détermine la classe d’équivalence de la formule.
  3. Démontrer par induction sur la complexité que toute formule équivaut à une forme normale disjonctive et à une forme conjonctive, en utilisant la dualité, les lois généralisées de De Morgan et de distributivité et le remplacement sémantique.
  4. Décider d’un coup d’œil la validité d’une forme normale conjonctive et la satisfaisabilité d’une forme disjonctive, et appliquer les formes normales à la conséquence sémantique et à la mesure de la taille minimale d’une forme normale.

Dans les leçons précédentes de cette unité, on a donné un sens aux formules : la leçon sur la sémantique de la logique propositionnelle a prolongé chaque valuation à toutes les formules ; la leçon sur la conséquence et l’équivalence sémantiques a défini l’équivalence φ≡ψ\varphi \eqsem \psi et démontré le remplacement sémantique ; la leçon sur les lois généralisées de De Morgan et de distributivité a étendu ces lois aux conjonctions et aux disjonctions de nn formules ; et la leçon sur la complétude fonctionnelle a montré que toute fonction de vérité est représentée par une formule. Or une fonction de vérité est représentée par une infinité de formules, qui peuvent être très différentes les unes des autres : (v1→v2)(v_1 \rightarrow v_2), ¬(v1∧¬v2)\neg(v_1 \wedge \neg v_2) et (((v1↓v1)↓v2)↓((v1↓v1)↓v2))(((v_1 \downarrow v_1) \downarrow v_2) \downarrow ((v_1 \downarrow v_1) \downarrow v_2)) sont trois noms de la même chose. S’il en est ainsi, il convient de choisir dans chaque classe d’équivalence un représentant de forme fixe, qui se lise sans effort et avec lequel certaines questions se résolvent en regardant. Voilà ce que sont les formes normales.

Littéraux, clauses et formes normales

Rappelons, de la leçon sur les lois généralisées, la notation de la conjonction et de la disjonction de nn formules, définie par récurrence et en associant à gauche ; celle d’une seule formule est la formule elle-même.

⋀i=11φi=φ1,⋀i=1n+1φi=(⋀i=1nφi∧φn+1)\bigwedge_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigwedge_{i=1}^{n + 1} \varphi_i = \left( \bigwedge_{i=1}^{n} \varphi_i \wedge \varphi_{n + 1} \right)
⋁i=11φi=φ1,⋁i=1n+1φi=(⋁i=1nφi∨φn+1)\bigvee_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigvee_{i=1}^{n + 1} \varphi_i = \left( \bigvee_{i=1}^{n} \varphi_i \vee \varphi_{n + 1} \right)

Dans la même leçon, on a démontré que l’ordre et le regroupement des termes n’altèrent pas la formule à équivalence près (associativité généralisée et indépendance de l’ordre et des répétitions) ; c’est pourquoi nous écrirons aussi φ1∧φ2∧⋯∧φn\varphi_1 \wedge \varphi_2 \wedge \cdots \wedge \varphi_n sans parenthèses, le regroupement étant entendu à gauche.

Un littéral est une variable vnv_n, que l’on appelle littéral positif, ou la négation ¬vn\neg v_n d’une variable, que l’on appelle littéral négatif. L’opposé d’un littéral ℓ\ell, que nous notons ℓ∗\ell^{*}, est le littéral de la même variable et de l’autre signe :

ℓ=vn  ⇒  ℓ∗=¬vn,ℓ=¬vn  ⇒  ℓ∗=vn\ell = v_n \;\Rightarrow\; \ell^{*} = \neg v_n, \qquad \ell = \neg v_n \;\Rightarrow\; \ell^{*} = v_n

Il découle de la définition que (ℓ∗)∗=ℓ(\ell^{*})^{*} = \ell. Deux littéraux forment une paire complémentaire si l’un est l’opposé de l’autre, comme v3v_3 et ¬v3\neg v_3.

Une clause est une disjonction de littéraux, ⋁j=1kℓj\bigvee_{j=1}^{k} \ell_j, et une conjonction élémentaire est une conjonction de littéraux, ⋀j=1kℓj\bigwedge_{j=1}^{k} \ell_j, avec k≥1k \geq 1 dans les deux cas ; un littéral seul est donc à la fois une clause et une conjonction élémentaire. On dit qu’un littéral figure dans une clause ou dans une conjonction élémentaire s’il est l’un de ses ℓj\ell_j.

Une formule est en forme normale disjonctive si elle est une disjonction de conjonctions élémentaires, et en forme normale conjonctive si elle est une conjonction de clauses ; c’est-à-dire si elle est, respectivement, de l’une des deux formes suivantes, où mm et k1,…,kmk_1, \ldots, k_m sont des entiers naturels et chaque ℓi,j\ell_{i,j} est un littéral :

⋁i=1m⋀j=1kiℓi,j,⋀i=1m⋁j=1kiℓi,j\bigvee_{i=1}^{m} \bigwedge_{j=1}^{k_i} \ell_{i,j}, \qquad \bigwedge_{i=1}^{m} \bigvee_{j=1}^{k_i} \ell_{i,j}

Nous dirons que Φ\Phi est une forme normale disjonctive de φ\varphi si elle est en forme normale disjonctive et φ≡Φ\varphi \eqsem \Phi, et de même pour la conjonctive. Les longueurs kik_i peuvent varier d’une conjonction (ou d’une clause) à l’autre : exiger le même nombre de littéraux dans toutes obligerait à compléter par des répétitions et n’ajouterait rien.

ExempleCe qui est et ce qui n’est pas en forme normale

La formule (v1∧¬v2)∨¬v3(v_1 \wedge \neg v_2) \vee \neg v_3 est en forme normale disjonctive, avec m=2m = 2, k1=2k_1 = 2 et k2=1k_2 = 1 ; elle n’est pas en forme conjonctive, parce qu’elle n’est pas une conjonction (ses deux composantes sont distinctes, et une conjonction est une double négation), et ce n’est pas non plus une clause : lue comme disjonction, elle a un terme, (v1∧¬v2)(v_1 \wedge \neg v_2), qui n’est ni un littéral ni une disjonction de littéraux. La formule v1∧¬v2∧v3v_1 \wedge \neg v_2 \wedge v_3 est sous les deux formes : comme disjonction d’une seule conjonction élémentaire (m=1m = 1) et comme conjonction de trois clauses d’un littéral chacune. De même, (¬v1∨v2)(\neg v_1 \vee v_2) est à la fois une clause, c’est-à-dire une forme conjonctive avec m=1m = 1, et une forme disjonctive de deux conjonctions d’un littéral.

(v1∧¬v2)∨¬v3,v1∧¬v2∧v3,¬v1∨v2(v_1 \wedge \neg v_2) \vee \neg v_3, \qquad v_1 \wedge \neg v_2 \wedge v_3, \qquad \neg v_1 \vee v_2

En revanche, (v1↓v2)(v_1 \downarrow v_2) et ¬(v1→v2)\neg(v_1 \rightarrow v_2) ne sont sous aucune des deux formes, bien que la première équivaille à (¬v1∧¬v2)(\neg v_1 \wedge \neg v_2) et la seconde à (v1∧¬v2)(v_1 \wedge \neg v_2), qui le sont.

(v1↓v2)≡¬v1∧¬v2,¬(v1→v2)≡v1∧¬v2(v_1 \downarrow v_2) \eqsem \neg v_1 \wedge \neg v_2, \qquad \neg(v_1 \rightarrow v_2) \eqsem v_1 \wedge \neg v_2

Il convient de s’arrêter sur ce que signifie « être en forme normale ». C’est une propriété de la chaîne de cercles et de disques, non de son sens : la leçon sur la récurrence sur les entiers et l’induction sur les formules a démontré la lecture unique, de sorte que demander si une formule est une disjonction, et de quoi, n’a qu’une réponse. Or les abréviations officielles font que certaines formules sont en forme normale sans le paraître. L’implication (v1→v2)(v_1 \rightarrow v_2) est définie comme (¬v1∨v2)(\neg v_1 \vee v_2) : ce n’est pas qu’elle équivaut à cette clause, c’est qu’elle est cette chaîne même, et elle est donc déjà en forme normale. Plus surprenante est la double négation. Par les définitions de ¬\neg et de ∨\vee, la chaîne (φ∨φ)(\varphi \vee \varphi) est ¬(φ↓φ)\neg(\varphi \downarrow \varphi), c’est-à-dire ¬¬φ\neg\neg\varphi ; d’où ¬¬v1\neg\neg v_1 n’est pas un littéral, mais est, symbole par symbole, la clause (v1∨v1)(v_1 \vee v_1).

(φ∨φ)=¬(φ↓φ)=¬¬φ(\varphi \vee \varphi) = \neg(\varphi \downarrow \varphi) = \neg\neg\varphi

La valeur des conjonctions et des disjonctions

De la leçon sur la sémantique, on reprend les valeurs des connecteurs dérivés : v(¬φ)=1−v(φ)v(\neg\varphi) = 1 - v(\varphi) ; v(φ∧ψ)=v(φ) v(ψ)v(\varphi \wedge \psi) = v(\varphi)\,v(\psi), qui vaut 11 si et seulement si les deux valent 11 ; et v(φ∨ψ)=0v(\varphi \vee \psi) = 0 si et seulement si les deux valent 00. La leçon sur les lois généralisées de De Morgan et de distributivité les a étendues à nn formules, par récurrence sur le nombre de termes, dans le lemme de la valeur : pour toute valuation vv, la conjonction ⋀i=1nφi\bigwedge_{i=1}^{n} \varphi_i vaut 11 sous vv si et seulement si chaque φi\varphi_i vaut 11 sous vv, et la disjonction ⋁i=1nφi\bigvee_{i=1}^{n} \varphi_i vaut 11 sous vv si et seulement si l’une des φi\varphi_i vaut 11 sous vv. Ce lemme, que l’on cite ici sans en répéter la démonstration, est l’instrument avec lequel on calcule la valeur de n’importe quelle forme normale.

LemmeNégation d’un littéral

Pour tout littéral ℓ\ell, la négation de ℓ\ell équivaut à son opposé, ¬ℓ≡ℓ∗\neg\ell \eqsem \ell^{*} ; en particulier, v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) pour toute valuation vv.

Démonstration

  1. ℓ=vn  ⇒  ¬ℓ=¬vn=ℓ∗\ell = v_n \;\Rightarrow\; \neg\ell = \neg v_n = \ell^{*}

    Si ℓ\ell est une variable vnv_n, son opposé est ¬vn\neg v_n, qui est exactement la chaîne ¬ℓ\neg\ell : il n’y a rien à démontrer.

  2. ℓ=¬vn  ⇒  ¬ℓ=¬¬vn≡vn=ℓ∗\ell = \neg v_n \;\Rightarrow\; \neg\ell = \resaltar{\neg\neg v_n} \eqsem v_n = \ell^{*}

    Si ℓ\ell est ¬vn\neg v_n, sa négation est ¬¬vn\neg\neg v_n, qui n’est pas un littéral ; par la loi de la double négation (leçon sur la conséquence et l’équivalence sémantiques), elle équivaut à vnv_n, qui est l’opposé de ℓ\ell.

  3. v(ℓ∗)=v(¬ℓ)=1−v(ℓ)v(\ell^{*}) = v(\neg\ell) = 1 - v(\ell)

    Dans les deux cas, ℓ∗\ell^{*} et ¬ℓ\neg\ell ont la même valeur dans toute valuation, et celle de ¬ℓ\neg\ell est donnée par la valeur de la négation.

Le second cas passe facilement inaperçu : en niant une forme normale, on a tendance à écrire ¬ℓi,j\neg\ell_{i,j} au lieu d’un littéral, et ¬¬vn\neg\neg v_n n’en est pas un. C’est la double négation qui ramène le résultat dans le moule.

LemmeConjonctions élémentaires et clauses

Une conjonction élémentaire est satisfaisable si et seulement si elle ne contient aucune paire complémentaire. Une clause est valide si et seulement si elle contient une paire complémentaire.

Démonstration

  1. v(ℓ) v(ℓ∗)=v(ℓ) (1−v(ℓ))=0v(\ell)\,v(\ell^{*}) = v(\ell)\,(1 - v(\ell)) = 0

    Si une conjonction élémentaire contient ℓ\ell et ℓ∗\ell^{*}, dans toute valuation l’un des deux vaut 00, par le lemme précédent ; par le lemme de la valeur, la conjonction vaut 00 dans toute valuation.

  2. vn=ℓj  ⇒  v(vn)=1,¬vn=ℓj  ⇒  v(vn)=0\dato{val}{v_n = \ell_j \;\Rightarrow\; v(v_n) = 1, \qquad \neg v_n = \ell_j \;\Rightarrow\; v(v_n) = 0}

    Si elle ne contient aucune paire complémentaire, on définit une valuation qui donne 11 à chaque variable qui y figure comme littéral positif et 00 à chaque variable qui y figure comme littéral négatif (aux autres, 00). La définition n’est pas contradictoire, parce qu’aucune variable n’y figure des deux manières.

  3. v(⋀j=1kℓj)=1v\left( \bigwedge_{j=1}^{k} \ell_j \right) = 1

    Dans cette valuation, tous ses littéraux valent 11, et par le lemme de la valeur la conjonction vaut 11 : elle est satisfaisable.

  4. v(ℓ)+v(ℓ∗)=1v(\ell) + v(\ell^{*}) = 1

    Si une clause contient ℓ\ell et ℓ∗\ell^{*}, dans toute valuation l’un des deux vaut 11, et la clause vaut 11 : elle est valide.

  5. v(⋁j=1kℓj)=0v\left( \bigvee_{j=1}^{k} \ell_j \right) = 0

    Si elle ne contient aucune paire complémentaire, la valuation qui donne 00 à ses variables positives et 11 à ses variables niées donne la valeur 00 à tous ses littéraux ; par le lemme de la valeur, la clause vaut 00 sous elle et n’est pas valide.