Approche logique de l’intelligence artificielle · Approche logique de l’intelligence...

62
Approche logique de l’intelligence artificielle Jean-Philippe Préaux http://www.i2m.univ-amu.fr/~preaux Où l’on voit comment une méthode de démonstration formelle en logique des prédicats a permis la réalisation d’un langage de programmation logique –Prolog– capable de concevoir des « systèmes intelligents ». 2010

Transcript of Approche logique de l’intelligence artificielle · Approche logique de l’intelligence...

Page 1: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

Approche logique de l’intelligence artificielle

Jean-Philippe Préaux http://www.i2m.univ-amu.fr/~preaux

Où l’on voit comment une méthode de démonstration formelle en logique des prédicats a permis la réalisation d’un langage de programmation logique –Prolog– capable de concevoir des

« systèmes intelligents ».

2010

Page 2: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration
Page 3: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

1

Table des matières

Introduction…………………………………………………………………………………….3 I) Logique des prédicats………………………………………………………………………..5 I.1) Syntaxe du calcul des prédicats……………………………………………………………7

I.1.1) Langage du calcul des prédicats ...............................……………………………7 I.1.2) Formules bien formées………………………………………………….……….7 a) Les termes…………………………………………………………………...…7 b) Les atomes……………………………………………………………………..8 c) Formules bien formées…………………………………………………………8 I.1.3) Représentation d’un FBF sous la forme d’un arbre……………………………...9 I.1.4) Portée d’un quantificateur, variable libre ou liée………………………………10 a) Portée d’un quantificateur………………………………………………….…10 b) Variable libre, variable liée………………………….......................................11

I.2) Sémantique du calcul des prédicats………………………………………………………12 I.2.1) Réalisation d’un langage……………………………………………………….12 I.2.2) Valeur d’une formule………………………………………………………..…12 a) Assignation de variables……………………………………………………...12 b) Valeur d’une formule dans un modèle, pour une assignation……………...…13 c) Valeur d’une formule dans un modèle……………………………………......14 I.2.3) Formules valides, inconsistantes, équivalentes………………………………...14 I.2.4) Théorie, conséquence logique………………………………………………….15 I.2.5) Equivalence du calcul des prédicats……………………………………………17 I.3) Système axiomatique, règles d’inférences……………………………………………….19 I.3.1) Définitions……………………………………………………………………...19 I.3.2) Système axiomatique du calcul des prédicats…………………………………..19 I.3.3) Complétude du calcul des prédicats…...…………….…………………………20 I.3.4) Indécidabilité du calcul des prédicats…………………………………………..21 II) Procédure de Preuve par réfutation : le principe de résolution……..……………………..23 II.1) Ecriture sous forme clausale…………………………………………………………….25

II.1.1) Formes prénexes…………………………………………………………….…25 II.1.2) Formes normales conjonctives………………………………………………...28 II.1.3) Formes de Skolem……………………………………………………………..30 II.1.4) Formes clausales………………………………………………………………31 II.1.5) En résumé : Algorithme de mise sous forme clausale………………………...33 II.1.6) Exemple complet………………………………………………………………34

II.2) Principe de résolution……………………………………………………………………35 II.2.1) Principe de résolution appliqué à des clauses concrètes………………………35 II.2.2) Unification de littéraux………………………………………………………...36

a) Substitution…………………………………………………………………36 b) Unification………………………………………………………………….37 c) Algorithme d’unification…………………………………………………...38

II.2.3) Principe de résolution appliqué à des clauses quelconques…………………...41 II.2.4) Propriétés du principe de résolution…………………………………………...41

II.3) Preuve par réfutation en utilisant le principe de résolution……………………………...43 II.3.1) Réfutation par résolution………………………………………………………43

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 4: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

2

II.3.2) Non déterminisme de la réfutation par résolution……………………………..46 a) Non déterminisme………………………………………………………….46 b) Stratégies de résolution par réfutation, complètes, effectivement

complètes…………………………………………………………………...47 c) Graphe de dérivation, graphe de réfutation………………………………...47

II.3.3) Quelques exemples de stratégies………………………………………………49 a) Stratégie de résolution « en largeur »………………………………………49 b) Stratégie de résolution « linéaire »………………………………………....49 c) Stratégie « linéaire par entrée »…………………………………………….52

II.3.4) Principe de résolution restreint aux clauses de Horn …………………………53 II.3.5) Principes de programmation logique………………………………………….54

II.4) Illustrations………………………………………………………………………………57

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 5: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

3

Introduction

Il faudrait plus que quelques lignes pour définir fidèlement −si tant est que cela soit possible− ce que l’appellation d’Intelligence Artificielle recouvre de nos jours. Disons que ce domaine, d’orientation plus pragmatique que théorique, a pour objet de faire réaliser à des systèmes informatiques des tâches complexes nécessitant une forme de « raisonnement » dit « intelligent ». Des activités mentales comme par exemple celles nécessitées par la conduite d’un véhicule, la pratique des mathématiques, la compréhension d’une langue, la pratique des échecs ou l’étude d’un cours de l’école de l’air (…) sont habituellement considérées comme faisant appel à un raisonnement « intelligent ». Durant ces dernières décennies de nombreux systèmes informatiques pouvant accomplir des tâches de cette nature ont été conçus. Il existe par exemple des systèmes capables de diagnostiquer une maladie, de battre le champion du monde aux échecs, de prévoir la synthèse de produits chimiques complexes, de résoudre des équations différentielles, d’écrire de petits programmes répondant à certaines spécifications formelles, de traduire des textes de construction assez simple, ou de retranscrire un discours oral (etc…). Ainsi l’intelligence artificielle est déjà présente dans le monde technologique qui nous entoure. Plus que cela, son développement est intimement lié aux développements technologiques à venir. La conception de tels systèmes repose essentiellement sur des techniques générales provenant de la logique, des mathématiques, et de l’informatique théorique. Ces techniques sont encore en nombre relativement restreint −l’IA est une discipline récente−. Nous nous focaliserons dans ce cours seulement sur l’une d’entre-elle, à cause de son importance et de sa généralité (certaines techniques de théorie des graphes, d’heuristique, ou d’optimisation combinatoire seront abordées par ailleurs, pour elles-mêmes, dans d’autres cours de la mineure de Recherche Opérationnelle). La technique que nous étudierons est le fondement théorique du langage de programmation logique PROLOG, langage utilisé pour la conception de nombreux systèmes « intelligents ». Il s’agit grosso modo d’une technique de démonstration automatique de théorèmes −même si elle sera rarement utilisée pour résoudre des problèmes mathématiques. Cette technique utilise la logique des prédicats pour représenter les connaissances dont on dispose. Le langage des prédicats est suffisamment riche pour représenter formellement un grand nombre de connaissances ou faits, et leurs relations logiques. A partir d’un ensemble de connaissances initiales (c'est-à-dire de formules dans le langage des prédicats), on peut se poser la question de savoir si un fait quelconque (traductible en une formule du même langage) doit nécessairement être vrai (par exemple si : « Tous les hommes sont mortels » et si « Socrate est un homme », alors « Socrate est mortel » est nécessairement vrai). Dans ce cadre logique, la véracité d’un tel fait constitue un théorème, et pour l’établir il s’agit d’en effectuer une démonstration. Pour qu’un système informatique soit capable à partir de certains faits exprimés dans le langage des prédicats, d’en déduire d’autres il faut qu’il soit capable d’effectuer des démonstrations automatiques. C’est d’une telle technique de démonstration automatique dont ce cours fait l’objet. Le cours se compose de deux chapitres. Dans le premier chapitre nous introduisons la logique des prédicats, d’une façon assez classique. Dans le deuxième chapitre nous établissons la procédure de preuve automatique dite procédure de preuve par réfutation. Nous terminons ce chapitre par un survol (très rapide) du langage PROLOG, et par quelques illustrations.

Novembre 2003

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 6: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

4

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 7: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

5

Chapitre I

Logique des prédicats

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 8: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

6

Introduction La logique, initiée par Aristote au IVe av. J.C. dans l’Organon, a pour vocation d’étudier le raisonnement déductif en lui-même, abstraction faite de la matière à laquelle il s’applique ou de tout processus psychologique. Par exemple tandis que « le frère de ma mère est mon oncle » est une vérité de langage, et que « le feu ça brûle » est une vérité de fait, les trois phrases suivantes sont des vérités logiques : − « si lorsqu’il pleut la route est mouillée, alors si la route n’est pas mouillée c’est qu’il ne pleut pas », − « si soit il fait beau, soit il pleut, alors s’il ne pleut pas, c’est qu’il fait beau », − « si tous les chats sont verts, et si Félix est un chat, alors Félix est vert ». Après Aristote, la logique −sous un aspect plus formel− a été développée au XIXe siècle, essentiellement dans le but d’établir un fondement solide des Mathématiques. C’est à cette époque qu’apparaît la logique des prédicats (Frege, 1879). Plutôt que de la logique il faudrait parler des logiques. Il existe de nombreux types de logiques, chacune d’entre-elles étant plus adéquates que les autres pour exprimer certains types de raisonnement. La plus simple d’entre-elles est certainement la logique des propositions. Elle traite de propositions qui prennent les valeurs vraie ou fausse, et des connecteurs logiques, le non : ¬ , le ou : ∨ , le et : ∧ , et le implique : ⇒ (et éventuellement le est équivalent à :⇔ ).

La logique des propositions est cependant trop pauvre pour exprimer beaucoup de vérités. La première vérité logique citée plus haut peut se formaliser par ( ) ( )Pluie mouillée mouillée Pluie⇒ ⇒ ¬ ⇒¬ , et la deuxième vérité logique par la formule ( ) ( )Soleil Pluie Pluie Soleil∨ ⇒ ¬ ⇒ , et ces formules sont dites valides ou des tautologies (elles sont vraies indépendamment des valeurs prises par les propositions Pluie, mouillée, etc…). Cependant la troisième vérité logique ci-dessus ne peut pas s’exprimer comme une tautologie du langage des propositions ; la raison en est la présence du quantificateur « tous les… ».

Pour exprimer cette dernière vérité logique il est nécessaire de faire appel à la logique des prédicats. En logique des prédicats on dispose de variables, de constantes, et de fonctions, et les propositions sont remplacées par des prédicats dépendant de variables ; ils prennent la valeur vrai ou faux en fonction des valeurs prises par leur variable. On utilise toujours les connecteurs logiques ; bref le langage des prédicats doit être compris comme une version améliorée du langage des propositions, intégrant des variables, des constantes et des fonctions. Une particularité supplémentaire est l’emploi des quantificateurs ∀ (dit universel) et ∃ (dit existentiel). La dernière vérité logique peut s’exprimer dans ce langage comme la tautologie (( , ( ) ( )) ( )) ( )x Chat x Vert x Chat Félix Vert Félix∀ ⇒ ∧ ⇒ .

La logique des prédicats est assez riche pour exprimer un grand nombre de vérités logiques. Elle permet d’ailleurs de formaliser la plupart des mathématiques. Même si elle est inadéquate pour exprimer certaines situations (comme des concepts temporels « demain ») elle constitue un bon compromis entre simplicité et puissance d’expression, et joue un rôle d’importance en I.A..

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 9: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

7

I.1) Syntaxe du calcul des prédicats

I.1.1) Langage du calcul des prédicats On se donne un alphabet constitué des symboles suivants : – Un ensemble de symboles appelés les constantes. Sauf contre-indication on aura coutume de les désigner par les premières lettres minuscules de l’alphabet, éventuellement munies d’indices : a, b, c, d,…, 1 2, ,...,a a etc... . – Un ensemble de symboles appelés les variables. On les désignera usuellement par les dernières lettres de l’alphabet minuscule : 1 2 1 2, , , , ,..., , ,...x y z x x z z etc.…. – Un ensemble de symboles appelés les prédicats, que l’on désignera usuellement par les lettres majuscules : 1 2, , ,..., , ,..., ...P Q R P P etc . Tout prédicat est muni d’une arité, i.e. d’un nombre entier : 0, 1,2,…,etc.,… (qui informellement représente le nombre d’arguments qu’accepte le prédicat). Des prédicats munis d’arité 1, 2, 3, n, sont appelés respectivement des prédicats unaires, binaires, ternaires, n-aires. Un prédicat d’arité 0 est aussi appelé une proposition.

– Un ensemble de symboles appelés les fonctions, désignés par : 1 2, , ,..., , , ,...f g h f f etc . Eux aussi sont munis d’une arité, à ceci près qu’il s’agit

d’un entier non nul : 1, 2,3,…, n (et on parlera de fonction unaire, binaire, ternaire, ou n-aire.

– Les séparateurs : ce sont les parenthèses : ( et ) ; ainsi que la virgule : ,. – Les connecteurs logiques : , , , ,¬ ∧ ∨ ⇒ ⇔ , (respectivement désignés, « non », « et », « ou », « implique », et « équivaut à »). – Les quantificateurs (respectivement existentiel et universel) : ∃ et∀ .

Ces symboles sont dénués de toute signification intrinsèque. Il ne servent qu’à constituer un langage formel : à partir de cet alphabet on peut concevoir des formules (des suites finies de symboles, comme : ( ,a P x y¬ , ou , ( )x P x∃ , …) ; parmi toutes les formules on ne considérera que certaines d’entre elles appelées des formules bien formées. Ces FBFs en abrégé, sont définies par certaines règles ‘grammaticales’, exposées dans le prochain paragraphe. I.1.2) Formules bien formés (ou FBFs)

a) Les termes : Ils sont définis par induction de la façon suivante : − Les variables et les constantes sont des termes. − Si f est une fonction d’arité n, et si 1 2, ,..., nt t t sont n termes, alors la formule 1 2( , ,..., )nf t t t un terme. − Tous les termes s’obtiennent de cette façon (propriété de clôture). Remarques : - Attention il s’agit là d’un abus de notation !! Les 1 2, ,..., nt t t ne sont pas nécessairement des symboles de notre alphabet, mais représentent des termes !! La notation

1 2( , ,..., )nf t t t représente la formule obtenue en remplaçant chaque it par le terme qu’il représente. Nous pourrons commettre souvent cet abus de notation.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 10: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

8

Exemples : – Si f, g sont des fonctions respectivement unaire et binaire, a, b des constantes, et x une variable, alors les formules : a ; x ; f(x) ; ( ( ))f f b ; ( ( , ( )))f g b f x sont des termes. – Si l’on considère les fonctions unaires père etmère , et les constantes Nathalie etEric , on peut former (entre autres) les termes suivants : ( )père Nathalie ,

( ( ))mère père Eric , Eric . Informellement les termes sont les éléments. Ils vivent dans un monde appelé espace des termes ou domaine. Cela sera précisé rigoureusement dans la section I.2 qui traite de sémantique.

b) Les atomes : Ils sont définis par les lois : − Toute proposition (ou prédicat d’arité 0) est un atome. − Si P est un prédicat n-aire, et si 1 2, ,..., nt t t sont n termes, alors

1 2( , ,..., )nP t t t est un atome. − Tout atome s’obtient ainsi (propriété de clôture)

Exemple : Si P est un prédicat binaire, ( , )P a x et ( ( , ), ( ))P g a b f x sont des atomes (dits aussi formules atomiques car nous allons voir que ce sont en particulier des FBFs). Informellement les atomes sont des propositions qui prennent des valeurs V (vrai) ou F (faux), lorsque les variables qu’ils invoquent prennent des valeurs. La véracité de ces propositions dépend en général des valeurs prises par les variables invoquées.

c) Formules bien formées : Elles sont définies par le procédé d’induction : − Les atomes sont des FBFs. − Si 1F et 2F sont des FBFs, alors les formules 1 2( )F F∧ ; 1 2( )F F∨ ; 1 2( )F F⇒ ; 1 2( )F F⇔ ; et 1F¬ sont des FBFs. − Si F est une FBF, et x une variable, ,x F∃ et ,x F∀ sont des FBFs.

(F est alors appelé la portée du quantificateur.) − Propriété de clôture. Exemples : – Les formules , ( , ( , )) ( ( ( ), ))y x P a b P f y b∃ ∀ ∧ ¬ ; , , ( , )x y P x y∀ ∃ ¬ sont des FBFs.

– Les termes ne sont jamais des FBFs !! Les formules x ; ( )f a ; ( ) ( , )f a g x b⇒ ne sont pas des FBFs !!

– Si l’on rajoute au dernier exemple du paragraphe précédent le prédicat unaire CONNAITRE , alors on peut construire (entre autres) les FBFs suivantes :

( ( ))CONNAITRE père Nathalie ; ( ) ( ( ))CONNAITRE Nathalie CONNAITRE mère Eric∧ ¬ .

Remarques et notations : − Les parenthèses n’ayant d’autre utilité que d’encadrer le champ des paramètres d’un prédicat, d’une fonction, ou d’un connecteur et d’imposer les priorités dans leur évaluation, on pourra dans certains cas où ils ne présentent aucune utilité ou ambiguïté sémantique commettre des abus de notation les concernant : Ainsi les formules suivantes sont des FBFs : ( ( , ))P a x ; ( ( , ))P a b¬ ; ( , ) ( , )P a x P b b∨ ; ( , ) , ( , )P a a x P x x⇒∃ .

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 11: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

9

Nous pourrons employer les ‘crochets’ « [,] » en lieu et place de parenthèses pour accroître la lisibilité des formules.

− De la même façon, lorsque nous aurons parlé de l’équivalence des FBFs, et des règles d’associativité de ∧ ainsi que de∨ , nous aurons coutume de noter 1 2 3F F F∧ ∧ (forme conjonctive) au lieu de 1 2 3( ( ))F F F∧ ∧ ou de 1 2 3(( ) )F F F∧ ∧ ; de même nous noterons

1 2 3F F F∨ ∨ (forme disjonctive). Mais attention, 1 2 3F F F∧ ∨ n’est pas une FBF !!

− Toute FBF de la forme F ou F¬ , où F est un atome est appelé un littéral. Dans le premier cas on parlera de littéral positif et dans le second cas de littéral négatif. I.1.3 Représentation d’une FBF sous la forme d’un arbre

Il peut-être plus pratique (ou du moins plus visuel) de représenter un FBF sous la forme d’un arbre. Cela a l’avantage d’éviter l’utilisation de parenthèses -souvent peu lisibles. Les sommets de cet arbre sont labellés : ils sont représentés par des cercles (ou nœuds, ou sommets) contenant le symbole de notre alphabet d’une constante, variable, prédicat, fonction, connecteur ou bien d’un quantificateur suivi d’une variable ( x∃ ou y∀ ) (seuls les séparateurs sont omis). L’arbre se lit de haut en bas. Si un sommet a pour label un symbole de fonction, prédicat (d’arité >0), connecteur ou quantificateur, d’arité n, il part de la base de ce sommet n arêtes qui le relient à ses arguments. Si un sommet a pour label une variable ou une constante, il ne part de sa base aucune arête ; de même si il s’agit d’une proposition : on dit que c’est une feuille. Le nœud situé le plus en haut est appelé la racine de l’arbre. Le mieux est d’illustrer sa construction sur des exemples : Exemples : Dans le dernier paragraphe nous avons considéré les FBFs suivantes :

, , ( , )x y P x y∀ ∃ ¬ , ( , ( , )) ( ( ( ), ))y x P a b P f y b∃ ∀ ∧ ¬

La FBF , , ( , )x y P x y∀ ∃ ¬ donne le graphe suivant :

La FBF , ( , ( , )) ( ( ( ), ))y x P a b P f y b∃ ∀ ∧ ¬ donne le graphe qui suit. Cet exemple est bien plus instructif :

x∀

¬

y

y∃

x

P

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 12: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

10

On voit sur cet exemple que la construction de l’arbre suit la construction inductive de la formule : dans l’exemple qui précède la formule , ( , ( , )) ( ( ( ), ))y x P a b P f y b∃ ∀ ∧ ¬ est construite à partir des termes a, b, f(y), en formant d’abord les atomes P (a, b), et ( ( ), )P f y b , puis en considérant les FBFs , ( , )x P a b∀ et ( ( ), )P f y b¬ , dont on prend la conjonction, puis finalement, en quantifiant existentiellement la variable y. I.1.4) Portée d’un quantificateur, variable libre ou liée

a) Portée d’un quantificateur

Considérons une FBF notée φ et supposons qu’elle invoque un quantificateur quelconque ; on suppose sans perte de généralité que φ invoque le quantificateur ∀ (i.e. une occurrence de ∀ apparaît dansφ ). Considérons l’arbre construit à partir deφ . Il a un sommet de label x∀ (par exemple) correspondant à l’occurrence considérée de ∀ dansφ . De la base de ce noeud se prolonge une seule arête qui vient finir sur un autre sommet. Ce dernier sommet est la racine d’un sous arbre maximal ; et ce sous arbre (ou rameau) correspond à une sous-formule G deφ . Cette sous-formule G est la portée du quantificateur ∀ (ou x∀ ) considéré.

f a b

P

y∃

x∀ ¬

P

y

b

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 13: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

11

Exemple : Dans la FBF : , ( , ( ) , ( ( ) ( )))x x P x y P y P x∀ ∃ ∧∀ ∨

La portée du premier quantificateur x∀ est : ( , ( ) ( , ( ( ) ( )))x P x y P y P x∃ ∧ ∀ ∨

La portée du deuxième quantificateur x∃ est : P(x)

La portée du dernier quantificateur y∀ est : ( ( ) ( ))P y P x∨

b) Variable libre, variable liée Considérons maintenant une FBF φ et une variable y ayant une occurrence dansφ . L’occurrence de y dansφ est dite libre si elle n’est pas située dans la portée d’un quantificateur gouvernant y (i.e. y∀ ou y∃ ), sinon elle dite liée. Une variable est dite libre si une de ses occurrences est libre, sinon elle est dite liée. Exemple : Dans la précédente FBF : , ( , ( ) , ( ( ) ( )))x x P x y P y P x∀ ∃ ∧∀ ∨ toutes les variables sont liées. Alors que dans ( , ( ) ( , ( ( ) ( )))x P x y P y P x∃ ∧ ∀ ∨ la première occurrence de x est liée, tandis que sa deuxième occurrence est libre : x est une variable libre. Quant à la variable y, elle est bien sûr liée.

x∀

x∃ y∀

y x

P P

P

x

Portée de x∀

,x∃

,x∀,( , ( ) ,( ( ) ( )))x x P x y P y P x∀ ∃ ∧∀ ∨

,y∀Portée de x∃

Portée de y∀

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 14: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

12

I.2) Sémantique du calcul des prédicats I.2.1) Réalisation d’un langage Donné un langage L du calcul des prédicats, une réalisation (ou modèle, ou interprétation) M de L est la donnée de :

− Un ensemble E, appelé le domaine. − Pour chaque constante c du langage L un élément c de E. − Pour chaque fonction f d’arité n, une application f de nE dans E.

− Pour chaque prédicat P d’arité n>0, une application P de nE dans{ },V F .

− Pour chaque proposition P une valeur prise dans{ },V F . Remarque : En particulier si M est un modèle de L et si l’on ajoute des symboles de constante au langage L, M reste un modèle de L. Ce fait sera utilisé dans les procédures de transformation de formules (cf. §II.1). Exemples : Soit le langage L constitué d’une variable z, d’une constante c, d’une fonction f d’arité 1, et d’un prédicat binaire P. On considère les réalisations suivantes de L :

a) *E += ; 1c = ; 2( )f x x= ; ( , ) :P x y x y< . b) E est une population ; c est Paul, ( )f x est le père de x, et ( , )P x y : x est plus jeune que y. c) E est l’ensemble des jours de l’année ; c est le 21 juin, ( )f x est le jour qui succède à x, et ( , )P x y : le jour x est plus court que le jour y (du levée au coucher du soleil). d) E est la réunion de l’ensemble des points du plan privés de l’origine, et des droites passant par l’origine. c est l’axe des abscisses, f associe à tout point la droite passant par ce point et par l’origine, et à toute droite elle-même. ( , )P x y : x et y sont des droites, et y est strictement plus pentue que x.

I.2.2) Valeur d’une formule a) Assignation de variables Soit M une réalisation du langage L . On appelle assignation de variables, toute application d’une partie finie de l’ensemble des variables de L dans le domaine E. Exemple : Si L a pour variables 1 2 3, , ,...x x x , et si le champ est , alors 1 : 1x = − , 3 : 2x = est une assignation des variables 1x et 3x aux valeurs -1 et 2. Cela signifie qu’on leur attribue ces valeurs. C’est l’analogue de ce que l’on noterait en algorithmique : 1 1x ←− et 3 2x ← .

Considérons un terme t du langage. Ce terme invoque certaines variables. Considérons une assignation α des variables invoquées dans t, ou tout du moins qui s’applique à toutes les variables de t. Alors donnée une telle assignation de variables on peut

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 15: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

13

naturellement donner une valeur t à t, (c'est-à-dire lui associe un élément t E∈ , on dit évaluer t). Pour cela il suffit de remplacer dans t toute constante c par sa valeur c , toute fonction f par l’application f , et toute variable par la valeur qui lui est assignée.

b) Valeur d’une formule dans un modèle pour une assignation On se propose d’évaluer une formule φ dans un modèle donné, pour une assignation

donnée de ses variables libres (notons α cette assignation), c'est-à-dire lui attribuer une valeur V (vrai) ou F (faux) dépendant deα . Pour cela on procède par induction :

− Si φ est un atome, 1( ,..., )nP t tφ = . L’assignation α donne les valeurs 1,..., nt t aux termes 1,..., nt t . Alors φ prend la valeur 1( ,..., )nP t t (qui est V ou F). − Les connecteurs logiques sont évalués selon les règles données par les tables de vérité :

P P¬ P Q P Q∨ P Q P Q∧ V F V V V V V V F V F V V F V F V F V V F F

F F F F F F P Q P Q⇒ P Q P Q⇔ V V V V V V F V V F V F V F F V F F F F V F F V

− Si F est de la forme : , ( )x P x∀ (où P est une FBF ayant (entre autres) x pour variable libre) ; F est vrai si ( )P x est vrai quelle que soit l’assignation de x. − Si F est de la forme : , ( )x P x∃ ; F est vrai si pour une certaine assignation de x,

( )P x est vrai.

Exemple : Si l’on reprend le langage de l’exemple ci-dessus, et la formule ( , ( ))P x f x . − Dans le modèle a), c’est une formule vraie pour toute assignation qui donne à x une

valeur supérieure à 1, et fausse sinon. La formule close , ( , ( ))x P x f x∃ est vraie et , ( , ( ))x P x f x∀ est fausse.

− Dans le modèle b), elle est vraie pour toute assignation de x : un fils est toujours plus jeune que son père. En particulier la formule , ( , ( ))x P x f x∀ est vraie.

− Dans le modèle c) la formule est vraie pour une assignation donnant à x une valeur comprise entre le solstice d’hiver et le solstice d’été.

− Dans le modèle d) la formule est fausse quelle que soit l’assignation considérée. Si x est un point ( , ( ))P x f x est par définition faux, et si x est une droite ( )f x x= a même pente que x.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 16: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

14

c) Valeur d’une formule dans un modèle

Une formule 1( ,..., )nx xφ invoquant des variables libres 1,..., nx x est vraie dans M si elle est vraie pour toute assignation de 1,..., nx x ; on note

1( ,..., )nx xφM et l’on dit que M est un modèle de 1( ,..., )nx xφ . On dit qu’elle est fausse dans M lorsque sa négation est vraie dans M (c’est alors un contre modèle). En général une formule non close n’est ni vraie ni fausse dans M.

Puisque la validité d’une formule close φ dans un modèle M est indépendante de toute assignation de variable, elle ne peut être que vraie ou fausse. Si φ est vraie on note :

M φ et l’on dit que M est un modèle deφ . Sinon (elle est fausse) on dit que c’est un contre modèle. Tout modèle de φ est un contre modèle de φ¬ et réciproquement. Exemple : Avec le même exemple que précédemment, la formule ( , ( ))P x f x admet pour modèle b) et pour contre modèle d). Dans les cas a) et c) elle n’est ni vraie ni fausse. I.2.3) Formules valides, inconsistantes, équivalentes Si la formule φ est vraie dans tout modèle du langageL , on dit que c’est une formule valide ou encore une tautologie (autrement on dit qu’elle est invalide). On note :

φ Si elle est fausse dans tout modèle on dit que la formule est inconsistante (sinon on dit qu’elle est consistante). Dans ce cas sa négation est une formule valide. Exemples : La formule P P∨¬ est valide (toujours vraie), la formule P P∧¬ est inconsistante (toujours fausse). La formule , ( )x P x∃ est consistante (prendre pour domaine l’ensembles des êtres humains, et pour P : être une femme) et invalide (prendre le même domaine et P : mesure 10 mètres de haut). La formule ( , ( ))P x f x considérée comme exemple plus haut est aussi consistante et invalide.

Si deux formules φ et ϕ sont vraies dans les mêmes modèles, on dit qu’elles sont équivalentes. On note φ ϕ≡ . Remarque : On peut facilement montrer (exercice !) que P Q≡ (les formules P et Q sont équivalentes) si et seulement si P Q⇔ (la formule P Q⇔ est valide).

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 17: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

15

I.2.4) Théorie, conséquence logique

Dans la suite on fixe un langage L des prédicats du 1er ordre.

Définitions : – Une théorie T est la donnée d’un ensemble fini de FBFs 1 2{ , ,..., }nF F F=T .

– Un modèle (ou réalisation, ou interprétation) de la théorie T est un modèle du

langageL , qui est un modèle pour chaque formule deT . De façon équivalente un modèle de

T n’est rien d’autre qu’un modèle de la formule conjonctive 1 2 ... nF F F∧ ∧ ∧ .

– Une théorie est non contradictoire ou consistante si elle admet un modèle.

Sinon elle est inconsistante.

– Une formule φ est une conséquence logique de la théorie T si tout modèle de

T est aussi un modèle de F. On note 1 2{ , ,..., }nF F F φ .

Exemples : − Considérons la théorie T suivante :

{ _ _ ( , )Est père de michel anne ; _ _ ( , )Est père de paul michel ;

, , ,( _ _ ( , ) _ _ ( , )) _ _ ( , )x y z Est père de x y Est père de y z Est grand père de x z∀ ∀ ∀ ∧ ⇒ − }

Elle est non contradictoire (il est facile d’en construire un modèle). La formule :

_ _ ( , )Est grand père de paul anne− en est une conséquence logique.

− La théorie { }, ( ); , ( ); , ( ( ) ( ))x P x y Q y x P x Q x∀ ∀ ∃ ¬ ⇒ est inconsistante. En

effet la formule , (( ( ) ( ))x P x Q x∃ ¬ ⇒ est équivalente à , ( ( ) ( ))x P x Q x∃ ∧¬ qui a pour

conséquence logique , ( )x Q x∃ ¬ elle-même équivalente à la formule ( , ( ))y Q y¬ ∀ qui

fait apparaître une contradiction avec la formule , ( )y Q y∀ .

Théorème (de la déduction): La FBFφ est conséquence logique de la théorie 1 2{ , ,..., }nF F F si

et seulement si la formule 1 2( ... )nF F F φ∧ ∧ ∧ ⇒ est valide. En d’autres termes,

1 2{ , ,..., }nF F F φ si et seulement si 1 2( ... )nF F F φ∧ ∧ ∧ ⇒ .

Preuve : Supposons que φ soit une conséquence logique de 1 2{ , ,..., }nF F F , c'est-à-dire que

1 2{ , ,..., }nF F F φ . Alors tout modèle qui satisfait 1 2{ , ,..., }nF F F satisfait aussiφ , et donc la

formule 1 2( ... )nF F F φ∧ ∧ ∧ ⇒ est valide. Réciproquement si 1 2( ... )nF F F φ∧ ∧ ∧ ⇒ ,

alors dans tout modèle, on ne peut pas avoir à la fois 1 2, ,F F …, et nF et φ¬ . Ainsi tout modèle

de 1 2{ , ,..., }nF F F est aussi un modèle de φ .CQFD

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 18: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

16

Remarque (importante !) : Voilà trois façons d’affirmer que la formuleφ est une

conséquence logique de la théorie 1 2{ , ,..., }nF F F :

• La formule 1 2( ... )nF F F φ∧ ∧ ∧ ⇒ est valide.

• La formule 1 2 ... nF F F φ∧ ∧ ∧ ∧¬ est inconsistante (c’est la négation de la

précédente).

• La théorie { }1 2, ,..., ,nF F F φ¬ est inconsistante.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 19: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

17

I.2.5) Quelques formules équivalentes

On rappelle que deux formules φ et ϕ sont dites équivalentes lorsque elles admettent les mêmes modèles. Voici quelques exemples de formules équivalentes :

Formule Formule équivalente

Appellation (éventuelle)

P P¬¬

P Q⇒ P Q¬ ∨

P Q∧ Q P∧ Commutativité de ∧

P Q∨ Q P∨ Commutativité de ∨

P Q⇔ Q P⇔ Commutativité de ⇔

( )P Q¬ ∨ P Q¬ ∧ ¬

( )P Q¬ ∧ P Q¬ ∨ ¬ Lois de De Morgan

( )P Q R∧ ∧ ( )P Q R∧ ∧ Associativité de ∧

( )P Q R∨ ∨ ( )P Q R∨ ∨ Associativité de ∨

( )P Q R∨ ∧ ( ) ( )P Q P R∨ ∧ ∨ Distributivité à gauche de ∨ sur ∧

( )P Q R∧ ∨ ( ) ( )P R Q R∨ ∧ ∨ Distributivité à droite de ∨ sur ∧

( )P Q R∧ ∨ ( ) ( )P Q P R∧ ∨ ∧ Distributivité à gauche de ∧ sur ∨

( )P Q R∨ ∧ ( ) ( )P R Q R∧ ∨ ∧ Distributivité à droite de ∧ sur ∨

P Q⇔ ( ) ( )P Q Q P⇒ ∧ ⇒

P Q⇒ Q P¬ ⇒¬ Loi de contraposition

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 20: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

18

Formule Formule équivalente

, ( )x P x∀ , ( )y P y∀

, ( )x P x∃ , ( )y P y∃

, ( )x P x¬∀ , ( )x P x∃ ¬

, ( )x P x¬∃ , ( )x P x∀ ¬

,( ( ) ( ))x P x Q x∀ ∧ , ( ) , ( )x P x x Q x∀ ∧ ∀

,( ( ) ( ))x P x Q x∃ ∨ , ( ) , ( )x P x x Q x∃ ∨ ∃

, ( )x P x Q∀ ∧ ,( ( ) )x P x Q∀ ∧

, ( )Q x P x∧ ∀ ,( ( ))x Q P x∀ ∧

, ( )x P x Q∀ ∨ ,( ( ) )x P x Q∀ ∨

, ( )Q x P x∨ ∀ ,( ( ))x Q P x∀ ∨

, ( )x P x Q∃ ∧ ,( ( ) )x P x Q∃ ∧

, ( )Q x P x∧ ∃ ,( ( ))x Q P x∃ ∧

, ( )x P x Q∃ ∨ ,( ( ) )x P x Q∃ ∨

, ( )Q x P x∨ ∃ ,( ( ))x Q P x∃ ∨

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 21: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

19

I.3) Système axiomatique, règles d’inférence

I.3.1) Définition

Une règle d’inférence est une règle permettant à partir d’une ou plusieurs FBFs de produire (on dit « déduire ») une autre FBF. Une règle d’inférence est dite saine si la formule déduite est toujours une conséquence logique des formules dont on l’a déduit. Dans la pratique, toutes les règles d’inférence que nous considérerons seront saines. Exemples : – Le Modus Ponens est une règle saine qui à partir des formules P et P Q⇒ déduit la formule Q.

− Le Modus Tollens est une règle saine qui à partir des formules Q¬ etP Q⇒ déduit la formule P¬ .

− Nous verrons dans le chapitre 2 une règle d’inférence saine appelée Principe de Résolution, qui sera fondamentale dans notre étude. C’est une généralisation de la règle d’inférence qui déduit A B∨ à partir de X A∨ et de X B¬ ∨ .

Un système axiomatique est la donnée d’une théorie c'est-à-dire d’un ensemble de FBFs du langage L (appelées les axiomes, ou les hypothèses), et de règles d’inférences. Une preuve est une suite finie de formules telle que chaque formule est soit un axiome, soit déduit de formules qui le précèdent par les règles d’inférence. La dernière formule de la preuve est le théorème que l’on vient de ‘prouver’. On demande à un système axiomatique d’être non contradictoire, c'est-à-dire que l’ensemble de ses axiomes soit non contradictoire. On ne considérera dans la suite que des systèmes axiomatiques non contradictoires. Exemple : Considérons la théorie constituée des axiomes : { }; ;P P Q Q R⇒ ⇒ et d’une règle d’inférence qui est le modus ponens : la formule R en est un théorème : une preuve est donnée par : 1– P 2– P Q⇒ 3– Q (déduit de 1 et 2 par modus ponens) 4– Q R⇒ 5– R (déduit de 3 et 4 par modus ponens). I.3.2) Système axiomatique pour le calcul des prédicats Considérons le système axiomatique suivant. Nous le noterons dans la suite S . Règles d’inférence :

Le Modus Ponens : Déduit la formule G des formules F et ⇒F G .

La généralisation : Déduit∀ , ( )x P x , de la formule ( )P x .

La substitution de formules : Si φ est une formule invoquant un prédicat P d’arité n, et ϕ est

une formule ayant n variables libres (ou plus) telle que ses variables libres (resp. liées) sont

désignés par d’autres lettres que les variables liées (resp. libres) de φ , et telle que si dans φ ,

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 22: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

20

P est dans la portée d’un quantificateur quantifiant une variable, cette variable n’est pas

invoquée dans ϕ ; alors on peut dans φ changer chaque occurrence de P par ϕ .

La substitution de termes : Si t est un terme quelconque, on peut déduire ( )tφ de , ( )x xφ∀

Axiomes du calcul des prédicats :

( )P Q P⇒ ⇒ ( ( )) (( ) ( ))P Q R P Q P R⇒ ⇒ ⇒ ⇒ ⇒ ⇒

( )P Q P∧ ⇒ ( )P Q Q∧ ⇒

( ) (( ) ( ( )))P Q P R P Q R⇒ ⇒ ⇒ ⇒ ⇒ ∧ ( )P P Q⇒ ∨ ( )Q P Q⇒ ∨

( ) (( ) (( ) ))P R Q R P Q R⇒ ⇒ ⇒ ⇒ ∨ ⇒ ( ) ( )P Q Q P⇒ ⇒ ¬ ⇒¬

P P⇔¬¬ ( ) (( ) ( ))P Q P Q Q P⇔ ⇒ ⇒ ∧ ⇒ (( ) ( )) ( )P Q Q P P Q⇒ ∧ ⇒ ⇒ ⇔

, ( ) , ( )x P x x P x∃ ⇔ ¬∀ ¬ , ( ( )) ( , ( ))x P Q x P x P x∀ ⇒ ⇒ ⇒∀

I.3.3) Complétude du calcul des prédicats

Clairement, avec cette définition, tout théorème de S est une conséquence logique des axiomes. Puisque ces derniers sont des formules valides, il s’ensuit que tout théorème est une formule valide. Il est naturel de se poser la question de la réciproque : toute formule valide est elle un théorème de S ? Cela présenterait un avantage certain : il semble plus évident pour montrer qu’une formule est valide de chercher à établir une preuve que de tenter de montrer qu’elle est vraie dans tout modèle (qui sont bien sur en nombre infini). Cela présenterait en outre un résultat remarquable par sa portée : une totale adéquation entre le concept syntaxique de preuve, et le concept sémantique de validité (ou vérité). Un tel résultat est vrai ; le théorème suivant l’établit. C’est un résultat de complétude (au sens de la déduction) : Pour montrer qu’une formule est valide il suffit d’en exhiber une preuve (ce qui est cependant en général hautement non trivial).

Théorème de complétude [Gödel, 1930]: Considérons ce système axiomatique S du calcul

des prédicats. Alors,

− Une FBF est valide si et seulement si c’est un théorème deS .

−Donnée une théorieT , une formule est une conséquence logique de T si et seulement si c’est un théorème dans le système axiomatique obtenu à partir de S en rajoutant aux axiomes les formules deT .

Nous admettrons la preuve. Elle est délicate.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 23: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

21

I.3.3) Indécidabilité du calcul des prédicats

Peut-on établir un algorithme qui puisse décider pour toute FBF, si c’est une formule valide (décidabilité du calcul des prédicats) ? Le théorème de complétude du paragraphe précédent semble apporter quelque espoir dans cette direction : pour montrer qu’une formule est valide, il suffit d’en exhiber une preuve, ce qui semblerait plus facilement implémentable que de tester si elle est vraie dans tout modèle. Ce résultat est cependant faux comme l’établit le résultat suivant. Théorème d’indécidabilité [Church, 1931] Le calcul des prédicats est indécidable. Il n’existe pas d’algorithme permettant de décider pour n’importe quelle formule si elle est ou non valide. Remarques : − La démonstration nécessite de définir mathématiquement la notion d’algorithme. Cela a été fait dans les années 30, à travers les notions de fonctions récursives et de machine de Turing (Church, Turing, Godel). Informellement il faut comprendre par algorithme une procédure qui prend en entrée certaines valeurs (dites initiales) et produit (toujours) une réponse constituée de certaines valeurs, et cela de façon déterministe (la réponse ne dépend que des valeurs initiales). − La non existence d’un tel algorithme est dans un sens très fort : il ne s’agit pas seulement d’affirmer que l’on ne peut pas trouver un tel algorithme mais qu’il n’existe pas : on pourrait imaginer qu’il existe un algorithme qui nécessite pour être écrit l’utilisation de plus de symboles qu’il n’y a d’atomes dans l’univers. Ce n’est pas le cas : Il n’existe pas !!!

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 24: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

22

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 25: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

23

Chapitre II

Procédure de preuve par réfutation : Le principe de résolution

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 26: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

24

Introduction

Nous établissons dans cette partie une procédure de démonstration automatique

célèbre initiée par Robinson (1965), basée sur le principe de résolution. Elle constitue les fondements théoriques du langage de programmation logique PROLOG développé au début des années 70 par A.Colmerauer, P.Roussel et le groupe d’intelligence artificielle de Marseille (U2, Luminy).

Qu’entendons nous par « procédure de démonstration automatique » ? Le souhait serait de construire un algorithme qui puisse décider si une formule quelconque donnée est une conséquence logique d’hypothèses (données), ou de façon équivalente (avec le théorème de la déduction §I.2.4) de décider si une formule donnée est valide. Seulement nous avons vu dans la partie précédente (théorème d’indécidabilité, §I.3.3) qu’un tel algorithme n’existe pas !! Ce que nous allons faire, c’est construire une procédure qui va ‘tester’ si une formule donnée φ est valide, en ce sens :

− Si φ est valide (ou de façon équivalente si φ est conséquence logique de certaines hypothèses préalablement posées) alors la procédure finit par s’arrêter en donnant une réponse positive. − Sinon, la procédure risque de tourner indéfiniment sans jamais apporter de réponse à l’utilisateur.

Cette procédure ne constitue pas un algorithme ! Si la formule entrée est invalide la procédure risque de tourner indéfiniment, et l’utilisateur restera indécis quant à la validité de la formule, ne pouvant savoir à un instant donné si la formule est invalide ou si le programme n’a tout simplement pas encore achevé son implémentation. La seule utilité de cette procédure réside dans le fait que lorsque la formule est valide elle finit par l’établir ; bref elle démontre les théorèmes vrais, mais ne sait pas répondre à la question « ce théorème est-il vrai ?». Avec le théorème d’indécidabilité c’est définitivement le meilleur résultat que nous pouvons établir dans cette direction : il constitue un résultat de « semi-décidabilité ».

Dans la pratique la procédure que nous allons établir ne recherche pas si une formule est valide mais si elle est inconsistante. Mais puisque φ est valide seulement lorsque φ¬ est inconsistante cette approche est équivalente.

La démarche procède en plusieurs étapes. Tout d’abord nous transformons une formule en une formule d’écriture plus simple qui à défaut d’être équivalente a même consistance (i.e. est inconsistante si et seulement si la formule initiale est aussi inconsistante). C’est l’objet de la section 1. La formule obtenue est sous forme prénexe universelle (les quantificateurs sont tous universels et placés ‘devant’) et la matrice (sous-formule obtenue en supprimant les quantificateurs) est une conjonction de clauses (on appelle clause une disjonction de littéraux). L’inconsistance de la formule initiale se ramène à l’inconsistance de l’ensemble constitué des clauses de la formule obtenue.

On introduit alors une règle d’inférence (saine) appelée le principe de résolution qui ne s’applique qu’à des clauses, modelé sur la règle : « X A∨ et X B¬ ∨ implique A B∨ ». Pour l’appliquer à des clauses quelconques il est nécessaire d’unifier les littéraux (§II.2.2), c'est-à-dire de faire apparaître par substitution de termes aux variables invoquées d’éventuels littéraux X et X¬ (où X est un atome quelconque), dits complémentaires. Le résultat fondamental de cette section, est que lorsque un ensemble de clauses est inconsistant, on doit aboutir par applications successives du principe de résolution à la clause vide (§II.2.4). C’est un résultat de complétude pour la réfutation. Il ouvre la voie à une procédure de preuve par réfutation, qui lorsqu’un ensemble de clauses est inconsistant parvient à le déterminer. C’est l’objet de toute la section 2.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 27: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

25

A ce stade la procédure de preuve par réfutation est non implémentable car non déterministe : elle nécessite parfois un choix de l’utilisateur qui est déterminant quant à l’issue de la procédure. L’objet de la section 3 est d’affiner cette méthode en considérant des stratégies permettant de lever ce non-déterminisme : on ne nécessitera plus l’intervention d’un utilisateur. En particulier nous étudierons la stratégie utilisée par PROLOG, qui ne s’applique qu’à une classe plus restreinte de clauses dites clauses de Horn (ce sont les clauses invoquant au plus un littéral positif).

Enfin dans la dernière section nous illustrerons ces méthodes par quelques exemples.

II.1) Ecriture sous forme clausale

Dans cette section nous établissons un algorithme permettant de transformer une FBF quelconque en une autre FBF plus simple (dite sous forme clausale) qui ait même consistance. Il procède en 3 étapes. Tout d’abord on transforme une FBF en un FBF sous forme prénexe (tous les quantificateurs devant !) qui lui soit équivalente (§ II.1.1). Ensuite on éliminera les quantificateurs existentiels en introduisant de nouveaux symboles de constantes et de fonctions : c’est le procédé de Skolémisation (§ II.1.2). Le théorème de Skolem (théorème §II.1.3) établit que la formule obtenue a même consistance que la formule initiale. C’est ici que l’on perd l’équivalence ! Finalement (§ II.1.3), on transforme la matrice (sous-formule obtenue en supprimant tous les quantificateurs) en une conjonction de clauses : on obtient la forme clausale souhaitée. Elle a même consistance que la FBF initiale. L’algorithme établi sera amplement utilisé dans la suite de ce cours. II.1.1) Formes prénexes

Une FBF et sous forme prénexe si elle s’écrit : 1 1 2 2, ,..., ,n nQ x Q x Q x P

où les symboles iQ représentent n’importe quel quantificateur, et P est une formule n’invoquant aucun quantificateur (bref tous les quantificateurs sont devant). La sous-formule (non bien formée) 1 1 2 2, ,..., ,n nQ x Q x Q x est appelée le préfixe, tandis que la formule (bien formée) P est appelée la matrice. Exemple : La formule , , ,(( ( ) ( )) ( ))x y z P x Q y R z∀ ∃ ∀ ⇒ ∨ où P,Q,R, sont des prédicats unaires est sous forme prénexe, tandis que , ,(( ( ) ( )) , ( ))x y P x Q y z R z∀ ∃ ⇒ ∨ ∀ n’est pas sous forme prénexe. Théorème : Pour toute FBF il existe une FBF équivalente sous forme prénexe. De plus cette formule peut-être déterminée grâce à un algorithme. Démonstration : Appliquer la méthode exposée ci-dessous. Elle peut toujours s’appliquer, et à partir d’une formule quelconque aboutit à une formule sous forme prénexe qui lui est équivalente. CQFD.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 28: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

26

Algorithme d’écriture d’une formule sous forme prénexe : On suppose donnée une formule. On va construire une formule sous forme prénexe qui lui est équivalente.

a) Elimination des connecteurs ⇒ et⇔ . On élimine d’abord tous les connecteurs⇔ en utilisant l’équivalence :

( ) ( )P Q P Q Q P⇔ ≡ ⇒ ∧ ⇒

Puis on élimine tous les connecteurs ⇒ en utilisant la formule :

P Q P Q⇒ ≡ ¬ ∨

b) Accoler tous les connecteurs ¬ aux atomes.

Pour ce faire utiliser les formules suivantes :

P P¬¬ ≡

Lois de De Morgan : ( )( )G H G HG H G H¬ ∨ ≡ ¬ ∧ ¬¬ ∧ ≡ ¬ ∨ ¬

, ( ) , ( ), ( ) , ( )x P x x P xx P x x P x

¬∃ ≡ ∀ ¬¬∀ ≡ ∃ ¬

c) Distinguer les variables.

On fait en sorte que chaque quantificateur ‘gouverne’ une variable de nom original. Pour cela on utilise les équivalences :

, ( ) , ( ), ( ) , ( )x P x y P yx P x y P y

∃ ≡ ∃∀ ≡ ∀

Renommer aussi les variables de façon à ce qu’aucune variable libre ne porte le même nom qu’une variable liée. Remarque : On peut pour cela ajouter au langage de nouvelles variables. Si M était un modèle pour notre langage, il le demeure après le rajout de ces variables.

d) Eliminer les quantificateurs inutiles On élimine les quantificateurs ne servant à rien (c'est-à-dire quantifiant des variables qui n’apparaissent pas) :

Si Q n’invoque pas la variable libre x

,,x Q Qx Q Q

∀ ≡∃ ≡

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 29: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

27

e) Faire passer les quantificateurs devant. Pour cela utiliser les équivalences qui suivent, où Q représente une formule qui n’invoque pas d’occurrences libres de la variable x:

, ( ) ,( ( ) ), ( ) ,( ( ) ), ( ) ,( ( ) ), ( ) ,( ( ) )

x P x Q x P x Qx P x Q x P x Qx P x Q x P x Qx P x Q x P x Q

∃ ∨ ≡ ∃ ∨∃ ∧ ≡ ∃ ∧∀ ∨ ≡ ∀ ∨∀ ∧ ≡ ∀ ∧

, ( ) ,( ( )), ( ) ,( ( )), ( ) ,( ( )), ( ) ,( ( ))

Q x P x x Q P xQ x P x x Q P xQ x P x x Q P xQ x P x x Q P x

∨ ∃ ≡ ∃ ∨∧ ∃ ≡ ∃ ∧∨ ∀ ≡ ∀ ∨∧ ∀ ≡ ∀ ∧

Il s’agit de la dernière étape ! La FBF obtenue vérifie les propriétés suivantes :

− Elle est sous forme prénexe. − Chaque quantificateur quantifie une variable de nom original, et chaque variable libre à un nom différent des variables liées. − La matrice se construit à partir de littéraux, de conjonctions ∧ , et de disjonctions ∨ (avec emploi de parenthèses).

Exemple : on considère la formule suivante :

,[ ( ) , , ( ( , ) , ( , , ))]x P x y x Q x y z R a x y∀ ∨ ∀ ∃ ¬ ⇒ ∀

On applique tout d’abord l’étape a) qui permet de supprimer tous les connecteurs⇒ :

,[ ( ) , , ( ( , ) , ( , , ))]x P x y x Q x y z R a x y∀ ∨ ∀ ∃ ¬ ¬ ∨ ∀

Après avoir appliqué l’étape b) (accoler les ¬ aux atomes), on obtient :

,[ ( ) , ,( ( , ) , ( , , ))]x P x y x Q x y z R a x y∀ ∨ ∀ ∃ ∧ ∃ ¬

On applique ensuite l’étape c) (renommer les variables) :

,[ ( ) , ,( ( , ) , ( , , ))]x P x y u Q u y z R a u y∀ ∨ ∀ ∃ ∧ ∃ ¬

Puis l’étape d) (éliminer les quantificateurs inutiles) :

,[ ( ) , ,( ( , ) ( , , ))]x P x y u Q u y R a u y∀ ∨ ∀ ∃ ∧ ¬

On applique finalement l’étape e) pour faire passer les quantificateurs devant. On obtient la forme prénexe :

, , ,[ ( ) ( ( , ) ( , , ))]x y u P x Q u y R a u y∀ ∀ ∃ ∨ ∧ ¬ Remarques : − On peut aussi considérer une dernière étape facultative, permettant de réordonner l’agencement des quantificateurs, à l’aide des formules :

, , , ,, , , ,x y A y x Ax y A y x A

∀ ∀ ≡ ∀ ∀∃ ∃ ≡ ∃ ∃

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 30: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

28

Attention, les formules , ,x y A∀ ∃ et , ,y x A∃ ∀ ne sont pas équivalentes. Par exemple si on prend pour domaine l’ensemble des entiers relatifs, la formule :

, ,( 0)x y x y∀ ∃ + = est vraie (tout nombre a un opposé), tandis que :

, ,( 0)y x x y∃ ∀ + = est une assertion fausse, puisque que l‘on ne peut pas trouver d’entier y, tel que pour tout x,

0x y+ = . − Dans l’exemple considéré ci-dessus, la formule est équivalente à l’autre forme

prénexe : , , ,[ ( ) ( ( , ) ( , , ))]y x u P x Q u y R a u y∀ ∀ ∃ ∨ ∧ ¬ , (on intervertit x∀ et y∀ ) mais n’est pas équivalente à : , , ,[ ( ) ( ( , ) ( , , ))]x u y P x Q u y R a u y∀ ∃ ∀ ∨ ∧ ¬ (on a interverti y∀ et u∃ ).

− Parfois on peut intervertir les quantificateurs∀ et ∃ . Par exemple :

, , ( ( ) ( )) , ( ( ) , ( ))x y P x Q y x P x y Q y∀ ∃ ∨ ≡ ∀ ∨ ∃ ( , ( ) , ( ))x P x y Q y≡ ∀ ∨ ∃ , ( , ( ) ( ))y x P x Q y≡ ∃ ∀ ∨ , , ( ( ) ( ))y x P x Q y≡ ∃ ∀ ∨

En fait si on y regarde de plus près on peut s’apercevoir que la permutation entre x∀ et y∃ est possible chaque fois qu’il n’y a pas de littéral dans leur portée invoquant à la fois les variables x et y.

− Comme nous venons de le vérifier sur cet exemple, il existe en général plusieurs formes prénexes équivalentes. II.1.2) Formes normales conjonctives Définitions : Une clause est une formule qui est soit un littéral, soit une disjonctions de littéraux.

Considérons la forme prénexe :

1 1 2 2, ,..., ,n nQ x Q x Q x P Si la matrice P est une conjonction de clauses alors on dit que la formule est sous forme normale conjonctive.

littéraux

∨ ∨ ∨

1L 2L 9L8L7L6L5L4L3L

clauses

∧ Conjonction de clauses

1L 2L 3L

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 31: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

29

Théorème : Pour toute formule il existe une formule équivalente qui s’écrit sous forme normale conjonctive. De plus il existe un algorithme permettant de déterminer cette formule. Preuve : Transformer d’abord la formule en une forme prénexe équivalente (en utilisant l’algorithme du paragraphe précédent). Puis appliquer l’algorithme décrit ci-dessous à la matrice obtenue. CQFD.

Algorithme d’écriture sous forme normale conjonctive Après avoir appliqué l’algorithme précédent, notre formule est sous forme prénexe, et la matrice ne comporte que des connecteurs logiques ∧ et ∨ appliqués à des littéraux. Pour parvenir à une forme normale conjonctive on applique autant de fois que possible les équivalences suivantes (distributivité à gauche et à droite de ∨ sur∧ ) :

( ) ( ) ( )( ) ( ) ( )P Q R P Q P RP Q R P R Q R∨ ∧ ≡ ∨ ∧ ∨∧ ∨ ≡ ∨ ∧ ∨

Exemple : Si l’on reprend l’exemple qui précède, la forme prénexe :

, , ,[ ( ) ( ( , ) ( , , ))]y x u P x Q u y R a u y∀ ∀ ∃ ∨ ∧ ¬ devient :

, , ,[( ( ) ( , )) ( ( ) ( , , ))]y x u P x Q u y P x R a u y∀ ∀ ∃ ∨ ∧ ∨ ¬

y∀

x∀

u∃

y

∨ ∨

u

Q

x

P ¬

R

a u y

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 32: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

30

II.1.3) Formes de Skolem

C’est l’utilisation de quantificateurs qui est à l’origine de la puissance, mais aussi de la complexité du calcul des prédicats. C’est pour cette raison qu’il est judicieux d’écrire une formule sous une forme normale qui lui soit équivalente : écrite sous une forme plus simple son inconsistance (ou sa validité) pourrait peut-être être plus simple à déterminer. Cependant même si les formes obtenues sont relativement simples, la coexistence de quantificateurs universels et existentiels amène une difficulté. Il serait plus intéressant de n’avoir que des quantificateurs universels.

Une formule sous forme normale conjonctive est dite universelle si son préfixe ne comporte que des quantificateurs universels. Mais attention une formule n’admet pas en général de forme normale conjonctive universelle qui lui soit équivalente. Nous allons cependant voir comment écrire une forme normale conjonctive universelle, qui ait même consistance que la formule initiale. C’est un résultat bien plus faible que l’équivalence, mais qui sera suffisant pour le propos qui est le nôtre. Ce procédé s’appelle le procédé de Skolémisation.

Algorithme de Skolémisation

On travaille sur une FBF donnée sous forme prénexe (ou encore sous forme normale conjonctive). Comme nous l’avons vu dans les paragraphes précédents toute formule admet une formule équivalente écrite sous cette forme. A chaque occurrence de quantificateur existentiel apparaissant dans la formule on lui associe les variables quantifiées universellement qui le précèdent (par exemple 1 2, ,..., nx x x si les quantificateurs 1x∀ , 2x∀ , …, et nx∀ précèdent le y∃ considéré dans le préfixe), ainsi qu’un nouveau symbole fonctionnel (par exemple f) ayant pour arité le nombre n de ces variables. On remplace dans la matrice chaque occurrence de la variable (disons y) que gouverne le quantificateur existentiel (ici y∃ ) considéré, par le terme 1 2( , ,..., )nf x x x , et l’on supprime dans le préfixe le quantificateur existentiel ( y∃ ) considéré. Dans le cas où aucun quantificateur universel ne précède le quantificateur existentiel considéré, on introduit un nouveau symbole de constante c, on remplace les occurrences de y par c, et –comme précédemment- on supprime le quantificateur existentiel y∃ considéré. Exemple : Considérons la formule sous forme prénexe :

, , , ,( ( ) ( ( , , ) ( )))x y z w P x Q x y z R w∃ ∀ ∀ ∃ ⇒ ∨ Le premier quantificateur existentiel n’est précédé par aucun quantificateur existentiel : on remplace la variable x par une nouvelle constante c :

, , ,( ( ) ( ( , , ) ( )))y z w P c Q c y z R w∀ ∀ ∃ ⇒ ∨ pour le quantificateur existentiel ,w∃ on considère un nouveau symbole fonctionnel binaire f et on lui associe les variables y et z. On obtient :

, ,( ( ) ( ( , , ) ( ( , ))))y z P c Q c y z R f y z∀ ∀ ⇒ ∨ Cette nouvelle formule est appelé la transformée de Skolem ou la forme de Skolem de la formule initial. Si une formule prénexe a un suffixe ne comportant aucun quantificateur universel, elle est sa propre transformée de skolem. Remarque : Une formule et sa transformée de Skolem ne sont en général pas équivalentes. Par exemple, la transformée de Skolem, de , ( )x P x∃ est ( )P c . Si on prend comme domaine

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 33: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

31

d’interprétation , et si ( )P x est interprété par 0x > , la valeur de ( )P c dépend évidemment de l’interprétation de la constante c, tandis que la formule initiale est évidemment vraie. Cependant, ce qui justifie de son utilisation c’est le fait qu’une formule et sa transformée de Skolem ont toutes deux même consistance comme l’établit le résultat suivant : Théorème : [Skolem] Une formule et sa transformée de Skolem sont simultanément toutes deux inconsistantes ou toutes deux consistantes. Preuve : Notons φ une formule est ( )S φ sa transformée de Skolem. Pour établir la proposition il est suffisant d’établir que φ est inconsistante si et seulement si ( )S φ est inconsistante. Par construction des valeurs de vérité, il est clair que si ( )S φ est vraie pour un modèle, il en est de même deφ . Ainsi l’inconsistance de φ entraîne l’inconsistance de ( )S φ . Prouvons maintenant la réciproque. Supposons que φ soit vraie dans un certain modèle de notre langageL , de domaine D. Pour construire la formule ( )S φ on a du enrichir notre langage de nouveaux symboles fonctionnels ou de constantes, pour aboutir à un langage 'L . Interprétons dans ce modèle notre langage 'L . Tous les symboles de '⊂L L sont interprétés comme précédemment. Considérons un symbole de constante de 'L L . Il est nécessairement associé à une variable quantifiée existentiellement deφ , qui n’est précédée par aucun quantificateur universel. Puisque la formule φ est vraie, on peut supprimer ce quantificateur existentiel, et assigner à cette variable une valeur constante de D qui garde la formule vraie. On interprétera ce symbole de constante par cet élément de D. Considérons maintenant un symbole fonctionnel f de 'L L ; il est associé à une quantification existentielle (disons ,y∃ ) de la formuleφ . Supposons que cette quantification soit précédée par des quantificateurs existentiel portant sur les variables (disons) 1 2, ,..., nx x x . Alors par définition, pour toute assignation de 1 2, ,..., nx x x , on peut trouver une assignation de y qui rende la formule φ vraie. La fonction f sera ainsi interprétée par une fonction de choix qui à une assignation de 1 2, ,..., nx x x associe une valeur assignée à y qui garde la formule vraie ; c’est une application de nD dans D. En procédant ainsi, donnée une interprétation de L qui rende φ vraie, on a interprété notre langage 'L pour ce modèle de façon à ce que la formule ( )S φ soit vraie. Ainsi si ( )S φ est inconsistante, il en est de même deφ . CQFD. II.1.4) Formes clausales On dispose désormais d’une formule sous forme normale conjonctive universelle :

1 2 1 2, ,..., , ...n px x x φ φ φ∀ ∀ ∀ ∧ ∧ ∧ (où les iφ sont des clauses). Elle est équivalente à la conjonction des formules :

1 2 1, ,..., ,nx x x φ∀ ∀ ∀ 1 2 2, ,..., ,nx x x φ∀ ∀ ∀

1 2, ,..., ,n px x x φ∀ ∀ ∀

La dernière étape pour l’écrire sous forme clausale est de distinguer les variables invoquées dans chaque clause. Pour cela on utilise les règles :

, ( ( ) ( )) , ( ) , ( ) , ( ) , ( ) , , ( ( ) ( ))x P x Q x x P x x Q x x P x y Q y x y P x Q y∀ ∧ ≡ ∀ ∧∀ ≡∀ ∧∀ ≡∀ ∀ ∧

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 34: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

32

Notation : une forme clausale 1 2 1 2, ,..., , ...n px x x φ φ φ∀ ∀ ∀ ∧ ∧ ∧ pourra être écrite sous la forme 1 2{ ; ;...; }pφ φ φ où les iφ sont les clauses. La raison en est la suivante : Proposition : La formule sous forme clausale 1 2 1 2, ,..., , ...n px x x φ φ φ∀ ∀ ∀ ∧ ∧ ∧ a même consistance que l’ensemble des clauses 1 2{ ; ;...; }pφ φ φ . Preuve : Si M est un modèle de la formule 1 2 1 2, ,..., , ...n px x x φ φ φ∀ ∀ ∀ ∧ ∧ ∧ alors c’est aussi un modèle des formules 1 2 1, ,..., ,nx x x φ∀ ∀ ∀ , 1 2 2, ,..., ,nx x x φ∀ ∀ ∀ , …., et 1 2, ,..., ,n px x x φ∀ ∀ ∀ , et donc de chacune des clauses 1φ , 2φ ,…, nφ . Réciproquement si M est un modèle de 1 2{ ; ;...; }pφ φ φ , alors c’est un modèle de la formule non close 1 2 ... pφ φ φ∧ ∧ ∧ , et donc de la formule close 1 2 1 2, ,..., , ...n px x x φ φ φ∀ ∀ ∀ ∧ ∧ ∧ où les 1 2, ,..., nx x x sont toutes les variables libres invoquées dans les clauses. (Remarque : on a en fait démontré un résultat plus fort, l’équivalence : tout modèle de l’un est modèle de l’autre). CQFD.

littéraux

1x∀

nx∀

∨ ∨ ∨

1L 2L 9L8L7L6L5L4L 3L

clauses

quantificateurs existentiels

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 35: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

33

II.1.5) En résumé : algorithme de mise sous forme clausale 1.a) Elimination des connecteurs ⇒ et⇔ .

( ) ( )P Q P Q Q P⇔ ≡ ⇒ ∧ ⇒ 1.b) Accoler les ¬ aux atomes.

P P¬¬ ≡

Lois de De Morgan : ( )( )G H G HG H G H¬ ∨ ≡ ¬ ∨ ¬¬ ∧ ≡ ¬ ∧ ¬

, ( ) , ( ), ( ) , ( )x P x x P xx P x x P x

¬∃ ≡ ∀ ¬¬∀ ≡ ∃ ¬

1.c) Distinguer les variables.

, ( ) , ( ), ( ) , ( )x P x y P yx P x y P y

∃ ≡ ∃∀ ≡ ∀

1.d) Eliminer les quantificateurs inutiles.

,,x Q Qx Q Q

∀ ≡∃ ≡

1.e) Faire passer les quantificateurs devant.

, ( ) ,( ( ) ), ( ) ,( ( ) ), ( ) ,( ( ) ), ( ) ,( ( ) )

x P x Q x P x Qx P x Q x P x Qx P x Q x P x Qx P x Q x P x Q

∃ ∨ ≡ ∃ ∨∃ ∧ ≡ ∃ ∧∀ ∨ ≡ ∀ ∨∀ ∧ ≡ ∀ ∧

, ( ) ,( ( )), ( ) ,( ( )), ( ) ,( ( )), ( ) ,( ( ))

Q x P x x Q P xQ x P x x Q P xQ x P x x Q P xQ x P x x Q P x

∨ ∃ ≡ ∃ ∨∧ ∃ ≡ ∃ ∧∨ ∀ ≡ ∀ ∨∧ ∀ ≡ ∀ ∧

A ce stade on a obtenu une forme prénexe équivalente.

2) Mettre sous forme normale conjonctive.

( ) ( ) ( )( ) ( ) ( )P Q R P Q P RP Q R P R Q R∨ ∧ ≡ ∨ ∧ ∨∧ ∨ ≡ ∨ ∧ ∨

3) Skolémisation. Eliminer les quantificateurs existentiels, en introduisant les symboles fonctionnels ou de constante appropriés (voir §II.1.3). 4) Distinguer les variables de chaque clause.

, ( ( ) ( )) , ( ) , ( ) , ( ) , ( ) , , ( ( ) ( ))x P x Q x x P x x Q x x P x y Q y x y P x Q y∀ ∧ ≡∀ ∧∀ ≡∀ ∧∀ ≡∀ ∀ ∧

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 36: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

34

On a obtenu : 1 2 1 2, ,..., , ...n px x x φ φ φ∀ ∀ ∀ ∧ ∧ ∧ . On considère l’ensemble constitué des clauses : 1 2{ ; ;...; }pφ φ φ . C’est la forme clausale souhaitée. II.1.6) Exemple complet Appliquons l’algorithme à la formule :

, ( , ) ( , , ( , ) , ( ))x P a x x y P x y w Q w∃ ⇒ ∀ ∃ ∧∃

.1.a) ( , ( , )) ( , , ( , ) , ( ))x P a x x y P x y w Q w≡ ¬ ∃ ∨ ∀ ∃ ∧∃

.1.b) ( , ( , )) ( , , ( , ) , ( ))x P a x x y P x y w Q w≡ ∀ ¬ ∨ ∀ ∃ ∧∃

.1.c) ( , ( , )) ( , , ( , ) , ( ))x P a x u y P u y w Q w≡ ∀ ¬ ∨ ∀ ∃ ∧∃

.1.d) ne change rien (il n’y a pas de quantificateur inutile).

.1.e) ( , ( , )) ( , , , ( , ) ( ))x P a x w u y P u y Q w≡ ∀ ¬ ∨ ∃ ∀ ∃ ∧ [ ], ( , ) ( , , , ( , ) ( ))x P a x w u y P u y Q w≡ ∀ ¬ ∨ ∃ ∀ ∃ ∧

[ ], , , , ( , ) ( ( , ) ( ))x w u y P a x P u y Q w≡ ∀ ∃ ∀ ∃ ¬ ∨ ∧

.2) [ ], , , , ( ( , ) ( , )) ( ( , ) ( ))x w u y P a x P u y P a x Q w≡ ∀ ∃ ∀ ∃ ¬ ∨ ∧ ¬ ∨

.3) [ ], , ( ( , ) ( , ( , ))) ( ( , ) ( ( )))x u P a x P u g x u P a x Q f x≈ ∀ ∀ ¬ ∨ ∧ ¬ ∨ (c’est la Skolémisation, avec la fonction f unaire associée à w∃ et la fonction g binaire associée à y∃ . On a perdu l’équivalence, mais cette formule a même consistance que la formule initiale.) .4) [ ] [ ], , ( , ) ( , ( , )) , ( , ) ( ( ))x u P a x P u g x u y P a y Q f y≈ ∀ ∀ ¬ ∨ ∧∀ ¬ ∨

[ ], , , ( ( , ) ( , ( , ))) ( ( , ) ( ( )))x u y P a x P u g x u P a y Q f y≈ ∀ ∀ ∀ ¬ ∨ ∧ ¬ ∨ { ( , ) ( , ( , )); ( , ) ( ( ))}P a x P u g x u P a y Q f y≈ ¬ ∨ ¬ ∨

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 37: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

35

II.2) Principe de résolution II.2.1) Principe de résolution appliqué à des clauses concrètes Un littéral est dit concret s’il ne comporte aucun symbole de variable. Une clause concrète est une disjonction de littéraux concrets. Par exemple ( ) ( , )P a Q a b∨ est une clause concrète tandis que ( ) ( , )P a Q x b∨ n’en est pas une. Le principe de résolution est une règle d’inférence qui sera utilisée de façon prépondérante durant toute la suite du cours. Elle est modelée sur la règle :

et implique

X AA B

X B

⎫⎪∨ ⎪⎪⎪ ∨⎬⎪⎪¬ ∨ ⎪⎪⎭

qui en remplaçant A par 1 2 ... pA A A∨ ∨ ∨ et B par 1 2 ... qB B B∨ ∨ ∨ , se généralise immédiatement en :

1 2

1 2 1 2

1 2

... et implique ... ...

...

p

p q

q

X A A AA A A B B B

X B B B

⎫⎪∨ ∨ ∨ ∨ ⎪⎪⎪ ∨ ∨ ∨ ∨ ∨ ∨ ∨⎬⎪⎪¬ ∨ ∨ ∨ ∨ ⎪⎪⎭

Définition : Le principe de résolution est une règle d’inférence qui à partir de deux clauses concrètes de la forme : 1 2 ... pX A A A∨ ∨ ∨ ∨ et 1 2 ... qX B B B¬ ∨ ∨ ∨ ∨ déduit la clause concrète : 1 2 1 2... ...p qA A A B B B∨ ∨ ∨ ∨ ∨ ∨ ∨ . Cette dernière clause est appelée la résolvante des deux premières (elles même appelées clauses parentes). Remarques : − Trivialement il s’agit d’une règle d’inférence saine.

− La résolvante des clauses concrètes P et P Q¬ ∨ (qui peut aussi s’écrireP Q⇒ ) est la clauseQ . Ainsi le principe de résolution recouvre le modus ponens.

− La résolvante de P Q¬ ∨ (ou encoreP Q⇒ ) et Q R¬ ∨ (ou encoreQ R⇒ ) est P R¬ ∨ (c'est-à-direP R⇒ ). Ce cas particulier du principe de résolution est appelé règle d’enchaînement. − Attention ! Les clauses P Q¬ ∨ et P Q∨ ¬ admettent deux résolvantes Q Q∨ ¬ etP P∨ ¬ . La clause vide n’en est pas une résolvante. On ne peut effectuer qu’une résolution à la fois !!! Exemples : − Des clauses concrètes A_la_maison∨Au_travail et ¬A_la_maison on déduit la clause Au_travail. − Des clauses concrètes Sérieux∨Regarde_la_télé∨Fait_la_sieste et ¬ Sérieux∨Fait_du_sport on déduit Regarde_la_télé∨Fait_la_sieste∨Fait_du_sport.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 38: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

36

II.2.2) Unification de littéraux

a) Substitution Définition : Etant donné un langageL , une substitution σ est la donnée d’un nombre fini de couples constitués chacun d’une variable et d’un terme deL . On note une substitution :

1 1 2 2( / , / ,..., / )n nx t x t x tσ = où les ix sont les variables, et les it sont les termes. Si φ est une formule ou un terme, et 1 1 2 2( / , / ,..., / )n nx t x t x tσ = est une substitution, la formule (ou le terme) φσ , (que l’on peut aussi noter 1 1 2 2( / , / ,..., / )n nx t x t x tφ ) est obtenue à partir de φ en remplaçant chaque occurrence libre de la variable ix dans φ par le terme it . Exemple : Si l’on considère la substitution ( / ( ), / , / )x f a y a z xσ = , ainsi que la formule : ( ) ( ( ), )P x Q f x zφ = ∨¬ , alors : ( ( )) ( ( ( )), )P f a Q f f a xφσ = ∨¬ . Il faut remarquer que l’on substitue les termes aux variables initialement présentes dans φ , et non à celles éventuellement apparues en cours de route. Ainsi même si la substitution /z x fait apparaître un x à la place de z, on ne lui applique pas ensuite la substitution / ( )x f a .

Etant données deux substitutionsσ etτ , leur produit sera définie comme la substitution (notéeστ ) ayant le même effet que l’action deσ suivie de l’action deτ . Formellement on aboutit à la définition suivante : Définition : Soient 1 1 2 2( / , / ,..., / )n nx t x t x tσ = et 1 1 2 2( / , / ,..., / )m my s y s y sτ = deux substitutions. Leur produit στ est la substitution constituée de toutes les substitutions /i ix tτ pour i variant de 1 à n, ainsi que des substitutions /i iy s chaque fois que iy n’est pas une des variables 1 2, ,..., nx x x . Dans la pratique. Données les substitutions σ et τ comme ci-dessus, pour déterminer le produit στ on procédera de la façon suivante :

– Appliquer la substitution τ à chaque terme 1 2, ,..., nt t t deσ , c'est-à-dire que l’on remplacera chaque occurrence de la variable iy dans un des termes 1 2, ,..., nt t t de σ , par le terme is . On obtient la substitution : 1 1 2 2( / , / ,..., / )n nx t x t x tτ τ τ

– Ajouter à cette substitution les couples /i iy s chaque fois que la variable iy n’est pas une des variables 1 2, ,..., nx x x invoquées dansτ .

Exemples : − Considérons les deux substitutions données par : ( / ( , ), / )x f y z y aσ = et

( / ( ), / ( ))y g a z g xτ = . Alors , ( / ( ( ), ( )), / , / ( ))x f g a g x y a z g xστ =

( / ( ), / ( ( , )), / ( , ))y g a z g f y z x f y zτσ = Clairement στ τσ≠ .

− On part de la formule ( , , )P x y u et on lui applique le produit στ des substitutions :

( / ( , ), / ( ))x h u v y f dσ = ( / , / ( , ))u y v h x xτ =

leur produit στ est :

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 39: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

37

( / ( , ( , )), / ( ), / , / ( , ))x h y h x x y f d u y v h x xστ = et l’on obtient la formule :

( ( , ( , )), ( ), )P h y h x x f d y

Remarques : On vérifie aisément que ( )F Fστ σ τ= , et que le produit de substitutions est associatif, i.e. ( ) ( )σ τυ στ υ στυ= . Il n’est par contre pas commutatif comme le montre l’exemple plus haut, i.e. en généralστ τσ≠ .

b) Unification Définition : Un ensemble de littéraux 1 2{ , ,..., }pL L L est dit unifiable si il existe une substitutionσ , telle que les littéraux 1 2, ,..., pL L Lσ σ σ soient tous identiques. La substitution σ est alors appelée l’unificateur des littéraux 1 2, ,..., pL L L . Un unificateur σ est principal si tout autre unificateur est de la forme στ pour une certaine substitutionτ . Exemple : { ( , ( )); ( , ( )); ( , )}L P x f a P y f z P z w= est unifiable. Si on lui applique la substitution ( / , / , / , / ( ))z a y a x a w f aσ = alors { ( , ( ))}L P a f aσ = .

Il est facile de décider si un ensemble de littéraux est unifiable ou non, et le cas échéant d’exhiber un unificateur principal (dans ce cas ce dernier existera toujours). La propriété suivante établit ce résultat (nous l’admettrons). Propriété (admise) : Lorsque un ensemble de littéraux est unifiable, il admet un unificateur principal. De plus il existe un algorithme permettant de décider pour un ensemble de littéraux s’il est unifiable, et qui, le cas échéant, fournit un unificateur principal. L’algorithme sera présenté dans le prochain paragraphe. Il utilise la notion d’ensemble de discordance. Si 1 2{ , ,..., }pL L L est un ensemble de littéraux, son ensemble de discordance D est construit de la façon suivante :

Si les littéraux 1 2, ,..., pL L L sont tous identiques, alors = ∅D . Sinon on écrit les littéraux sous forme d’arbre, et on les lit simultanément de haut

en bas, et de gauche à droite, tant qu’ils sont tous identiques. A la première apparition de nœuds portant des symboles différents on définit D comme l’ensemble constitué des différentes expressions (nécessairement des termes ou formules) obtenues en considérant les sous arbres débutant sur ces nœuds.

L’ensemble de discordance correspond informellement aux premières sous formules qui diffèrent dans leur écriture. Exemple : Considérons trois littéraux :

1 : ( , )L P x y= ; 2 : ( ( ), )L P f a y= ; 3 : ( ( ( )), )L P f f a x= Leur représentation sous forme d’arbre est :

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 40: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

38

L’ensemble de discordance est { , ( ), ( ( ))}x f a f f a=D .

Dans la suite on note Γ un ensemble de littéraux, et σ une substitution qui vaut initialement la substitution trivialeσ ε= (qui n’affecte aucune variable). L’algorithme s’applique au couple ( , )σΓ et retourne –lorsque c'est possible– un unificateur principal. Dans le cas contraire l’algorithme s’arrête en déclarant que Γ n’est pas unifiable.

c) Algorithme d’unification

Exemple : Appliquons l’algorithme dans le cas des littéraux 1 2 3, ,L L L considérés ci-dessus : UNIFIER( 1 2 3{ , , }L L L ,σ ) Etape 1- 1 2 3, ,L L L ne sont pas identiques. On passe à l’étape 2. Etape 2- { , ( ), ( ( ))}x f a f f a=D , comme vu ci-dessus. On passe à l’étape 3. Etape 3- On considère les éléments x, et ( )f a deD . Le terme ( )f a n’invoque pas la variable x, ainsi on applique : ( / ( ))x f aσ σ← et ( / ( ))x f aΓ ← Γ . On obtient ( / ( ))x f aσ = ,

1 : ( ( ), )L P f a y= ; 2 : ( ( ), )L P f a y= ; 3 : ( ( ( )), ( ))L P f f a f a= .

P P P

a

a

x y y

f

f f x

UNIFIER( ,σΓ ) 1- Si tous les éléments de Γ sont identiques (Γ est un singleton),

alors arrêter et retourner σ comme unificateur principal. 2- Construire l’ensemble D de discordance deΓ . 3- Si il existe deux éléments x et t deD , où x est une variable et t est un terme qui

n’invoque pas x, alors : { ( / )x tσ σ← ( / )x tΓ ← Γ UNIFIER( ,σΓ )} 4- Arrêter : l’ensemble Γ n’est pas unifiable.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 41: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

39

On appelle ensuite UNIFIER ( 1 2 3{ , , }L L L ,σ ) : Etape 1- 1 2 3, ,L L L ne sont pas identiques. On passe à l’étape 2. Etape 2- ( ( ), ( ( )))f a f f a=D . On passe à l’étape 3. Etape 3- D ne contient pas de variable. On passe à l’étape 4. Etape 4- On s’arrête, 1 2 3{ , , }L L L n’est pas unifiable. L’algorithme conclut donc que l’on ne peut pas unifier 1 2 3{ , , }L L L . Remarquons que l’ensemble 1 2{ , }L L est lui unifiable en le facteur 1 2 : ( ( ), )L L P f a y= = . L’unificateur principal est ( / ( ))x f aσ = . Autre exemple : On considère l’ensemble constitué des littéraux :

1 : ( , , ( ( )))L P a x f g y= ; 2 : ( , ( ), ( ))L P z f z f v=

On lance UNIFIER({ ( , , ( ( ))), ( , ( ), ( ))},P a x f g y P z f z f v σ ) Etape 1- On passe à l’étape 2. Etape 2- { , }a z=D . Etape 3- On effectue : ( / )z aσ σ← et ( / )z aΓ ← Γ . On obtient : ( / )z aσ = et { ( , , ( ( ))), ( , ( ), ( ))}P a x f g y P a f a f vΓ = .

P P

a

a

y

f

f f

( ( ), ( ( )))f a f f a=D

a

f

P P

z

z x f a f

g

y

f

v

{ , }a z=D

P

a

y f

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 42: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

40

On appelle UNIFIER( ,σΓ ). Etape 1- On passe à l’étape 2. Etape 2- { , ( )}x f a=D . Etape 3- On effectue : ( / ( ))x f aσ σ← et ( / ( ))x f aΓ ← Γ . On obtient : ( / , / ( ))z a x f aσ = et { ( , ( ), ( ( ))), ( , ( ), ( ))}P a f a f g y P a f a f vΓ = .

On appelle UNIFIER( ,σΓ ). Etape 1- On passe à l’étape 2. Etape 2 - { ( ), }g y v=D . Etape 3 - On effectue : ( / ( ))v g yσ σ← et ( / ( ))v g yΓ ← Γ . On obtient :

( / , / ( ), / ( ))z a x f a v g yσ = et { ( , ( ), ( ( )))}P a f a f g yΓ = .

On appelle UNIFIER( ,σΓ ).

P P

a

a f f a f

g

y

( / ( ))v g yσ σ←

a

f

g

y

P P

a

a f f a f

g

y

f

v

{ ( ), }g y v=D

( / ( ))x f aσ σ←

a

P P

a

a x f a f

g

y

f

v

{ , ( )}x f a=D

( / )z aσ ←

( / , / ( ), / ( ))z a x f a v g yσ =

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 43: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

41

Etape 1- Γ est un singleton. L’algorithme s’arrête : 1 2,L L sont unifiables. Leur unificateur principal est ( / , / ( ), / ( ))z a x f a v g yσ = , et le facteur obtenu est ( , ( ), ( ( )))P a f a f g y . FIN II.2.3) Principe de résolution appliqué à des clauses quelconques

Soient deux clauses quelconques C et D, pour lesquelles on suppose qu’elles n’ont pas de variables en commun (voir §II.1.4). On note C et D comme des ensembles de littéraux, c'est-à-dire que si 1 2 ... pC C C C= ∨ ∨ ∨ et 1 2 ... qD D D D= ∨ ∨ ∨ , on notera :

1 2{ , ,..., }pC C C C= ; 1 2{ , ,..., }qD D D D= ou plutôt { }iC C= et { }jD D= , où i et j seront supposés prendre les valeurs adéquates. Le principe de résolution est une règle d’inférence qui à partir des clauses C et D (appelées clauses parentes) produit (éventuellement) une nouvelle clause qui sera appelée un résolvant. Le procédé est le suivant : Principe de résolution : Considérons deux clauses 1 2{ , ,..., }pC C C C= et 1 2{ , ,..., }qD D D D= ayant des variables distinctes. Si il existe un sous-ensemble { }kC de { }iC et un sous-ensemble { }lD de { }jD tels que

{ } { }Γ k lC D= ∪ ¬ soit unifiable, avec pour unificateur principalσ , alors un résolvant de C et D sera défini comme (clause ayant pour ensemble de littéraux) :

({ } { }) ({ } { })i k j lC C D Dσ σ− ∪ −

Exemple : Appliquons le principe de résolution aux deux clauses :

( , ( )) ( ) ( , )C P x f a Q x P a y= ∨ ∨ et ( , ) ( , ( ))D P u v P a f v= ¬ ∨ . L’ensemble de littéraux { ( , ( )), ( , ), ( , )}L P x f a P a y P u v= est unifiable avec pour unificateur principal ( / , / ( ), / , / ( ))x a y f a u a v f aσ = en le littéral ( , ( ))P a f a . Le principe de résolution s’applique

aux clauses parentes C et D, pour déduire le résolvant ( ) ( , ( ( )))Q a P a f f a∨ . II.2.4) Propriétés du principe de résolution ● C’est une règle saine, c'est-à-dire que tout résolvant est une conséquence logique des deux clauses parentes. En effet les clauses de{ }iC σ et { }iD σ sont des conséquences logiques de { }iC et{ }iD . La règle de résolution prend alors la même forme que dans le cas des clauses concrètes, qui est trivialement une règle d’inférence saine. ● Le fait que cette règle d’inférence soit saine ainsi que sa forme ont une conséquence fondamentale : Considérons un ensemble 1 2{ , ,..., }pC C C C= de clauses, et une suite finie de clauses

1,..., nG G vérifiant : d) nG est la clause vide. e) Pour i variant de 1 à n, soit iG est un élément de C, soit c’est un résolvant de

deux clauses antérieures de la suite. Une telle suite 1,..., nG G s’appelle une réfutation par résolution de C. Elle prouve l’inconsistance de C !!

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 44: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

42

En effet : remarquons tout d’abord que puisque le principe de résolution est une règle saine, chaque iG est une conséquence logique de C. Si la clause vide nG a deux clauses parentes

1C et 2C , cela signifie qu’il existe un unificateur principal σ tel que 1Cσ et 2C σ soient réduits à des littéraux complémentaires, i.e. 1 { }C Lσ = et 2 { }C Lσ = ¬ . Si C admettait un modèleM , les clauses 1C et 2C seraient vérifiées dans ce modèle, et donc aussi les clauses 1Cσ et 2C σ . Ainsi on aurait nécessairement comme conséquence logique 1 2C C L Lσ σ∧ ≡ ∧¬ , qui est invalide. Donc C ne peut pas admettre de modèle. CQFD. ● C’est un règle complète pour la réfutation (par opposition à la complétude pour la déduction vu au §I.3.3). On montre ([Siekmann 83],[Chang 73], [Nilsson 71]) que si un ensemble C de clauses est inconsistant, alors il existe une réfutation par résolution de C, i.e. une suite d’applications du principe de résolution qui aboutit à la clause vide. Ce résultat est fondamental !!! ● Le principe de résolution admet une formulation différente. Certains auteurs ont une formulation différente du principe de résolution. Ils ‘découpent’ cette règle d’inférence en deux règles d’inférence : − Le Principe de résolution binaire : Soient deux clauses { }iG G= et { }jH H= (notées

comme ensembles de littéraux) ayant des variables distinctes. Si il existe un littéral kG de G et un littéral lH de H, tels que kG et lH¬ soient unifiables alors si σ est un unificateur principal, une résolvante binaire de G et H est la clause définie par : ({ } ) ({ } )i k j lG G H Hσ σ− ∪ − . Clairement le principe de résolution binaire est un cas particulier du principe de résolution : c’est le cas où les sous-ensembles de littéraux considérés sont des singletons. − Règle de factorisation : Soit une clause (notée comme ensemble de littéraux) { }iG G= , telle que deux ou plusieurs littéraux de G (disons 1 2, ,..., pG G G ) soient unifiables. Alors on peut déduire la clause appelée le facteur de G définie par 2({ } { ,..., })i pG G G σ− . Exemple : De la clause ( ) ( ) ( )P x P y Q a∨ ∨ on déduit le facteur ( ) ( )P x Q a∨ .

On montre que tout résolvant (non binaire) de deux clauses quelconques peut être aussi déduit en appliquant le principe de résolution binaire et la règle de factorisation. Attention le principe de résolution binaire ne suffit pas à lui seul à retrouver le principe de résolution (non binaire) : il suffit par exemple de considérer les deux clauses ( ) ( )P x P y∨ et

( ) ( )P a Q b¬ ∨ ; elles admettent pour résolvante ( )Q b (avec pour unificateur principal ( / , / )x a y a ), et pour résolvante binaire ( ) ( )P y Q b∨ . Par contre si l’on applique d’abord la règle de factorisation à ( ) ( )P x P y∨ on obtient ( )P x puis en appliquant le principe de résolution binaire à ( )P x et ( ) ( )P a Q b¬ ∨ , on obtient aussi ( )Q b . Nous verrons plus tard, que lorsqu’on l’applique à certaines clauses particulières comme les clauses de Horn (clauses contenant au plus un littéral positif) le principe de résolution binaire est suffisant pour recouvrer le principe de résolution.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 45: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

43

II.3) Preuve par réfutation en utilisant le principe de résolution II.3.1) Réfutation par résolution

Supposons que l’on veuille prouver que la formule Q est une conséquence logique des formules 1 2, ,..., nH H H . Cela équivaut à montrer que la formule 1( ... )nH H Q¬ ∧ ∧ ∨ est valide, soit encore que la formule 1 ... nH H Q∧ ∧ ∧¬ est inconsistante. Notons φ cette dernière formule. Pour prouver que φ est inconsistante, il suffit de prouver que sa forme de Skolem, ou encore que sa forme clausale est inconsistante. Si elle s’écrit 1 1,..., ( ... )q px x C C∀ ∀ ∧ ∧ , il suffit de prouver que la conjonction de clauses

1 ... pC C∧ ∧ est inconsistante (en effet ( , ( )) ( )x P x P x∀ ⇒ ), et il suffit pour cela de prouver que l’ensemble constitué des clauses 1,..., pC C est inconsistant. Cela peut être fait en lui appliquant une réfutation par résolution. Cela donne la procédure :

Si Q est une conséquence logique de 1 2, ,..., nH H H , on peut par cette méthode le prouver. Seulement si ce n’est pas le cas, l’algorithme risque de tourner indéfiniment sans que l’on puisse conclure. Exemples de réfutation par résolution

a) Montrons que : { , ( ( ) ( )); , ( ( ) ( ))} , ( ( ) ( ))x P x Q x x Q x R x x P x R x∀ ⇒ ∀ ⇒ ∀ ⇒

C’est équivalent à montrer que la formule : [ ], ( ( ) ( )) , ( ( ) ( )) , ( ( ) ( ))x P x Q x x Q x R x x P x R x∀ ⇒ ∧∀ ⇒ ⇒∀ ⇒

est valide, ce qui équivaut à montrer que la formule : , ( ( ) ( )) , ( ( ) ( )) ( , ( ( ) ( )))x P x Q x x Q x R x x P x R x∀ ⇒ ∧∀ ⇒ ∧¬ ∀ ⇒

est inconsistante. On aboutit à la forme normale conjonctive :

[ ], , ( ( ) ( )) ( ( ) ( )) ( ( , )) ( ( , ))x y P x Q x Q y R y P f x y R f x y∀ ∀ ¬ ∨ ∧ ¬ ∨ ∧ ∧¬ soit encore à la forme clausale :

{ }( ) ( ); ( ) ( ); ( ( , )); ( ( , ))P x Q x Q y R y P f u v R f w t¬ ∨ ¬ ∨ ¬ On schématise la preuve par réfutation par un arbre de réfutation. Deux arêtes relient les deux clauses parentes à la clause résolvante. On peut (optionnellement) labelliser ce couple d’arêtes par l‘unificateur principal employé :

Pour montrer que Q est une conséquence logique de 1 2, ,..., nH H H : Considérer la formule 1 ... nH H Q∧ ∧ ∧¬ .

Construire sa forme clausale { }1 2, ,..., pC C C

Appliquer une réfutation par résolution aux clauses 1 2, ,..., pC C C . Si l’on finit par produire la clause vide on a prouvé que Q est une conséquence logique de 1 2, ,..., nH H H .

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 46: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

44

b) Dans le même genre, montrons que :

[ ], ( ) ,( ( ) ( )) , ( )x P x x P x Q x x Q x∃ ∧ ∀ ⇒ ⇒ ∃ est valide, c'est-à-dire que la formule :

, ( ) ,( ( ) ( )) ( , ( ))x P x x P x Q x x Q x∃ ∧ ∀ ¬ ∨ ∧ ¬ ∃ est inconsistante. On obtient la forme clausale :

{ }( ); ( ) ( ); ( )P c P x Q x Q y¬ ∨ ¬

c) Eric pense que : « Tout problème admet une solution ». Claire constate que : « L’absentéisme est insoluble ». On admet les hypothèses avancées par Eric et Claire. Montrons qu’alors :

« L’absentéisme n’est pas un problème »

On prend pour prédicats : ( )P x : x est un problème ; ( , )S x y : x a pour solution y, et pour constante : a : l’absentéisme. La pensée de Eric s’écrit : , ( ( ) , ( , ))x P x y S x y∀ ⇒ ∃

( / )x c

( )Q c ( )Q y¬

( / )y c

( )P c ( ) ( )P x Q x¬ ∨

( ) ( )P x Q x¬ ∨ ( ( , ))P f u v

( / ( , ))x f u v

( ( , ))Q f u v ( ) ( )Q y R y¬ ∨

( / ( , ))y f u v

( ( , ))R f w t¬ ( ( , ))R f u v

( / , / )w u t v

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 47: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

45

La constatation de Claire s’écrit : , ( , )y S a y¬∃ soit , ( , )y S a y∀ ¬ Quant à la conclusion recherchée : ( )P a¬ La pensée de Eric a même consistance que :

, ( ( ) ( , ( ))x P x S x f x∀ ¬ ∨ On est donc amené à prouver l’inconsistance de la forme clausale :

{ ( ) ( , ( )); ( , ); ( )}P x S x f x S a y P a¬ ∨ ¬ Ce que fait l’arbre de réfutation ci-dessous :

c) On admet les assertions suivantes : 1- « John aime toutes les sortes de nourriture ». 2- « Tout ce que quelqu’un mange et qui ne le tue pas est de la nourriture ». 3- « Bill mange des chips et cela ne l’a pas tué ».

On veut prouver que : 4- « John aime les chips ».

On prend pour constantes : John, Bill, chips. On prend pour prédicats : ( , )A x y : x aime y ;

( , )M x y : x mange y ; ( , )T x y : x tue y ; ( )N x : x est de la nourriture. Les assertions deviennent : 1- , ( ( ) ( , ))x N x A John x∀ ⇒ 2- , ( , ( ( , ) ( , )) ( )x y M y x T x y N x∀ ∃ ∧¬ ⇒ 3- ( , ) ( , )M Bill chips T chips Bill∧¬ 4- ( , )A John chips Les FBFs 1 et 2 deviennent : 1- , ( ( ) ( , ))x N x A John x∀ ¬ ∨ 2- , , ( , ) ( , ) ( )x y M y x T x y N x∀ ∀ ¬ ∨ ∨ Des conjonctions de 1,2,3 avec la négation de la conclusion 4, on obtient la forme clausale :

( ) ( , ( ))P x S x f x¬ ∨ ( , )S a y¬

( )P a¬

( )P a

( / , / ( ))x a y f a

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 48: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

46

{ ( ) ( , ); ( , ) ( , ) ( ); ( , ); ( , ); ( , )}N u A John u M y x T x y N x M Bill chips T chips Bill A John chips¬ ∨ ¬ ∨ ∨ ¬ ¬

II.3.2) Non déterminisme de la réfutation par résolution

a) Non déterminisme Soit 1 2{ , ,..., }nH H H H= une théorie, et φ une formule. Le procédé de réfutation par résolution permettant de prouver que φ est conséquence logique de H peut s’écrire :

( / )u chips

( / , / )x chips y Bill

( , ) ( , ) ( )M y x T x y N x¬ ∨ ∨ ( , )T chips Bill¬

( , ) ( )M Bill chips N chips¬ ∨

( )N chips

( , )M Bill chips

( , )A John chips( , )A John chips¬

( ) ( , )N u A John u¬ ∨

REFUTATION PAR RESOLUTION (H ;φ )

1- Constituer (avec l’algorithme du §II.1.5) la forme clausale C obtenue à partir de la formule 1 2 ... nH H H φ∧ ∧ ∧ ∧ ¬ .

2- Tant que la clause vide n’est pas dans C, faire : 2.1- début : Choisir deux clauses 1C , 2C de C. 2.2- Appliquer l’algorithme d’unification à toutes les sous clauses pour trouver

–si elles existent- des sous clauses '1C de 1C et '

2C de 2C telles que ' '

1 2C C∪¬ soit unifiable, c'est-à-dire tel que l’on puisse appliquer le principe de résolution à 1C et 2C .

2.3- Si le principe de résolution s’applique aux clauses 1C et 2C , alors : 2.3.1- Choisir un résolvant de 1C et 2C . 2.3.2- L’adjoindre à C. 2.4- fin.

3- Fin

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 49: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

47

Si la procédure s’arrête, on a bien prouvé que la FBF φ est une conséquence logique de la théorie H. Seulement ainsi décrite cette procédure est non déterministe. Les étapes 2.1- et 2.3.1- font appel à un choix de l’utilisateur. En outre ce choix est crucial : le résultat de « complétude pour la réfutation » affirme que si φ est une conséquence logique de la théorie H, alors on peut faire les choix judicieux aux étapes 2.1- et 2.3.1- pour produire la clause vide. Seulement on peut aussi –à priori- procéder à des choix moins judicieux produisant indéfiniment des résolvants sans ne jamais aboutir à la clause vide de sorte que l’utilisateur soit indéfiniment indécis sur une réponse à apporter. A ce stade, cette procédure n’est pas un algorithme! Remarque : On peut parfois se rendre compte ‘a priori’ que le principe de résolution ne peut s’appliquer. Si par exemple les deux clauses considérées n’ont que des littéraux de même signe (tous positifs ou tous négatifs) il est clair que le principe de résolution ne s’applique pas. De même on peut parfois se rendre compte qu’une preuve par réfutation ne peut aboutir : si par exemple toutes les clauses considérées contiennent exactement un littéral positif et un littéral négatif, il en sera de même de toute résolvante, et on ne pourra donc jamais aboutir à la clause vide.

b) Stratégies de résolution par réfutation, complètes, effectivement complètes La procédure REFUTATION-PAR-RESOLUTION peut être améliorée aux étapes 2.1 et 2.3.1 (celles comportant un choix). On appelle stratégie de résolution par réfutation, une restriction, ou un ordonnancement dans la façon de procéder au choix des clauses 1C et 2C (étape 2.1) ou des littéraux à unifier (étape 2.3.1). Une stratégie de résolution par réfutation sera qualifiée de complète (pour la réfutation), lorsque si il existe une façon de procéder pour aboutir à la clause vide (c'est-à-dire si la forme clausale initiale est inconsistante), il existe aussi une façon de procéder qui suit cette stratégie. Elle sera dite effectivement complète lorsque l’utilisateur appliquant cette stratégie à une forme clausale invalide est assuré d’aboutir à la clause vide au bout d’un temps fini. Une stratégie effectivement complète est complète. Une stratégie complète non effectivement complète offre un choix à l’utilisateur qui peut le faire aboutir à une impasse (un bouclage par exemple).

c) Graphe de dérivation, graphe de réfutation A toute forme clausale on associe un graphe de dérivation. On prend tout d’abord un sommet pour chaque clause, puis dès que deux clauses admettent une clause résolvante, on ajoute au graphe une sommet associé à la résolvante et deux arêtes orientées reliant ce dernier sommet aux deux sommets associés aux clauses parentes. Dans la pratique les arêtes seront non orientées, mais se dirigeront de haut en bas de sorte que des clauses parentes sont toujours au dessus de leur résolvante. Bien sur, le graphe peut être fini ou infini. Mais deux clauses n’admettent (à changement de variable près) qu’un nombre fini de résolvantes ; aussi on peut pas à pas construire ce graphe. Exemple : On considère pour hypothèses les FBFs :

, ,( ( ) ( ))x y P x Q y∀ ∃ ¬ ⇒ et ,( ( ) ( , ))z P b R a z∀ ⇒ et l’on veut montrer que : ( , ) , ( )R a b u Q u¬ ⇒ ∃

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 50: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

48

Cela donne la forme clausale :

{ ( ) ( ( )); ( ) ( , ); ( , ); ( )}P x Q f x P b R a y R a b Q z∨ ¬ ∨ ¬ ¬ Le graphe de dérivation est le suivant (dans ce cas c’est un graphe fini) :

Un graphe de réfutation est un sous graphe du graphe de dérivation, qui contienne un sommet associé à la clause vide. Voici un exemple de graphe de réfutation extrait du graphe de dérivation précédent.

( ( )) ( , )Q f b R a y∨

( ) ( ( ))P x Q f x∨ ( ) ( , )P b R a y¬ ∨

( , )R a b¬

( ( ))Q f b ( )Q z¬

( ) ( ( ))P x Q f x∨ ( ) ( , )P b R a y¬ ∨ ( , )R a b¬ ( )Q z¬

( ( )) ( , )Q f b R a y∨ ( )P x

■( ( ))Q f b

( )P b¬

( , )R a y( ( ))Q f b ( , )R a y

■■ ■ ■

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 51: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

49

II.3.3) Quelques exemples de stratégies de résolution

a) Stratégie de résolution « en largeur » On associe à chaque clause une profondeur. Les clauses initiales sont de profondeur 0. Une clause est de profondeur n lorsque le maximum de la profondeur de ses deux parents est ( 1n − ). La stratégie en largeur consiste à produire toutes les clauses de profondeur 0, puis toutes les clauses de profondeur 1, etc…. Puisque de deux clauses on ne peut déduire qu’un nombre fini de clauses résolvantes, le nombre de clauses de profondeur donné est fini. Ainsi cette stratégie est effectivement complète, puisque l’on est sûr en l’appliquant d’énumérer toutes les clauses résolvantes. Cette stratégie ne restreint pas le choix des clauses ou des littéraux : il ordonne le choix des clauses. Exemple : Dans l’exemple considéré plus haut, à la fin de l’implémentation la stratégie en largeur a produit le graphe de réfutation suivant :

b) Stratégie de résolution « linéaire » Soit un ensemble de clauses G, inconsistant, et 0C une clause de G telle que 0G C− soit consistant. La clause 0C est appelée clause centrale de départ. Toute clause résolvante ayant pour ancêtre 0C est appelée clause centrale. La stratégie linéaire procède de la façon suivante :

1- On applique le principe de résolution à 0C et à une clause de G. La résolvante est notée 1CC .

2- A chaque étape la clause centrale 1iCC + est obtenu en appliquant le principe de résolution entre iCC et une clause de bordCB , c'est-à-dire tel que CB soit une clause de G ou un ancêtre jCC (avec j i≤ ) de 1iCC + .

( ) ( ( ))P x Q f x∨ ( ) ( , )P b R a y¬ ∨ ( , )R a b¬ ( )Q z¬

( ( )) ( , )Q f b R a y∨ ( )P x

■( ( ))Q f b

( )P b¬

( , )R a y ( ( ))Q f b ( , )R a y

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 52: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

50

La construction de l’arbre de réfutation est dans ce cas légèrement modifiée pour prendre la forme :

Exemple : Voici un graphe de recherche obtenu à partir d’une stratégie de résolution linéaire, à partir de la clause centrale de départ 0 ( ) ( ( ))C P x Q f x= ∨ .

Le fait que la stratégie soit complète ou effectivement complète est à ce stade non

trivial. C’est pourtant le cas comme l’établit le résultat (admis) suivant :

( ) ( ( ))P x Q f x∨ ( ) ( , )P b R a y¬ ∨ ( , )R a b¬ ( )Q z¬

( ( )) ( , )Q f b R a y∨

( , )R a y

0CC

1CC

2CC

1CB

0CB

1nCB −

nCB

nCC

Clauses centrales

Clauses au bord

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 53: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

51

Théorème : La stratégie de résolution linéaire est complète. Si en outre on ordonne la production des clauses centrales par une stratégie en largeur, elle est effectivement complète. Remarques : Pour appliquer la stratégie de résolution il s’agit tout d’abord de choisir une clause centrale de départ 0C de façon à ce que 0G C− soit consistante. Dans la pratique on prendra une des clauses issues de la négation de la conclusion recherchée. On peut alors présumer que 0G C− est consistant. Il ne comprend que les clauses issues des hypothèses et de la négation de la conclusion auquel on a retiré une clause. Dans le cas contraire, on pourrait montrer l’inconsistance de 0G C− (qui implique l’inconsistance de G), en procédant de la même façon. Reprenons l’exemple utilisé durant cette section. Nous n’avons pas appliqué cette méthode ci-dessus : ( ) ( ( ))P x Q f x∨ n’est pas issu de la négation de la conclusion recherchée (soit ( , ) , ( )R a b u Q u¬ ⇒ ∃ ). La forme clausale considérée est :

{ ( ) ( ( )); ( ) ( , ); ( , ); ( )}P x Q f x P b R a y R a b Q z∨ ¬ ∨ ¬ ¬ Les deux dernières clauses étant issues de la négation de la conclusion. Si l’on prend pour clause centrale de départ 0 ( , )C R a b= ¬ , et que l’on procède à une stratégie linéaire (et en largeur), on obtient le graphe de réfutation :

Et à partir de 0 ( )C Q z= ¬ :

( )Q z¬ ( ) ( ( ))P x Q f x∨ ( ) ( , )P b R a y¬ ∨ ( , )R a b¬

( )P x

( , )R a y

( , )R a b¬ ( ) ( , )P b R a y¬ ∨ ( ) ( ( ))P x Q f x∨ ( )Q z¬

( )P b¬

( ( ))Q f b

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 54: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

52

c) Stratégie « linéaire par entrée » Cette stratégie est identique à la stratégie linéaire, à ceci près que les clauses au bord ne peuvent être prises que parmi les clauses d’entrée. Par exemple les trois résolutions linéaires considérées au paragraphe précédent sont des résolutions linéaires par entrée. En général les stratégies linéaires et par entrées ne sont pas complètes, comme en témoigne l’exemple suivant !

{ ( ) ( ); ( ) ( ); ( ) ( ); ( ) ( )}P a Q x P y Q y P z Q z P u Q u∨ ∨ ¬ ¬ ∨ ¬ ¬ ∨ Par la stratégie linéaire (et en largeur), en partant de la clause ( ) ( )P z Q z¬ ∨ ¬ :

Cette résolution linéaire n’est pas linéaire et par entrée. En fait il est impossible dans ce cas d’obtenir un graphe de réfutation par cette dernière méthode. En effet puisque les quatre clauses d’entrée sont des disjonctions de deux littéraux non unifiables, toute résolution invoquant une clause d’entrée éliminera un littéral mais pas les deux : on ne pourra jamais aboutir à la clause vide. Seulement les stratégies linéaires et par entrée sont complètes lorsqu’elles sont appliquées à des clauses de Horn (c’est-à-dire des clauses ne comportant au plus qu’un littéral positif), et de plus en n’utilisant que le principe de résolution binaire !!!

( ) ( )P z Q z¬ ∨ ¬ ( ) ( )P u Q u¬ ∨ ( ) ( )P y Q y∨ ¬ ( ) ( )P a Q x∨

( )P z¬

( )Q y¬

( )P a

( )P z¬

(ce n’est pas une clause d’entrée !)

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 55: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

53

II.3.4) Preuves par réfutation restreintes aux clauses de Horn Définition : Une clause de Horn est une clause contenant au plus un littéral positif. Une clause (de Horn) contenant exactement un littéral positif est appelée une clause définie. Une clause (de Horn) ne contenant aucun littéral positif est appelée clause négative ou but. Afin de comprendre pourquoi l’on s’intéresse à ces clauses particulières, remarquons les faits suivants concernant le principe de résolution appliqué uniquement à des clauses de Horn : ● La résolvante de deux clauses définies est elle-même définie.

En effet chaque clause parente comporte exactement un littéral positif, et une résolvante a été nécessairement obtenue en supprimant exactement un des deux littéraux positifs dans une des deux clauses. Donc la clause résolvante doit contenir l’autre littéral positif, et tous ses autres littéraux sont négatifs : c’est donc une clause définie.

• Si une des deux clauses parentes est négative, l’autre clause parente est nécessairement définie ; la résolvante est une clause négative. En effet la première clause parente étant négative l’autre clause parente doit nécessairement comporter un littéral positif. Puisqu’il s‘agit d’une clause de Horn elle en comporte exactement un : c’est une clause définie. Ce littéral positif sera supprimé par résolution : la résolvante n’aura que des littéraux négatifs.

• En particulier la résolvante de deux clauses de Horn est elle-même une clause de Horn.

Proposition : Soit Σ un ensemble de clauses de Horn, et 0Σ le sous-ensemble constitué des clauses définies. Alors, 1) 0Σ est non-contradictoire. 2) Si Σ est inconsistant, alors il existe une clause négative C deΣ , telle que 0 { }CΣ ∪ soit inconsistant Preuve : Montrons d’abord la première assertion : remarquons tout d’abord que Si 0Σ était inconsistant, alors par complétude pour la réfutation, il existerait une preuve par réfutation aboutissant à la clause vide. Or puisque toutes les clauses de 0Σ sont des clauses définies toute résolvante sera aussi définie, et donc on ne peut pas aboutir à la clause vide ; 0Σ est donc non contradictoire. Montrons maintenant la deuxième assertion. Si Σ est inconsistant, alors puisque les stratégies linéaires sont complètes il existe une réfutation linéaire ayant pour clause de départ une clause C négative. Avec le deuxième énoncé plus haut, toutes les clauses centrales (i.e. les résolvantes) seront négatives, et les clauses d’entrée seront nécessairement définies. Donc la réfutation s’applique à 0 { }CΣ ∪ et donc 0 { }CΣ ∪ est inconsistant. CQFD Proposition : Les stratégies linéaires et par entrée sont complètes lorsque appliquées à des clauses de Horn. Preuve : Par complétude de la stratégie linéaire, si un ensemble de clauses de Horn admet un arbre de réfutation, il en admet un qui suit une stratégie linéaire. Avec la proposition précédente la clause initiale doit être choisie parmi les clauses négatives. Avec le deuxième fait observé plus haut toutes les clauses centrales seront négatives et les clauses d’entrées seront définies. Ainsi aucune clause d’entrée ne peut être aussi une clause centrale, et la stratégie linéaire se fait par entrée. CQFD

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 56: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

54

II.3.5) Principes de programmation logique

Le langage de programmation logique PROLOG utilise la méthode de résolution appliquée à des clauses de Horn. La restriction de la méthode à de telles clauses a pour avantage de simplifier considérablement les algorithmes de résolution. Il a cependant aussi pour désavantage de ne pas pouvoir s’appliquer à toutes les formules du calcul des prédicats : si toute formule du calcul des prédicats admet une conjonction universelle de clauses qui ait même consistance, ce n’est plus vrai si l’on se restreint à des clauses de Horn. Cependant dans la pratique, la plupart des problèmes pourront s’interpréter grâce à l’emploi de clauses de Horn (parfois au prix d’une certaine ingéniosité).

Nous utilisons la syntaxe de SWI-prolog, une version freeware de PROLOG

développée par l’université d’edimbourg. une clause de Horn définie 1 2 ... kP N N N∨¬ ∨¬ ∨ ∨¬ s’écrit en PROLOG :

1 2: , ,..., .kP N N N− et se lit « P si 1 2, ,..., kN N N » ou encore « P aux conditions 1 2, ,..., kN N N » (elle est équivalente à 1 2( ... )kN N N P∧ ∧ ∧ ⇒ ). On l’appelle une règle. Le littéral positif P est appelé la tête et le second membre 1 2, ,..., kN N N appelé la queue.

Dans le cas d’une clause définie restreinte à un littéral positif : P , on note : .P

et l’on parle d’un fait.

Un programme PROLOG est constitué d’un ensemble de règles et de faits.

Exemple : Soit le programme : ( , ).pere marc anne ( , ).pere pierre marc

( , ) : ( , ), ( , ).grandpere X Z pere X Y pere Y Z− (Les chaînes de caractère commençant par une lettre majuscule sont interprétées comme des variables, les autres comme des constantes ou fonctions.) Il doit être compris comme le système axiomatique constitué des formules :

( , )pere marc anne ; ( , )pere pierre marc ; et , , , ( ( , ) ( , )) ( , )x y z pere x y pere y z grandpere x z∀ ∀ ∀ ∧ ⇒

Note sur l’emploi de variables. Toutes les clauses considérées doivent être compris comme des formes clausales, et donc toutes les variables sont quantifiées universellement. Seulement cela est vrai pour une écriture sous forme prénexe ! Par exemple : , , , ( ( , ) ( , )) ( , )x y z Père x y Père y z Grand père x z∀ ∀ ∀ ∧ ⇒ −

, , , ( ( , ) ( , )) ( , )x y z Père x y Père y z Grand père x z≡ ∀ ∀ ∀ ¬ ∧ ∨ − [ ], , , ( ( , ) ( , )) ( , )x z y Père x y Père y z Grand père x z≡ ∀ ∀ ∀ ¬ ∧ ∨ −

[ ], , , ( ( , ) ( , )) ( , )x z y Père x y Père y z Grand père x z≡ ∀ ∀ ¬∃ ∧ ∨ −

[ ], , , ( ( , ) ( , )) ( , )x z y Père x y Père y z Grand père x z≡ ∀ ∀ ∃ ∧ ⇒ − De façon générale :

( ) : .a X b− doit se comprendre : , ( )b x a x⇒∀ , soit pour tout X, a(X) à la condition b (en effet , ( ( ) ) , ( ) , ( )x a x b x a x b b x a x∀ ∨¬ ≡∀ ∨¬ ≡ ⇒∀ .)

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 57: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

55

: ( ).a b X− doit se comprendre : , ( )x b x a∃ ⇒ , soit a à la condition qu’il existe X tel que b(X) (en effet , ( ( )) , ( ) , ( ) , ( )x A B x A x B x A x B x x B x A∀ ∨¬ ≡ ∨∀ ¬ ≡ ∨¬∃ ≡ ∃ ⇒ .)

( ) : ( ).a X b X− doit se comprendre : , ( ( ) ( ))x b x a x∀ ⇒ , soit (pour tout X) a(X) à la condition b(X).

Un programme PROLOG ne fait rien d’autre qu’énoncer des règles ! C’est l’utilisateur qui questionne le programme. Il entre au prompteur ‘>’ des littéraux positifs séparés par des virgules. Exemples : 1 2, ,..., .pL L L> Ou en reprenant l’exemple précédent :

( , ).grandpere X anne> Qui doit être compris comme la question « pour quelles valeurs de x ce prédicat est-il vrai ? » Le langage interprète cela comme la clause négative 1 2 ... pL L L¬ ∨¬ ∨ ∨¬ . Il ajoute cette clause au langage, et essaye d’en déduire la clause vide par une preuve par réfutation. S’il parvient à déduire la clause vide il répond ‘Yes’ et fournit la substitution employée. Exemple, dans ce cas le programme répondrait : X pierreYes

=

>

Une réponse négative : No > doit-être interprétée comme « je ne sais pas répondre » (c’est ici qu’on retrouve l’indécidabilité !!), et non comme une réponse négative à la question. Si la question ne comportait pas de variable :

( , ).grandpere pierre anne> (qui doit se comprendre comme « Est-ce que le prédicat est vrai ? » alors l’interpréteur répond

simplement (dans ce cas) :

Yes Exemple : L’exemple le plus élémentaire de l’utilisation de PROLOG est l’écriture de bases de données évoluées, qui peuvent répondre à certaines questions posées par l’utilisateur. Par exemple on peut créer une base de données indiquant le grade d’officiers. Il suffit pour celà de considérer les faits :

( , ).( , ).( , ).( , ).( , ).

( , ).

grade dupond lieutenantgrade durand capitainegrade dubois capitainegrade dieudonne lieutenantcolonelgrade michel colonel

grade martin general

à la question :

( , ).grade michel X>

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 58: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

56

Le logiciel répondra : X colonelYes

=

Tandis qu’à la question ( , ).grade X capitaine

le logiciel répondra par la liste des capitaines :

X durandX dubois

Yes

==

On souhaiterait aussi que le logiciel réponde aux questions « qui sont les plus haut gradés que le Cne Durand, qui sont les moins gradés. Cela peut-être fait en considérant des assertions du genre : , , ( ( , ) ( , )) ( , )x y grade x lieutenant grade y capitaine plusgrade y x∀ ∀ ∧ ⇒ , c'est-à-dire de rajouter les règles :

( , ) : ( , ), ( , ).( , ) : ( , ), ( , ).( , ) : ( , ), ( , ).( , ) : ( ,

plusgrade X Y grade X capitaine grade Y lieutenantplusgrade X Y grade X lieutenantcolonel grade Y capitaineplusgrade X Y grade X colonel grade Y capitaineplusgrade X Y grade X general

−−−− ), ( , ).grade Y colonel

Mais ce n’est pas suffisant. Il faut aussi que le logiciel comprenne que la relation plusgrade est transitive, i.e. , , , ( ( , ) ( , )) ( , )x y z plusgrade x y plusgrade y z plusgrade x z∀ ∀ ∀ ∧ ⇒ . Celà donne la forme clausale ( , ) ( , ) ( , )plusgrade x y plusgrade y z plusgrade x z¬ ∨¬ ∨ qu’il suffit de rentrer par la règle :

( , ) : ( , ), ( , ).plusgrade X Z plusgrade X Y plusgrade Y Z− Maintenant à la question >plusgrade(X,durand) . Le logiciel répond en donnant tous les plus gradés que le Cne Durand, quelque chose comme : X=martin

X=michel Yes Tandis qu’à la question >plusgrade(michel,X). Le logiciel répondra en donnant tous les subordonnés du Colonel Michel. On voit sur cet exemple qu’il est facile d’écrire de base de données pouvant répondre à des questions plus « intelligentes », pour peu que l’on définisse des lois qui permettent au logiciel de répondre. Remarque : - Le langage PROLOG utilise une stratégie linéaire par entrée en profondeur, avec retour arrière, et doit faire certains choix dans l’ordre d’application des résolutions. Ces choix sont faits en vue de rendre le programme implémentable, au détriment peut-être d’autres choses : ainsi effectuée cette stratégie n’est pas effectivement complète. - La présentation que nous en avons donné est on ne peut plus succincte ! Nous n’avons exposé que le principe général ; nous verrons plus de fonctionnalités durant le cours.

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 59: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

57

II.4.) Illustration « Vous vous trouvez au purgatoire. Deux malins génies ont profité de l’absence de St Pierre pour vous faire une farce. Il vous présentent deux portes : l’une d’entre-elles ouvre sur le paradis tandis que l’autre ouvre sur l’enfer. Plutôt que de peser votre âme pour décider où vous envoyer ils ont décidé de vous laisser choisir laquelle des deux portes ouvrir, les deux portes étant évidemment, vues de l’extérieur, absolument semblables, et votre choix bien évidemment irrévocable. Seuls les deux génies savent quelle porte ouvre sur le paradis. Ils vous annoncent que pour vous aider ils vous permettent de poser une et une seule question à l’un seul d’entre eux. Ils vous disent aussi que l’un d’entre eux à par avance décidé de vous donner une réponse erronée, et l’autre de vous donner une réponse juste, sans bien sûr vous en dire plus. Vous prenez quelques minutes pour réfléchir, et la solution vous apparaît soudain : vous vous tournez vers le premier des deux malins génies, et lui demandez : « que me dirait votre comparse si je lui demandais quelle porte ouvre sur le paradis ?». « Il vous dirait que c’est celle-ci » vous répond le malin génie. Vous vous dirigez alors vers l’autre porte et l’ouvrez. » • Montrez par une preuve de réfutation que vous avez fait le bon choix. Nous commençons par considérer un langage qui puisse retranscrire l’énoncé. Nous allons considérer deux symboles de constante a et b qui désigneront les deux malins génies. Nous considérons aussi deux prédicats ( )S x : x est sincère et ( )M x : x ment. Nous considérons une fonction ( , )Dit x y signifiant le terme : x dit y, et une autre constante Droite pour la phrase : ‘c’est la porte de droite’. Enfin on considère un prédicat ( )Exact x qui signifie qu’il exact que x. Il sera interprété ainsi : ( ( , ))Exact Dit x y : il est vrai que x dit y (soit encore « x dit y » mais en tant que littéral et non plus en temps que terme), et ( )Exact Droite : c’est bien la porte de droite. L’énoncé peut alors se transcrire par : • Soit x ment soit il est sincère ; l’un ou l’autre : 1- , ( ) ( )x S x M x∀ ∨ 2- , ( ( ) ( ))x S x M x∀ ¬ ∧ • Si une personne sincère dit y, alors il est exact que y, sinon il est faux que y. 3- , , ( ( ) ( ( , ))) ( )x y S x Exact Dit x y Exact y∀ ∀ ∧ ⇒ 4- , , ( ( ) ( ( , ))) ( )x y S x Exact Dit x y Exact y∀ ∀ ∧¬ ⇒¬ • De même si un menteur dit y, il est faux que y, sinon il est exact que y. 5- , , ( ( ) ( ( , ))) ( )x y M x Exact Dit x y Exact y∀ ∀ ∧ ⇒¬ 6- , , ( ( ) ( ( , ))) ( )x y M x Exact Dit x y Exact y∀ ∀ ∧¬ ⇒ •On peut aussi pour simplifier la résolution ajouter que si a répondait d’une certaine façon, b dirait le contraire, et réciproquement. 7- , ( ( , )) ( ( , ))x Exact Dit a x Exact Dit b x∀ ⇔¬ • le génie a dit que le génie b dirait qu’il faut choisir la porte de droite. 8- ( ( ( ( , )))Exact Dit a Dit b Droite • Et ce que l’on veut prouver c’est que ce n’est pas la porte de droite qu’il faut choisir, soit que ( )Exact Droite¬ . On considère donc sa négation : 9- ( )Exact Droite

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 60: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

58

On transforme ces formules sous forme clausale. On obtient :

1- 1 1( ) ( )S z M z∨ 2- 2 2( ) ( )S z M z¬ ∨¬ 3- 1 1 1 1( ) ( ( , )) ( )S x Exact Dit x y Exact y¬ ∨¬ ∨ 4- 2 2 2 2( ) ( ( , )) ( )S x Exact Dit x y Exact y¬ ∨ ∨¬ 5- 3 3 3 3( ) ( ( , )) ( )M x Exact Dit x y Exact y¬ ∨¬ ∨¬ 6- 4 4 4 4( ) ( ( , )) ( )M x Exact Dit x y Exact y¬ ∨ ∨ 7- ( ( , )) ( ( , ))Exact Dit a x Exact Dit b x¬ ∨¬ 8- ( ( ( ( , )))Exact Dit a Dit b Droite 9- ( )Exact Droite

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 61: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

59

2 2( / , / )x a y Droite

3( / )x a

3( / )y Droite

3 8

1

1 1( / , / ( , ))x a y Dit b Droite

( ) ( ( , ))S a Exact Dit b droite¬ ∨

( ) ( ( , ))M a Exact Dit b Droite∨

1( / )x a

( ) ( ( , ))M a Exact Dit a Droite∨¬

7 5 9

3 3( ) ( ( , ))M x Exact Dit x Droite¬ ∨¬

( ( , ))Exact Dit a Droite¬ 7

( ( , ))Exact Dit b droite

4

( ) ( )S a Exact Droite¬ ∨¬

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux

Page 62: Approche logique de l’intelligence artificielle · Approche logique de l’intelligence artificielle Jean-Philippe Préaux preaux Où l’on voit comment une méthode de démonstration

60

Ce qui prouve la conclusion souhaitée. Quelques ouvrages de référence : − « Outils logiques pour l’intelligence artificielle », JP.Delahaye, Editions Eyrolles, 1986. − « Principes d’intelligence artificielle », Nils J.Nilson, Collection Techniques avancées de l’informatique, Editions CEPADUES, 1988. − « Fondements mathématiques de l’informatique »,J.Stern, Editions Mc Graw-Hill, 1990.

3( , ( , ))y Dit b Droite

( ) ( )S a Exact Droite¬ ∨¬ ( ( , ))Exact Dit b droite 59

( )S a¬ 3 3( ) ( ( , ( , )))M x Exact Dit x Dit b Droite¬ ∨¬

( )M a¬

8

3( / )x a

1( / )x a

1

( )M a

Approche logique de l'I.A. Jean-Philippe Préaux

http://www.i2m.univ-amu.fr/~preaux