5 % \setcounter{Notation}{0}
9 \chapter{Algorithme de résolution}
11 \section{Résolution sans variables}
15 Il n'y a ici pas de variables autres que les variables
16 propositionnelles, et on se place en logique des propositions.
18 \subsection{Le système formel RSV}
21 Le système formel RSV (Résolution sans variable) est le système formel
22 choisi pour traiter les problèmes posés en calcul propositionnel.
24 \subsection{Principes généraux}
26 Quelques principes généraux de la résolution sans variable (RSV) :
31 \item Les seules formules correctes admises sont les clauses,
32 c'est-à-dire des disjonctions de littéraux, positifs ou négatifs
35 \item Les seuls connecteurs admis sont $\non$ et $\ou$.
37 \item Une clause est satisfaite quand l'un de ses littéraux est
40 \item La clause vide (ne contenant aucun littéral) ne vérifie pas
41 cette condition, elle est dite insatisfaite.
45 La clause vide est représentée par $\square$.
49 \subsection{Le système formel RSV}
51 \noindent Ces principes généraux se formalisent ainsi :
56 \item alphabet : les variables propositionnelles, $\non$ et $\ou$.
58 \item axiomes : pas d'axiomes.
60 \item règles d'inférence : $\{F \ou G, \non F \ou G \} \vdash (RSV) G
67 Cette dernière règle est une généralisation du \og modus ponens \fg :
69 $$\{F,F \imp G \} \vdash H , ~ \{F \ou B, \non F \ou H \}
73 Par rapport à la logique propositionnelle, la suppression des axiomes
74 et la généralisation de la règle d'inférence ont pour
75 conséquence la perte de la complétude (\emph{i.e.} équivalence
79 En logique propositionnelle, on avait $\{F\} \vdash F \ou G$. Cette
80 déduction ne peut plus être obtenue dans RSV.
85 \subsection{Quelques indications sur les algorithmes de résolution}
87 \subsubsection{Généralités}
89 Il y a trois classes d'algorithmes de résolution :
92 \item[Les algorithmes de chaînage avant] : on part des données
93 (l'ensemble des clauses de départ), on en déduit de nouvelles
94 clauses, et ainsi de suite, en espérant arriver à la conclusion.
95 \item[Les algorithmes de chaînage arrière] on part de la conclusion,
96 on construit les clauses qui par déduction permettraient de les
97 obtenir, et ainsi de suite, en espérant obtenir les clauses de
99 \item[Les algorithmes mixtes]
102 \begin{Th}[Théorème de falsification]
103 \index{Théorème de falsification}
104 $\mathcal{F} \vdash A$ si et seulement si $\mathcal{F} \cup \{ \non A
105 \} \vdash \square$, où $\mathcal{F}$ est un ensemble de clauses, et
111 \subsubsection{Un exemple de chaînage avant : algorithme de saturation}
113 On produit systématiquement toutes les clauses possibles à partir des
114 clauses de départ, et on recommence jusqu'à ce qu'il n'y ait plus
115 production de nouvelles clauses.
117 Cet algorithme n'est cependant pas efficace. On peut l'améliorer en
118 \og saturation avec simplification \fg, les simplifications étant :
121 \item la suppression de tautologie,
122 \item la suppression des clauses subsumées ($C$ est subsumée par $C'$
123 si tous les littéraux de $C'$ sont dans $C$ : $A \ou B \ou C$ est
124 subsumée par $A \ou B$).
130 Ensemble de clauses de départ :
134 a \imp b & C_1 = \non a \ou b \\
135 b \imp c & C_2 = \non b \ou c \\
136 c \imp a & C_3 = \non c \ou a \\
137 a \ou b \ou c & C_4 = a \ou b \ou c \\
143 \paragraph{Génération 1}
147 \noindent $\{ C_1, C_2 \} \vdash C_5 = \non a \ou c$ \\
148 $\{ C_1, C_3 \} \vdash C_6 = b \ou \non c$ \\
149 $\{ C_1, C_4 \} \vdash C_7 = b \ou c$ \\
150 $\{ C_2, C_3 \} \vdash C_8 = a \ou \non b$ \\
151 $\{ C_2, C_4 \} \vdash C_9 = a \ou c$ \\
152 $\{ C_3, C_4 \} \vdash C_{10} = a \ou b$ \\
154 $C_4$ est subsumé par $C_7$.
158 \paragraph{Génération 2}
160 Les clauses des deux générations précédentes entre elles :
162 \noindent $\{ C_1, C_8 \} \vdash C_{11} = b \ou \non b$ \\
163 $\{ C_1, C_9 \} \vdash C_{12} = b \ou c$ \\
164 $\{ C_1, C_{10} \} \vdash C_{13} = b$ \\
165 $\{ C_2, C_6 \} \vdash C_{14} = c \ou \non c$ \\
166 $\{ C_2, C_{10} \} \vdash C_{15} = b$ \\
170 $C_1, C_6, C_7, C_{10}$ sont subsumées par $C_{13}$.
172 $C_{12}$ est $C_7$, $C_{15}$ est $C_{13}$.
174 $C_{11}$ et $C_{14}$ sont des tautologies.
180 Il est préférable de retirer les clauses subsumées au fur et à mesure.
184 \subsubsection{Exemple d'algorithme de chaînage arrière}
186 \paragraph{Présentation}
188 Le problème est de savoir si $\mathcal{F} \vdash C$, où $\mathcal{F}$ est un ensemble de clauses, et $C$ est une clause.
192 On sait que c'est équivalent à
194 \begin{center}$\mathcal{F} \vdash \{ \non C\}$ insatisfiable à condition que $\mathcal{F}$ soit satisfiable.
199 On étudie donc la clause pour essayer de formuler des diagnostiques.
201 On essaye, par exemple, si $C$ serait conséquence de $\mathcal{F}$, puis en cas de réponse positive, si $\non C$ ne serait pas aussi une conclusion possible.
203 Si c'est le cas, cela signifie que $\mathcal{F}$ est contradictoire : le problème est mal posé.
205 Le but de \og savoir si $C$ (un littéral) se déduit de $\mathcal{F}$ \fg{} se traduit par : \og Effacer $\non C$ dans l'ensemble des clauses de $\mathcal{F}$, la liste de ses ancêtres étant vide. \fg
213 \paragraph{Les règles de l'algorithme SL résolution}
215 \item Un littéral qui figure dans sa propre liste d'ancètres ne s'efface pas ($\imp$ arrêt de l'algo)
217 \item Un littéral dont la négation figure dans la liste des ancêtres s'efface.
219 \item Si on est dans aucun des cas précédent, on doit chercher une résolvante, c'est-à-dire une clause de $\mathcal{F}$ qui contienne la négation du littéral que l'on cherche à effacer qui permet donc une déduction (par RSV).
221 Le but \og effacer le littéral dans l'ensemble des clauses $\mathcal{F}$ et avec la liste d'ancêtre $N$ \fg{} est alors remplacé par \og effacer tous les littéraux de la résolvante dans $\mathcal{F}$, en rajoutant le littéral sur lequel se porte la déduction à la liste des ancêtres \fg.
228 a \ou b & \leftarrow C_1 \\
229 \non b \ou c & \leftarrow C_2 \\
230 a \ou \non c & \leftarrow C_3 \\
231 a \ou b \ou c & \leftarrow C_4 \\
234 On va demander à SL résolution un diagnostique sur $a$ ($a$ est déductible de cet ensemble de clauses).
236 Le but est \og effacer $\non a$ dans l'ensemble des clauses, liste d'ancêtres [] (vide) \fg.
238 Avec la clause $C_4$, on obtient la résolvante $\{ \non a, a \ou b \ou c \} \vdash b \ou c.$
240 Le but est remplacé par \og effacer les littéraux de $b \ou c$ dans l'ensemble des clauses, liste des ancêtres [ $\non a$ ].
242 \item Effacer $b$ \og $\hdots$ \fg, liste ancêtre [ $\non a$ ].\\
243 Avec $C_2 \{ b, \non b \ou c \} \vdash c$.\\
244 \og Effacer $c$, liste ancêtre [ $\non a, b$ ]. \fg \\
245 Avec $C_3 \{ c, \non c \ou a \} \vdash a$.\\
246 \og Effacer $a$, liste ancêtre [ $ \non a, b, c$ ]. \fg \\
247 $\imp$ Succès car $\non a$ dans liste des ancêtres.
248 \item Effacer $c$ \og $\hdots$ \fg, liste ancêtre [ $\non a$ ].\\
249 Avec $C_3 \{ c, \non c \ou a \} \vdash a$.\\
250 \og Effacer $a$, liste ancêtre [$\non a $]. \fg \\
251 $\imp$ Succès car $\non a$ dans la liste des ancêtres.
253 Succès pour effacer $a$.
255 Il reste à vérifier si on peut effacer $\non a$.
259 \subsection{Exemples complets de résolution}
263 Ces divers exemples sont indépendants...
265 \subsubsection{Méthode de résolution}
267 ...La méthode de résolution est cependant la même. Elle est exposée ici, et elle est valable pour chacun d'entre eux sauf le dernier, qui ne se satisfait pas d'une déduction linéaire.
270 \item Formaliser en logique des propositions (pas en calcul des prédicats) les propositions, puis
272 \item les mettre sous forme de clauses (sans variables). Ces clauses seront numérotées, dans l'ordre de leur obtention.
274 \item Appliquer la règle d'inférence de \og RSV \fg{} pour obtenir la conclusion que l'on peut tirer de l'ensemble de propositions.
276 Les nouvelles clauses déduites recevront un numéro.
278 Une déduction sera présentée sous la forme $(C_i, C_j) \vdash C_k = ...$
280 La conclusion demandée est une clause qui ne contient comme littéraux que ceux qui ne figurent qu'une seule fois dans l'ensemble de clauses de départ.
282 Utiliser une déduction linéaire dont la racine est une clause qui contient l'un de ces littéraux.
284 \item Traduire la conclusion obtenue sous forme de phrase française.
289 \subsubsection{Les exemples complets}
292 Les animaux de la maison...
294 \item Les seuls animaux de cette maison sont des chats.
295 \item Tout animal qui aime contempler la lune est apte à devenir un animal familier.
296 \item Quand je déteste un animal, je l'évite soigneusement.
297 \item Aucun animal n'est carnivore, à moins qu'il n'aille rôder dehors la nuit.
298 \item Aucun chat ne manque jamais de tuer les souris.
299 \item Aucun animal ne s'attache jamais à moi, sauf ceux qui sont dans cette maison.
300 \item Les panthères ne sont pas aptes à devenir des animaux familiers.
301 \item Aucun animal non carnivore ne tue de souris.
302 \item Je déteste les animaux qui ne s'attachent pas à moi.
303 \item Les animaux qui vont rôder dehors la nuit aiment toujours contempler la lune.
307 \noindent Réponse : L'univers est \{ Les animaux\}.
309 $$\begin{array}{l l l}
310 Maison \imp Chats & C_1 : & \non Maison \ou Chats \\
311 Lune \imp Familier & C_2 : & \non Lune \ou Familier \\
312 Deteste \imp Evite & C_3 : & \non Deteste \ou Evite \\
313 Rode \ou \non Carnivore & C_4 : & Rode \ou \non Carnivore \\
314 Chats \imp Tuer & C_5 : & \non Chats \ou Tuer \\
315 Attache \imp Maison & C_6 : & \non Attache \ou Maison \\
316 Panthere \imp \non Familier & C_7 : & \non Panthere \ou \non Familier\\
317 \non Carnivore \imp \non Tuer & C_8 : & Carnivore \ou \non Tuer \\
318 \non Attache \imp Deteste & C_9 : & Attache \ou Deteste \\
319 Rode \imp Lune & C_{10} : & \non Rode \ou Lune\\
324 $$\begin{array}{l l l}
325 \{ C_2 , C_7 \} & \vdash \non Panthere \ou \non Lune & : C_{11} \\
326 \{ C_{11}, C_{2} \} & \vdash \non Panthere \ou \non Rode & : C_{12} \\
327 \{ C_{12} , C_{10} \} & \vdash \non Panthere \ou \non Carnivore & : C_{13} \\
328 \{ C_{13} , C_4 \} & \vdash \non Panthere \ou \non Tuer & : C_{14} \\
329 \{ C_{14} , C_8 \} & \vdash \non Panthere \ou \non Chats & : C_{15} \\
330 \{ C_{15} , C_5 \} & \vdash \non Panthere \ou \non Maison & : C_{16} \\
331 \{ C_{16} , C_1 \} & \vdash \non Panthere \ou \non Attache & : C_{17} \\
332 \{ C_{17} , C_6 \} & \vdash \non Panthere \ou \non Deteste & : C_{18} \\
333 \{ C_{18} , C_9 \} & \vdash \non Panthere \ou Deteste & : C_{19} \\
334 \{ C_{19} , C_3 \} & \vdash \non Panthere \ou Evite & \\
338 \noindent Soit $Panthere \imp Evite$ : J'évite les panthères.
341 Les exercices de logique...
343 \item Quand un étudiant résout un exercice de logique sans soupirer, vous pouvez être sûr qu'il le comprend.
344 \item Ces exercices ne se présentent pas sous la forme habituelle.
345 \item Aucun exercice facile ne donne mal à la tête.
346 \item Les étudiants ne comprennent pas les exercices qui ne se présentent pas sous la forme habituelle.
347 \item Les étudiants ne soupirent jamais devant un exercice de logique, à moins qu'il ne leur donne mal à la tête.
353 \noindent Réponse : L'univers est \{ Exercices \}.
355 $$\begin{array}{l l l}
356 \non Soupirent \imp Comprend & C_1 : & Soupirent \ou Comprend \\
358 Ces ~ exercices \imp \non Habituelle & C_2 : & \non Ces ~ exercices \ou \non Habituelle \\
360 Facile \imp \non Mal & C_3 : & \non Facile \ou \non Mal \\
362 \non Habituelle \imp \non Comprend & C_4 : & Habituelle \ou \non Comprend \\
364 \non Soupirent \ou Mal & C_5 : & \non Soupirent \ou Mal \\
369 $$\begin{array}{l l l}
370 \{ C_2 , C_4 \} & \vdash \non Ces ~ exercices \ou \non Comprend & : C_{6} \\
371 \{ C_{6}, C_{1} \} & \vdash \non Ces ~ exercices \ou Soupirent & : C_{7} \\
372 \{ C_{7} , C_{5} \} & \vdash \non Ces ~ exercices \ou Mal & : C_{8} \\
373 \{ C_{8} , C_3 \} & \vdash \non Ces ~ exercices \ou \non Faciles & \\
377 \noindent Soit $Ces ~ exercices \imp \non facile$ : Ces exercices ne sont pas faciles.
382 Mes idées sur les chaussons aux pommes...
384 \item Toute idée de moi qui ne peut s'exprimer sous forme de syllogisme est vraiment ridicule.
385 \item Aucune de mes idées sur les chaussons aux pommes ne mérite d'être notée par écrit.
386 \item Aucune idée de moi que je ne parviens pas à vérifier ne peut être exprimée sous forme de syllogisme.
387 \item Je n'ai jamais d'idée vraiment ridicule sans la soumettre sous le champ à mon avocat.
388 \item Mes rêves (idées) ont tous trait aux chaussons aux pommes.
389 \item Je ne soumets aucune de mes idées à mon avocat si elle ne mérite pas d'être notée par écrit.
394 \noindent Réponse : L'univers est \{ Idée \}.
396 $$\begin{array}{l l l}
397 Ridicule \imp Sullogisme & C_1 : & \non Ridicule \ou Syllogisme \\
399 Pomme \imp \non Ecrit & C_2 : & \non Pomme \ou \non Ecrit \\
401 \non Verifier \imp \non Syllogisme & C_3 : & \non Verifier \ou \non Syllogisme \\
403 \non Ridicule \imp Avocat & C_4 : & Ridicule \ou Avocat \\
405 Reves \imp Pomme & C_5 : & \non Reves \ou Pomme \\
407 Avocat \imp Ecrit & C_5 : & \non Avocat \ou Ecrit \\
412 $$\begin{array}{l l l}
413 \{ C_3 , C_1 \} & \vdash \non Verifier \ou \non Ridicule & : C_{7} \\
414 \{ C_{7}, C_{4} \} & \vdash \non Verifier \ou Avocat & : C_{8} \\
415 \{ C_{8} , C_{6} \} & \vdash \non Verifier \ou Ecrit & : C_{9} \\
416 \{ C_{9} , C_2 \} & \vdash \non Verifier \ou \non Pomme & C_{10} \\
417 \{ C_{10} , C_5 \} & \vdash \non Verifier \ou \non Reves & \\
421 \noindent Soit $Reves \imp \non Verifier$ : Mes rêves ne sont pas vérifiés.
425 Les matières enseignées à l'IUT
427 \item Aucune matière n'est primordiale, sauf l'ACSI.
428 \item Toute matière enseignée par des professeurs dynamiques est susceptible de plaire aux étudiants.
429 \item Je ne travaille pas les matières que je n'aime pas.
430 \item Les seules matières intéressantes sont les matières informatiques.
431 \item Aucune matière informatique n'évite l'abstraction.
432 \item Aucune matière ne me réussit, excepté les matières intéressantes.
433 \item Les mathématiques ne sont pas susceptibles de plaire aux étudiants.
434 \item Aucune matière non primordiale ne tombe dans l'abstraction.
435 \item Je n'aime pas les matières qui ne me réussissent pas.
436 \item L'ACSI est enseignée par des professeurs dynamiques.
441 \noindent Réponse : L'univers est \{ Matieres \}.
443 $$\begin{array}{l l l}
444 Primordiale \imp ACSI & C_1 : & \non Primordiale \ou ACSI\\
445 Dynamique \imp Plait & C_2 : & \non Dynamique \ou Plait\\
446 \non Aime \imp \non Travaille & C_3 : & Aime \ou \non Travaille\\
447 Interessante \imp Informatique & C_4 : & \non Interessante \ou Informatique \\
448 Informatique \imp Abstraction & C_5 : & \non Informatique \ou Abstraction \\
449 Reussit \imp Interessant & C_6 : & \non Reussit \ou Interessant \\
450 Maths \imp \non Plait & C_7 : & \non Maths \ou \non Plait \\
451 \non Primordial \imp \non Abstraction & C_8 : & Primordiale \ou \non Abstraction \\
452 \non Reussit \imp \non Aime & C_9 : & Reussit \ou \non Aime\\
453 ACSI \imp Dynamique & C_{10} : & \non ACSI \ou Dynamique \\
458 $$\begin{array}{l l l}
459 \{ C_7 , C_2 \} & \vdash \non Maths \ou \non Dynamique & : C_{11} \\
460 \{ C_{11}, C_{10} \} & \vdash \non Maths \ou \non ACSI & : C_{12} \\
461 \{ C_{12} , C_{1} \} & \vdash \non Maths \ou \non Primordiale & : C_{13} \\
462 \{ C_{13} , C_8 \} & \vdash \non Maths \ou \non Abstraction & : C_{14} \\
463 \{ C_{14} , C_5 \} & \vdash \non Maths \ou \non Informatique & : C_{15} \\
464 \{ C_{15} , C_4 \} & \vdash \non Maths \ou \non Interessant & : C_{16} \\
465 \{ C_{16} , C_6 \} & \vdash \non Maths \ou Reussit & : C_{17} \\
466 \{ C_{17} , C_9 \} & \vdash \non Maths \ou \non Aime & : C_{18} \\
467 \{ C_{18} , C_3 \} & \vdash \non Maths \ou \non Travaille & \\
471 \noindent Soit $Maths \imp \non Travaille$ : Je ne travaille pas les maths.
473 \subsection{Exercices}
476 Les logiciens ne dorment pas beaucoup.
478 \item Un logicien qui dîne de deux côtelettes de porc risque de se ruiner.
479 \item Un joueur dont l'appétit n'est pas féroce risque de se ruiner.
480 \item Un homme qui est déprimé parce qu'il est ruiné et qu'il risque de se ruiner à nouveau se lèbe toujours à cinq heures du matin.
481 \item Un homme qui ne joue pas et qui ne dîne pas de deux côtelettes de porc est assuré d'avoir un appétit féroce.
482 \item Un homme dynamique qui se couche avant quatre heures du matin aurait intérêt à devenir conducteur de taxi.
483 \item Un homme doué d'un appétit féroce, qui ne s'est pas ruiné et qui ne se lève pas à cinq heures du matin, dîne toujours de deux côtelettes de porc.
484 \item Un logicien qui risque de se ruiner aurait intérêt à devenir conducteur de taxi.
485 \item Un joueur convaincu, qui est déprimé bien qu'il ne soit pas ruiné, ne court aucun risque de se ruiner.
486 \item Un homme qui ne joue pas et dont l'appétit n'est pas féroce est toujours dynamique.
487 \item Un logicien dynamique, qui est véritablement convaincu, ne risque pas de se ruiner.
488 \item Un homme doté d'un appétit féroce n'a nul besoin de devenir conducteur de taxi, s'il est véritablement convaincu.
489 \item Un joueur qui est déprimé et qui ne risque pas de se ruiner reste debout jusqu'à quatre heures du matin.
490 \item Un homme qui est ruiné et qui ne dîne pas de deux côtelettes de porc aurait intérêt à devenir conducteur de taxi ou à se lever à cinq heures du matin.
491 \item Un joueur qui se couche avant quatre heures du matin n'a nul besoin de devenir conducteur de taxi, à moins qu'il ne soit doué d'un appétit féroce.
492 \item Un homme doué d'un appétit féroce, déprimé et qui ne risque nullement de se ruiner, est un joueur.
502 \item Tous les agents de police du secteur aiment dîner avec notre cuisinière.
503 \item Aucun homme aux cheveux longs ne peut être autre chose que poète.
504 \item Je n'ai jamais fait de séjour en prison.
505 \item Les cousins de notre cuisinière aiment tous le gigot froid.
506 \item Seuls les agents de police du secteur sont poètes.
507 \item Les hommes aux cheveux courts ont tous fait un séjour en prison.
516 \item Les étudiants se sentent abandonnés lorque les professeurs ne s'intéressent pas à eux
517 \item Les seuls étudiants en informatique se trouvent dans cet IUT.
518 \item Aucun étudiant ne peut écrire correctement un programme s'il n'a pas reçu une formation convenable.
519 \item Aucun étudiant de cet IUT n'est complètement nul.
520 \item Quand un étudiant se sent abandonné, il risque de sombrer dans la dépression.
521 \item Les professeurs ne s'intéressent pas aux étudiants que n'apprennent pas l'informatique.
528 \section{Résolution avec variable}
529 On est ici en calcul des prédicats. On ne s'occupe que de clauses :
532 \item symbole de prédicat, de variables, de constantes,
533 \item $\non$ et $\ou$ seulement,
534 \item pas de quantificateurs.
537 \subsection{Unification}
539 \subsubsection{Composants de substitutions et substitutions}
541 \begin{Def}[Composant de substitution]
542 Si $x$ est un symbole de variable et $t$ un terme du calcul des prédicats, $(x|t)$ est un \emph{composant de substitution} \index{composant de substitution} et indique la substitution de $x$ par $t$, dans une certaine formule.
546 $A = p(x,y,z) \ou r(x,u)$, où $x,y,z,u$ sont des symboles de variables, et $p,r$ des symboles de prédicats.
548 Substitution de $x$ par $a$ (symbole de constante) dans $A$ :
549 $$(x|a)A = p(a,y,z) \ou r(a,u)$$
551 On peut composer les composants de substitution (par exemple considérer $(y|b) (x|t) A$.
554 L'ordre a de l'importance, la composition des composants de substitution n'est pas commutative.
558 On ne peut substituer que des variables.
562 La substitution identique est notée $[]$.
567 Si $x,y$ sont des symboles de variable, alors
569 $$\left\{ \begin{array}{lr}
570 p(x) & (x|y) p(x) = p(y) \\
571 \non p(y) & \non p(y) \\
572 \end{array} \right\} \vdash \square
575 \noindent mais si $a,b$ sont des symboles de constante, alors :
577 $$\left\{ \begin{array}{l}
582 ... on ne peut rien conclure.
584 Par ailleurs, comme il n'y a plus de quantificateurs, toutes les variables sont libres et toutes les substitutions licites (c'est-à-dire une variable par un terme quelconque : constante, variable, groupe opératoire) sont possibles.
588 \subsubsection{Unificateurs}
589 \'Etant donnés deux clauses $A$ et $B$, on appelle unificateur de ces deux clauses toute substitution $s$ telle que $sA = sB$.
593 \item Pour deux formules quelconques, il n'existe pas forcément d'unificateur. Ainsi, pour $A = p(x)$ et $B = q(y)$ : comme les deux symboles sont différents, elles ne sont pas unifiables.
595 \item L'unificateur, s'il existe, n'est pas unique. Ainsi, si $s$ est un unificateur de $A$ et $B$ ($sA = sB$) et si $s'$ est une substitution quelconque, alors $s's$ est aussi unificateur.
597 \item Si $s$ est un unificateur de $A$ et $B$, et que, pour tout unificateur $s'$ de $A$ et $B$, $s'$ peut se mettre sous la forme $s' = s''s$, où $s''$ est une substitution, alors $s$ est appelé \emph{le plus grand unificateur} \index{unificateur!le plus grand} de $A$ et de $B$ (ce dernier n'existe pas forcément).
601 \subsection{Résolution}
603 Dans le système \og RAV \fg (résolution avec variable) :
606 \item Les formules sont des clauses du calcul des prédicats.
608 \item Il n'y a pas d'axiomes.
610 \item Deux règles d'inférences :
612 \item[résolution] $\{a \ou f, \non b \ou g \} \vdash \theta (\sigma f \ou g) \}$, avec $\sigma$ une substitution de renommage, destinée à faire qu'il n'y ait aucune variable commune entre $a \ou f$ et $\non b \ou g$, et $\theta$ un unificateur de $(\sigma a)$ et de $b$.
614 \item[diminution] $\{ a \ou b \ou f \} \vdash \sigma (b \ou f)$, où $\sigma$ : unificateur de $a$ et $b$.
621 $\{ p(x) \ou p(y) \ou q(z) \} \vdash p(y) \ou q(z)$
623 $(x|y)$ est un unificateur de $p(x)$ et $p(y)$
627 \subsubsection{Quelques exemples d'applications (en RAV)}
630 $\{ p(x,c) \ou r(x), \non p(c,c) \ou q(x) \}$, avec :
632 \item $p,q,r$ : symboles de prédicats.
634 \item $x$ : symbole de variable.
636 \item $c$ : symbole de constante.
641 La substitution de $x$ par $c$ :
643 $\{ p(c,c) \ou r(c), \non p(c,c) \ou q(c) \} \vdash r(c) \ou q(c)$
645 \noindent est incorrect, car le renommage n'a pas été fait.
647 On commence donc par un renommage dans l'une des deux clauses (qui ne doivent plus avoir de variable commune) : par exemple dans $C_2$, $(x|y)$.
649 $$\{ p(x,c) \ou r(x), \non p(c,c) \ou q(y) \}$$
651 puis on substitue $(x|c)$ dans les deux clauses pour unifier $p(x,c)$ et $p(c,c)$.
653 $$\{ p(c,c)\ou r(x), \non p(c,c) \ou q(y) \} \vdash r(c) \ou q(y)$$
659 $\{ p(x,f(a)), \non p (a,y) \ou r(f(y)) \}$, avec
661 \item $p,r$ : symbole de prédicat
663 \item $f$ : symbole opératoire
665 \item $x,y$ : symbole de variable
667 \item $a$ : symbole de constante
670 Pas de renommage, car pas de variable communes.
672 $$(y|f(a))(x|a) \{p(a,f(a)); \non p(a,f(a)) \ou r(f(f(a))) \} \vdash r(f(f(a)))$$
678 $p(x,g(y)) \ou p(f(c),x) \ou r(x,y,z)$
681 $p,r$ : symbole de prédicat
683 $f,g$ : symbole opératoire
685 $x,y,z$ : symbole de variable
687 $c$ : symbole de constante
689 $$(z|g(y)) (x|f(c)) \{ p(x,g(y)) \ou p(f(c),x) \ou r(x,y,z)\} = p(f(c),g(y)) \ou idem \ou r(f(c),y,g(y)) \vdash p(f(c),g(y)) \ou r(f(c),y,g(y))$$
693 \begin{Ex}[Un exemple complet]
694 $C_1 = \non cr(y) \ou cv(f(y),y)$
696 $C_2 = \non cr(y) \ou \non cv(x,y) \ou ma(x)$
698 $C_3 = \non ar(x) \ou ma(x)$
700 $C_4 = \non ma(x) \ou \non ar(x) \ou \non cr(y) \ou \non cv(x,y)$
704 $C_6 = \non ma(x) \ou ar(x)$ : mise sous forme de clause de la négation de la conclusion.
706 La conclusion est valide ssi on peut déduire la clause vide de cet ensemble de clauses.
708 $\{ C_5, (y|a) C_1 \} \vdash C_7 = cv(f(a),a)$
710 $\{ C_5, (y|a) C_2 \} \vdash C_8 = \non cv(x,a) \ou ma(x)$
712 $\{ C_5, (y|a) C_4 \} \vdash C_9 = \non ma(x) \ou \non ar(x) \ou \non cv(x,a)$
714 $\{C_7, (x|f(a)) C_8 \} \vdash C_{10} = ma(f(a))$
716 $\{C_7, (x|f(a)) C_9 \} \vdash C_{11} = \non ma(f(a)) \ou \non ar(f(a))$
718 $\{ C_{10}, C_{11} \} \vdash C_{12} = \non ar (f(a))$
720 $\{C_{10} , (x|f(a)) C_{6} \} \vdash C_{13} = ar (f(a))$
722 $\{C_{12} , C_{13} \} \vdash \square $ : la conclusion était valide.
727 On considère les formules suivantes de \og PR \fg{}.
729 \item $A_1 : \forall x \left(p(x) \imp q(f(x)) \right)$
730 \item $A_2 : \forall x \left(q(x) \imp p(f(x)) \right)$
731 \item $B : \forall x \left( \non p(x) \imp \ou \non p (f(f(f(f(x))))) \right)$
733 ($p$ et $q$ sont des symboles de prédicats, $f$ est un symbole opératoire et $x$ est un symbole de variable.)
735 Il s'agit de prouver que la formule $B$ est la conclusion des formules $A_1$ et $A_2$. On mettra ces formules, ainsi que la négation de $B$, sous forme de clauses. On utilisera ensuite les règles d'inférence de \og RAV \fg{} pour déduire, si possible, la clause vide de cet ensemble de clauses.
741 On considère l'ensemble de deux clauses $\{ p(x) \ou p(y), \non p(x) \ou \non p(y) \}$ ($p$ est un symbole de prédicat, $x$ et $y$ sont des symboles de variables).
743 Peut-on en déduire quelque chose et, si oui, quoi ?
745 \subsection{Stratégie de résolution}
748 \item[correction] Une stratégie de résolution est correcte quand elle ne trouve dans l'arbre des déductions la clause vide que lorsqu'elle est effective.
749 \item[complétude] Une stratégie de résolution est complète quand elle conduit effectivement à la découverte de la clause vide (si elle figure dans l'arbre de déduction).
754 Aucune stratégie à ce jour ne peut détecter l'absence de la clause vide dans l'arbre des déductions lorsqu'il est infini. Ce résultat est dû à l'indécidabilité du calcul des prédicats.
760 \item gestion de l'ensemble des clauses,
761 \item parcours de l'arbre de déduction.
765 \paragraph{Gestions de l'ensemble des clauses}
767 Saturation (avec simplification).
769 Préférences des clauses simples : permet d'avancer plus rapidement.
771 Stratégies de résolution :
773 \item gestion de l'ensemble des clauses
774 \item gestion de l'arbre des déductions
777 Parcours de l'arbre :
780 \item En profondeur d'abord : rapide, facile à programmer, se perd dans des branches infinies (arrête au bout d'un certain temps
781 \item En largeur d'abord : lent, difficile à programmer, nécessite une mémoire importante.
785 \paragraph{Choix d'un sous-arbre}
788 \item[déduction linéaire] On appelle déduction linéaire de racine $C$ toute suite de clause : $C_0, \hdots C_n$ telle que $C_0 = C$ et $\forall i, C_{i+1}$ est obtenue par déduction entre $C_1$ et une autre clause. C'est une stratégie correcte, mais incomplète. Si $F$ est un ensemble de clauses satisfiables, et si $F \cup \{C\}$ (une autre clause) est un ensemble de clauses insatisfiables, alors il existe une déduction linéaire de racine $C$ menant à la clause vide.
789 \item[déduction limitée aux entrées] (\og entrées \fg{} : clauses de départ) On appelle déduction limitée aux entrées de racine $C$ toute suite de clauses ($C_0, C_1, \hdots C_n$) telle que $C_0 = C$ et que pour $i>0, C_{i+1}$ est obtenue par déduction entre des clauses dont l'une est une entrée. Il n'y a pas de résultat analogue à celui énoncé pour les déductions linéaires, sauf dans un cas très particulier.
793 \subsection{Exemples complets de résolution}
795 \subsubsection{La méthode de résolution}
799 Pour ces divers exercices, on demande le travail suivant :
802 \item Mettre les diverses propositions sous forme de \og PR \fg{} (on rappelle que cette traduction doit être littérale, c'est-à-dire qu'elle ne doit pas être l'occasion de commencer à \og tirer des conclusions \fg{}).
804 \item Mettre les formules obtenues, ainsi que la négation de la conclusion proposée, sous forme de clauses (numérotées)
806 \item Utiliser la stratégie de \og préférence des clauses simples \fg{} pour décider si la conclusion est valide ou non.
808 On présentera la résolution de manière très claire : des numéros seront affectés aux clauses, les déductions seront explicites, par exemple :
810 $$((x|a) C_i, C_k) \vdash C_n, \textrm{ avec } C_n = \hdots$$
812 On supprimera au fur et à mesure les clauses subsumées, en indiquant, par exemple,
815 La clause $C_i$ est subsumée par la clause $C_k$.
820 \subsubsection{Les exemples complets}
824 \subsection{Exercices}
829 On considère les propositions suivantes :
831 \item Il arrive que des programmes tournent.
832 \item Tout programme qui tourne est écrit par un programmeur.
833 \item Seuls les programmeurs compétents écrivent des programmes qui tournent.
834 \item Les programmeurs compétents qui ne sont pas engagés n'ont pas l'occasion d'écrire des programmes qui tournent.
835 \item On n'engage que des programmeurs compétents.
837 On désire vérifier que la conclusion suivante est correcte :
839 \item Certains programmeurs compétents sont engagés.
844 Les exercices de logique...
847 \item Aucun exercice de logique n'est intéressant.
848 \item Certains exercices de logique ne sont pas intéressants.
850 \noindent On désire vérifier que la conclusion suivante est valide :
852 \item Quelques exercices de logique ne sont pas mathématiques.
859 La logique est difficile...
861 \item Tous ceux qui comprennent la logique peuvent se passer de dormir.
862 \item Certains étudiants ne peuvent pas se passer de dormir.
864 \noindent On désire vérifier que la conclusion suivante est valide :
866 \item Certains étudiants ne comprennent pas la logique.
872 Encore les exercices...
874 \item Certains exercices sont franchement de mauvais goût.
875 \item Les étudiants aiment tout ce qui est de bon goût.
877 \noindent On désire vérifier que la conclusion suivante est valide :
879 \item Il y a certains exercices que les étudiants n'aiment pas.
890 \item Certaines personnes instruites manquent de générosité.
891 \item Tous les professeurs sont généreux.
893 \noindent On souhaite vérifier que la conclusion suivante est valide :
895 \item Les professeurs ne sont pas des personnes instruites.
904 Les étudiants de première année d'informatique sont répartis en six groupes, du groupe A au groupe F.
906 Chacun de ces groupes est subdivisé en deux sous-groupes ($A_1$, $A_2$, $B_1$, $B_2$, etc. )
908 Pour l'élaboration de l'emploi du temps du second semestre, les contraintes suivantes doivent être respectées :
910 \item Si $A_1$ et $A_2$ suivent la même matière, s'il en est de même pour $B_1$ et $B_2$, et si $E_1$ suit la même que $F_2$, $C_1$ doit suivre la même que $D_2$.
911 \item Si $A_1$ et $A_2$ suivent la même matière, s'il en est de même pour $F_1$ et $F_2$, et si $B_1$ suit la même que $C_2$, $D_1$ ne peut pas suivre la même que $E_2$.
912 \item Si $C_1, C_2, D_1$ et $D_2$ suivent la même matière, et si $A_1$ ne suit pas la même matière que $B_2$, $E_1$ ne peut pas suivre la même que $F_2$.
913 \item Si $A_1$ et $A_2$ suivent la même matière, s'il en est de même pour $D_1$ et $D_2$, et si $B_1$ ne suit pas la même que $C_2$, $E_1$ doit suivre la même que $F_2$.
914 \item Si $E_1$ et $E_2$ suivent la même matière, s'il en est de même pour $F_1$ et $F_2$, et si $C_1$ suit la même que $D_2$, $A_1$ doit suivre la même que $B_2$.
915 \item Si $B_1, B_2, C_1$ et $C_2$ suivent la même matière, et si $E_1$ ne suit pas la même matière que $F_2$, $D_1$ doit suivre la même que $E_2$.
917 \noindent On souhaite vérifier que la conclusion suivante est valide :
919 \item A tout instant de la journée, il y aura un groupe au moins dont les deux sous-groupes ne suivront pas la même matière.
921 On pourra utiliser le prédicat $mm(x,y)$ qui signifie que le sous-groupe $x_1$ suit la même matière que le sous groupe $y_2$, et les symboles de CONSTANTES $a,b,c,d,e$ et $f$ qui représentent les groupes.
927 Les intellectuels achètent des livres...
929 \item Il y a des livres.
930 \item Certains intellectuels jouent en bourse.
931 \item Seuls les intellectuels lisent des livres.
932 \item Seuls les intellectuels se ruinent en jouant en bourse.
933 \item Tout livre a un lecteur.
934 \item Les intellectuels ruinés ne lisent pas de livres.
936 \noindent On souhaite vérifier que la conclusion suivante est valide :
938 \item Certains intellectuels ne sont pas ruinés.
945 Les châtelains sont riches...
947 \item On ne prête qu'aux riches.
948 \item Il y a des châteaux.
949 \item Les gens riches qui ont contracté un prêt ne possèdent pas de châteaux.
950 \item Seuls les gens riches sont propriétaires de châteaux.
951 \item Tous les châteaux ont des propriétaires.
953 \noindent On souhaite vérifier que la conclusion suivante est valide :
955 \item Tous les gens riches ne recourent pas à l'emprunt.
965 \section{Clauses de Horn}
967 \subsection{Définition}
968 Une clause de Horn est une clause ne comportant qu'un seul littéral positif.
972 ...donc de la forme $p \ou \non q_1 \ou \hdots \ou \non q_n = p \ou \non (q_1 \et \hdots \et q_n )$ : de la forme $\non Q ou P$, c'est-à-dire $P \imp Q$.
975 \subsection{Déduction ordonnée}
977 Une déduction est dite ordonnée quand elle porte sur le littéral de tête (entre deux clauses).
979 \subsection{Le résultat évoqué dans le paragraphe précédent}
981 Si $F$ est un ensemble de clauses de Horn ordonnées satisfiables, si $C$ est une clause ne comportant que des littéraux négatifs, et que $T \cup \{C\}$ est insatisfiable, alors il existe une déduction limitée aux entiers et ordonnée de racine $C$ qui conduit à la clause vide.
984 \centerline{\x{Fin du Chapitre}}