]> AND Private Git Repository - cours-maths-dis.git/blob - logique/AlgoResol.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ajout relbin13
[cours-maths-dis.git] / logique / AlgoResol.tex
1 % \setcounter{Exo}{0}
2 % \setcounter{Def}{0}
3 % \setcounter{Th}{0}
4 % \setcounter{Rem}{0}
5 % \setcounter{Notation}{0}
6 % \setcounter{Ex}{0}
7
8
9 \chapter{Algorithme de résolution}
10
11 \section{Résolution sans variables}
12
13 \subsection{Cadre}
14
15 Il n'y a ici pas de variables autres que les variables
16 propositionnelles, et on se place en logique des propositions. 
17
18 \subsection{Le système formel RSV}
19
20
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. 
23
24 \subsection{Principes généraux}
25
26 Quelques principes généraux de la résolution sans variable (RSV) :
27
28 \medskip
29
30 \begin{itemize}
31 \item Les seules formules correctes admises sont les clauses,
32   c'est-à-dire des disjonctions de littéraux, positifs ou négatifs
33   (précédé de $\non$). 
34
35 \item Les seuls connecteurs admis sont $\non$ et $\ou$.
36
37 \item Une clause est satisfaite quand l'un de ses littéraux est
38   vrai.
39
40 \item La clause vide (ne contenant aucun littéral) ne vérifie pas
41   cette condition, elle est dite insatisfaite. 
42 \end{itemize}
43
44 \begin{Notation}
45  La clause vide est représentée par $\square$.
46 \end{Notation}
47
48
49 \subsection{Le système formel RSV}
50
51 \noindent Ces principes généraux se formalisent ainsi :
52
53 \medskip
54
55 \begin{itemize}
56  \item alphabet : les variables propositionnelles, $\non$ et $\ou$.
57
58  \item axiomes : pas d'axiomes.
59
60  \item règles d'inférence : $\{F \ou G, \non F \ou G \} \vdash (RSV) G
61    \ou H$ 
62 \end{itemize}
63
64 \bigskip
65
66 \begin{Rem}
67 Cette dernière règle est une généralisation du \og modus ponens \fg :  
68
69 $$\{F,F \imp G \} \vdash H , ~ \{F \ou B, \non F \ou H \}
70 \vdash B \ou H$$ 
71 \end{Rem}
72
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
76 tautologie/théorème). 
77
78 \begin{Rem}
79 En logique propositionnelle, on avait $\{F\} \vdash F \ou G$. Cette
80 déduction ne peut plus être obtenue dans RSV. 
81 \end{Rem}
82
83
84
85 \subsection{Quelques indications sur les algorithmes de résolution}
86
87 \subsubsection{Généralités}
88
89 Il y a trois classes d'algorithmes de résolution :
90
91 \begin{description}
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
98    départ. 
99 \item[Les algorithmes mixtes]
100  \end{description}
101
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
106 $A$ une clause. 
107 \end{Th}
108
109
110
111 \subsubsection{Un exemple de chaînage avant : algorithme de saturation}
112
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. 
116
117 Cet algorithme n'est cependant pas efficace. On peut l'améliorer en
118 \og saturation avec simplification \fg, les simplifications étant : 
119
120 \begin{itemize}
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$). 
125 \end{itemize}
126
127
128
129 \begin{Ex}
130 Ensemble de clauses de départ :
131
132 $$
133 \begin{array}{ll}
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 \\
138 \end{array}
139 $$
140
141
142
143 \paragraph{Génération 1}
144
145
146
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$ \\
153
154 $C_4$ est subsumé par $C_7$.
155
156 \bigskip
157
158 \paragraph{Génération 2}
159
160 Les clauses des deux générations précédentes entre elles :
161
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$ \\
167 etc.
168
169
170 $C_1, C_6, C_7, C_{10}$ sont subsumées par $C_{13}$.
171
172 $C_{12}$ est $C_7$, $C_{15}$ est $C_{13}$.
173
174 $C_{11}$ et $C_{14}$ sont des tautologies.
175 \end{Ex}
176
177
178
179 \begin{Rem}
180 Il est préférable de retirer les clauses subsumées au fur et à mesure.
181 \end{Rem}
182
183
184 \subsubsection{Exemple d'algorithme de chaînage arrière}
185
186 \paragraph{Présentation}
187
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.
189
190
191
192 On sait que c'est équivalent à
193
194 \begin{center}$\mathcal{F} \vdash \{ \non C\}$ insatisfiable à condition que $\mathcal{F}$ soit satisfiable.
195 \end{center}
196
197
198
199 On étudie donc la clause pour essayer de formuler des diagnostiques.
200
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.
202
203 Si c'est le cas, cela signifie que $\mathcal{F}$ est contradictoire : le problème est mal posé.
204
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
206
207
208
209
210
211
212
213 \paragraph{Les règles de l'algorithme SL résolution}
214 \begin{enumerate}
215 \item Un littéral qui figure dans sa propre liste d'ancètres ne s'efface pas ($\imp$ arrêt de l'algo)
216
217 \item Un littéral dont la négation figure dans la liste des ancêtres s'efface.
218
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).
220
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.
222 \end{enumerate}
223
224
225 \begin{Ex}
226 $$
227  \begin{array}{ll}
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 \\
232  \end{array}
233 $$
234 On va demander à SL résolution un diagnostique sur $a$ ($a$ est déductible de cet ensemble de clauses).
235
236 Le but est \og effacer $\non a$ dans l'ensemble des clauses, liste d'ancêtres [] (vide) \fg.
237
238 Avec la clause $C_4$, on obtient la résolvante $\{ \non a, a \ou b \ou c \} \vdash b \ou c.$
239
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$ ].
241 \begin{itemize}
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.
252 \end{itemize}
253 Succès pour effacer $a$.
254
255 Il reste à vérifier si on peut effacer $\non a$.
256 \end{Ex}
257
258
259 \subsection{Exemples complets de résolution}
260
261
262
263 Ces divers exemples sont indépendants...
264
265 \subsubsection{Méthode de résolution}
266
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.
268
269 \begin{enumerate}
270  \item Formaliser en logique des propositions (pas en calcul des prédicats) les propositions, puis
271
272  \item les mettre sous forme de clauses (sans variables). Ces clauses seront numérotées, dans l'ordre de leur obtention.
273
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.
275
276 Les nouvelles clauses déduites recevront un numéro.
277
278 Une déduction sera présentée sous la forme $(C_i, C_j) \vdash C_k = ...$
279
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.
281
282 Utiliser une déduction linéaire dont la racine est une clause qui contient l'un de ces littéraux.
283
284 \item Traduire la conclusion obtenue sous forme de phrase française.
285
286 \end{enumerate}
287
288
289 \subsubsection{Les exemples complets}
290
291 \begin{Ex}
292 Les animaux de la maison...
293  \begin{enumerate}
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.
304  \end{enumerate}
305 \end{Ex}
306
307 \noindent Réponse : L'univers est \{ Les animaux\}.
308
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\\
320   \end{array}
321 $$
322
323
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 &  \\
335   \end{array}
336 $$
337
338 \noindent Soit $Panthere \imp Evite$ : J'évite les panthères.
339
340 \begin{Ex}
341 Les exercices de logique...
342  \begin{enumerate}
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.
348  \end{enumerate}
349
350 \end{Ex}
351
352
353 \noindent Réponse : L'univers est \{ Exercices \}.
354
355 $$\begin{array}{l l l}
356 \non Soupirent \imp Comprend & C_1 : & Soupirent \ou Comprend \\
357
358 Ces ~ exercices \imp \non Habituelle & C_2 : & \non Ces ~ exercices \ou \non Habituelle \\
359
360 Facile \imp \non Mal & C_3 : & \non Facile \ou \non Mal \\
361
362 \non Habituelle \imp \non Comprend & C_4 : & Habituelle \ou \non Comprend \\
363
364 \non Soupirent \ou Mal & C_5 : & \non Soupirent \ou Mal \\
365   \end{array}
366 $$
367
368
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 &  \\
374   \end{array}
375 $$
376
377 \noindent Soit $Ces ~ exercices \imp \non facile$ : Ces exercices ne sont pas faciles.
378
379
380
381 \begin{Ex}
382  Mes idées sur les chaussons aux pommes...
383 \begin{enumerate}
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.
390 \end{enumerate}
391 \end{Ex}
392
393
394 \noindent Réponse : L'univers est \{ Idée \}.
395
396 $$\begin{array}{l l l}
397 Ridicule \imp Sullogisme & C_1 : & \non Ridicule \ou Syllogisme \\
398
399 Pomme \imp \non Ecrit & C_2 : & \non Pomme \ou \non Ecrit \\
400
401 \non Verifier \imp \non Syllogisme & C_3 : & \non Verifier \ou \non Syllogisme \\
402
403 \non Ridicule \imp Avocat & C_4 : & Ridicule \ou Avocat \\
404
405 Reves \imp Pomme & C_5 : & \non Reves \ou Pomme \\
406
407 Avocat \imp Ecrit & C_5 : & \non Avocat \ou Ecrit \\
408   \end{array}
409 $$
410
411
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 &  \\
418   \end{array}
419 $$
420
421 \noindent Soit $Reves \imp \non Verifier$ : Mes rêves ne sont pas vérifiés.
422
423
424 \begin{Ex}
425  Les matières enseignées à l'IUT
426 \begin{enumerate}
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.
437 \end{enumerate}
438 \end{Ex}
439
440
441 \noindent Réponse : L'univers est \{ Matieres \}.
442
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 \\
454   \end{array}
455 $$
456
457
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 &  \\
468   \end{array}
469 $$
470
471 \noindent Soit $Maths \imp \non Travaille$ : Je ne travaille pas les maths.
472
473 \subsection{Exercices}
474
475 \begin{Exo}
476  Les logiciens ne dorment pas beaucoup.
477 \begin{enumerate}
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.
493 \end{enumerate}
494
495 \end{Exo}
496
497
498
499 \begin{Exo}
500  Les gastronomes...
501 \begin{enumerate}
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.
508 \end{enumerate}
509 \end{Exo}
510
511
512
513 \begin{Exo}
514  Les programmeurs...
515 \begin{enumerate}
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.
522 \end{enumerate}
523 \end{Exo}
524
525
526
527
528 \section{Résolution avec variable}
529 On est ici en calcul des prédicats. On ne s'occupe que de clauses :
530
531 \begin{itemize}
532 \item symbole de prédicat, de variables, de constantes,
533 \item $\non$ et $\ou$ seulement,
534 \item pas de quantificateurs.
535 \end{itemize}
536
537 \subsection{Unification}
538
539 \subsubsection{Composants de substitutions et substitutions}
540
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.
543 \end{Def}
544
545 \begin{Ex}
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.
547
548 Substitution de $x$ par $a$ (symbole de constante) dans $A$ :
549 $$(x|a)A = p(a,y,z) \ou r(a,u)$$
550
551 On peut composer les composants de substitution (par exemple considérer $(y|b) (x|t) A$.
552 \end{Ex}
553 \begin{Rem}
554 L'ordre a de l'importance, la composition des composants de substitution n'est pas commutative.
555 \end{Rem}
556
557 \begin{Rem}
558 On ne peut substituer que des variables.
559 \end{Rem}
560
561 \begin{Notation}
562 La substitution identique est notée $[]$.
563 \end{Notation}
564
565
566 \begin{Ex}
567 Si $x,y$ sont des symboles de variable, alors
568
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
573 $$
574
575 \noindent mais si $a,b$ sont des symboles de constante, alors :
576
577 $$\left\{ \begin{array}{l}
578            p(a) \\
579            \non p(b) \\
580           \end{array} \right.
581 $$
582 ... on ne peut rien conclure.
583
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.
585 \end{Ex}
586
587
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$.
590
591 \bigskip
592 \begin{itemize}
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.
594
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.
596
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).
598 \end{itemize}
599
600
601 \subsection{Résolution}
602
603 Dans le système \og RAV \fg (résolution avec variable) :
604
605 \begin{itemize}
606 \item Les formules sont des clauses du calcul des prédicats.
607
608 \item Il n'y a pas d'axiomes.
609
610 \item Deux règles d'inférences :
611 \begin{description}
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$.
613
614 \item[diminution] $\{ a \ou b \ou f \} \vdash \sigma (b \ou f)$, où $\sigma$ : unificateur de $a$ et $b$.
615  \end{description}
616
617 \end{itemize}
618
619
620 \begin{Ex}
621  $\{ p(x) \ou p(y) \ou q(z) \} \vdash p(y) \ou q(z)$
622
623 $(x|y)$ est un unificateur de $p(x)$ et $p(y)$
624 \end{Ex}
625
626
627 \subsubsection{Quelques exemples d'applications (en RAV)}
628
629 \begin{Ex}
630  $\{ p(x,c) \ou r(x), \non p(c,c) \ou q(x) \}$, avec :
631 \begin{itemize}
632 \item $p,q,r$ : symboles de prédicats.
633
634 \item $x$ : symbole de variable.
635
636 \item $c$ : symbole de constante.
637 \end{itemize}
638
639
640
641 La substitution de $x$ par $c$ :
642
643  $\{ p(c,c) \ou r(c), \non p(c,c) \ou q(c) \} \vdash r(c) \ou q(c)$
644
645 \noindent est incorrect, car le renommage n'a pas été fait.
646
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)$.
648
649 $$\{ p(x,c) \ou r(x), \non p(c,c) \ou q(y) \}$$
650
651 puis on substitue $(x|c)$ dans les deux clauses pour unifier $p(x,c)$ et $p(c,c)$.
652
653 $$\{ p(c,c)\ou r(x), \non p(c,c) \ou q(y) \} \vdash r(c) \ou q(y)$$
654 \end{Ex}
655
656
657
658 \begin{Ex}
659 $\{ p(x,f(a)), \non p (a,y) \ou r(f(y)) \}$, avec
660 \begin{itemize}
661 \item $p,r$ : symbole de prédicat
662
663 \item $f$ : symbole opératoire
664
665 \item $x,y$ : symbole de variable
666
667 \item $a$ : symbole de constante
668 \end{itemize}
669
670 Pas de renommage, car pas de variable communes.
671
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)))$$
673 \end{Ex}
674
675
676
677 \begin{Ex}
678  $p(x,g(y)) \ou p(f(c),x) \ou r(x,y,z)$
679
680
681 $p,r$ : symbole de prédicat
682
683 $f,g$ : symbole opératoire
684
685 $x,y,z$ : symbole de variable
686
687 $c$ : symbole de constante
688
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))$$
690 \end{Ex}
691
692
693 \begin{Ex}[Un exemple complet]
694 $C_1 = \non cr(y) \ou cv(f(y),y)$
695
696 $C_2 = \non cr(y) \ou \non cv(x,y) \ou ma(x)$
697  
698 $C_3 = \non ar(x) \ou  ma(x)$
699
700 $C_4 = \non ma(x) \ou  \non ar(x) \ou \non cr(y) \ou \non cv(x,y)$
701
702 $C_5 = cr(a)$
703
704 $C_6 = \non ma(x) \ou ar(x)$ : mise sous forme de clause de la négation de la conclusion.
705
706 La conclusion est valide ssi on peut déduire la clause vide de cet ensemble de clauses.
707
708 $\{ C_5, (y|a) C_1 \} \vdash C_7 = cv(f(a),a)$
709
710 $\{ C_5, (y|a) C_2 \} \vdash C_8 = \non cv(x,a) \ou ma(x)$
711
712 $\{ C_5, (y|a) C_4 \} \vdash C_9 = \non ma(x) \ou \non ar(x) \ou \non cv(x,a)$
713
714 $\{C_7, (x|f(a)) C_8 \} \vdash C_{10} = ma(f(a))$
715
716 $\{C_7, (x|f(a)) C_9 \} \vdash C_{11} = \non ma(f(a)) \ou \non ar(f(a))$
717
718 $\{ C_{10}, C_{11} \} \vdash C_{12} = \non ar (f(a))$
719
720 $\{C_{10} , (x|f(a)) C_{6} \} \vdash C_{13} = ar (f(a))$
721
722 $\{C_{12} , C_{13} \} \vdash \square $ : la conclusion était valide.
723 \end{Ex}
724
725
726 \begin{Exo}
727 On considère les formules suivantes de \og PR \fg{}.
728 \begin{itemize}
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)$
732 \end{itemize}
733 ($p$ et $q$ sont des symboles de prédicats, $f$ est un symbole opératoire et $x$ est un symbole de variable.)
734
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.
736 \end{Exo}
737
738
739
740 \begin{Exo}
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).
742
743 Peut-on en déduire quelque chose et, si oui, quoi ?
744 \end{Exo}
745 \subsection{Stratégie de résolution}
746
747 \begin{description}
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).
750  \end{description}
751
752
753 \begin{Rem}
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.
755 \end{Rem}
756
757
758 Deux problèmes :
759 \begin{enumerate}
760  \item gestion de l'ensemble des clauses,
761  \item parcours de l'arbre de déduction.
762 \end{enumerate}
763
764
765 \paragraph{Gestions de l'ensemble des clauses}
766
767 Saturation (avec simplification).
768
769 Préférences des clauses simples : permet d'avancer plus rapidement.
770
771 Stratégies de résolution :
772 \begin{itemize}
773  \item gestion de l'ensemble des clauses
774  \item gestion de l'arbre des déductions
775 \end{itemize}
776
777 Parcours de l'arbre :
778
779 \begin{itemize}
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.
782 \end{itemize}
783
784
785 \paragraph{Choix d'un sous-arbre}
786
787 \begin{description}
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.
790 \end{description}
791
792
793 \subsection{Exemples complets de résolution}
794
795 \subsubsection{La méthode de résolution}
796
797
798
799 Pour ces divers exercices, on demande le travail suivant :
800
801 \begin{enumerate}
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{}).
803
804 \item Mettre les formules obtenues, ainsi que la négation de la conclusion proposée, sous forme de clauses (numérotées)
805
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. 
807
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 :
809
810 $$((x|a) C_i, C_k) \vdash C_n, \textrm{ avec } C_n = \hdots$$
811
812 On supprimera au fur et à mesure les clauses subsumées, en indiquant, par exemple,
813
814 \begin{center}
815  La clause $C_i$ est subsumée par la clause $C_k$.
816 \end{center}
817
818 \end{enumerate}
819
820 \subsubsection{Les exemples complets}
821
822 Ils vont venir...
823
824 \subsection{Exercices}
825
826
827
828 \begin{Exo}
829 On considère les propositions suivantes :
830 \begin{itemize}
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.
836 \end{itemize}
837 On désire vérifier que la conclusion suivante est correcte :
838 \begin{itemize}
839 \item Certains programmeurs compétents sont engagés.
840 \end{itemize}
841 \end{Exo}
842
843 \begin{Exo}
844  Les exercices de logique...
845
846 \begin{itemize}
847  \item Aucun exercice de logique n'est intéressant.
848  \item Certains exercices de logique ne sont pas intéressants.
849 \end{itemize}
850 \noindent On désire vérifier que la conclusion suivante est valide :
851 \begin{itemize}
852  \item Quelques exercices de logique ne sont pas mathématiques.
853 \end{itemize}
854 \end{Exo}
855
856
857
858 \begin{Exo}
859  La logique est difficile...
860 \begin{itemize}
861  \item Tous ceux qui comprennent la logique peuvent se passer de dormir.
862 \item Certains étudiants ne peuvent pas se passer de dormir.
863 \end{itemize}
864 \noindent On désire vérifier que la conclusion suivante est valide :
865 \begin{itemize}
866  \item Certains étudiants ne comprennent pas la logique.
867 \end{itemize}
868 \end{Exo}
869
870
871 \begin{Exo}
872  Encore les exercices...
873 \begin{itemize}
874  \item Certains exercices sont franchement de mauvais goût.
875 \item Les étudiants aiment tout ce qui est de bon goût.
876 \end{itemize}
877 \noindent On désire vérifier que la conclusion suivante est valide :
878 \begin{itemize}
879  \item Il y a certains exercices que les étudiants n'aiment pas.
880 \end{itemize}
881
882 \end{Exo}
883
884
885
886
887 \begin{Exo}
888  Les professeurs...
889 \begin{itemize}
890 \item Certaines personnes instruites manquent de générosité.
891 \item Tous les professeurs sont généreux.
892 \end{itemize}
893 \noindent On souhaite vérifier que la conclusion suivante est valide :
894 \begin{itemize}
895  \item Les professeurs ne sont pas des personnes instruites.
896 \end{itemize}
897
898 \end{Exo}
899
900
901
902
903 \begin{Exo}
904 Les étudiants de première année d'informatique sont répartis en six groupes, du groupe A au groupe F.
905
906 Chacun de ces groupes est subdivisé en deux sous-groupes ($A_1$, $A_2$, $B_1$, $B_2$, etc. )
907
908 Pour l'élaboration de l'emploi du temps du second semestre, les contraintes suivantes doivent être respectées :
909 \begin{itemize}
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$.
916 \end{itemize}
917 \noindent On souhaite vérifier que la conclusion suivante est valide :
918 \begin{itemize}
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.
920 \end{itemize}
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. 
922 \end{Exo}
923
924
925
926 \begin{Exo}
927  Les intellectuels achètent des livres...
928 \begin{itemize}
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.
935 \end{itemize}
936 \noindent On souhaite vérifier que la conclusion suivante est valide :
937 \begin{itemize}
938  \item Certains intellectuels ne sont pas ruinés.
939 \end{itemize}
940
941 \end{Exo}
942
943
944 \begin{Exo}
945  Les châtelains sont riches...
946 \begin{itemize}
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.
952 \end{itemize}
953 \noindent On souhaite vérifier que la conclusion suivante est valide :
954 \begin{itemize}
955  \item Tous les gens riches ne recourent pas à l'emprunt.
956 \end{itemize}
957
958 \end{Exo}
959
960
961
962
963
964
965 \section{Clauses de Horn}
966
967 \subsection{Définition}
968 Une clause de Horn est une clause ne comportant qu'un seul littéral positif.
969
970
971 \begin{Rem}
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$.
973 \end{Rem}
974
975 \subsection{Déduction ordonnée}
976
977 Une déduction est dite ordonnée quand elle porte sur le littéral de tête (entre deux clauses).
978
979 \subsection{Le résultat évoqué dans le paragraphe précédent}
980
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.
982
983 \gsaut
984 \centerline{\x{Fin du Chapitre}}
985