Intelligence Artificielle Logique (3/3)
Bruno Bouzy
http://web.mi.parisdescartes.fr/~bouzy [email protected]
Licence 3 Informatique
UFR Mathématiques et Informatique
Université Paris Descartes
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
Inf´erence en logique du premier ordre
Inf´ erence en logique du premier ordre
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
Terme ferm´ e : Terme qui ne contient pas de variable Substitution :
Paire Variable/Terme
SoitE un ´enonc´e,σun ´enonc´e. Eσ(ouSubst(E, σ)) repr´esente le r´esultat de la substitutionσdansE
Exemple :
E=Femme(x,y) σ={x/Hilary, y/Bill}
Eσ=Femme(Hilary,Bill)
Inf´erence en logique du premier ordre
Instanciation universelle
Instanciation universelle (UI) : Chaque instanciation d’un ´ enonc´ e universellement quantifi´ e peut ˆ etre inf´ er´ e :
∀v , α Subst({v/g }, α)
pour toute variable v et pour tout terme ferm´ e g Exemple
∀x Roi(x)∧Cupide(x)⇒Mechant(x) Roi(Jean)∧Cupide(Jean)⇒Mechant(Jean) Roi(Richard)∧Cupide(Richard)⇒Mechant(Richard)
Roi(Pere(Jean))∧Cupide(Pere(Jean))⇒Mechant(Pere(Jean))
Instanciation existentielle (EI) : Pour tout ´ enonc´ e α, pour toute variable v et pour tout symbole de constante k qui n’apparait pas dans la base de connaissances, on a :
∃v , α Subst({v/k}, α) Exemple
∃x Couronne(x)∧SurTete(x,Jean) Couronne(C1)∧SurTete(C1,Jean)
C1est un nouveau symbole de constante, appel´econstante de Skolem
Cas particulier de la skol´ emisation
Inf´erence en logique du premier ordre
R´ eduction ` a l’inf´ erence propositionnelle
Base de connaissances :
∀x Roi(x)∧Cupide(x)⇒Mechant(x) Roi(Jean)
Cupide(Jean) Frere(Richard,Jean)
Instanciation universelle : toutes les substitutions possibles :
Roi(Jean)∧Cupide(Jean)⇒Mechant(Jean)Roi(Richard)∧Cupide(Richard)⇒Mechant(Richard) Roi(Jean)
Cupide(Jean) Frere(Richard,Jean)
La nouvelle BC est propositionnalis´ ee
Toute base de connaissances en logique du 1er ordre peut ˆ etre propositionnalis´ ee de mani` ere ` a pr´ eserver la relation de cons´ equence
→ un ´enonc´e est d´eduit de la nouvelle base de connaissances ssi il peut ˆetre d´eduit de la base de connaissances originale
Id´ ee : propositionnaliser la BC et la requˆ ete, appliquer la r´ esolution, retourner un r´ esultat
Probl` eme : Avec les symboles de fonction, l’ensemble des substitutions possibles des termes ferm´ e est infini
Pere(Pere(Pere(Jean)))
Inf´erence en logique du premier ordre
R´ eduction ` a l’inf´ erence propositionnelle
Th´ eor` eme de Herbrandt (1930) : Si un ´ enonc´ e est cons´ equence de la BC de premier ordre d’origine, alors il existe une preuve qui ne fait appel qu’` a un sous ensemble fini de la BC propositionnalis´ ee.
Id´ ee :
instancier d’abord avec toutes les constantes (Richard,Jean);
puis les termes de profondeur 1 (Pere(Richard),Pere(Jean)) puis les termes de profondeur 2
...
→ obtenir l’´enonc´e cons´equence
Probl` eme : fonctionne si l’´ enonc´ e est cons´ equence, mais boucle si l’´ enonc´ e n’est pas cons´ equence
Th´ eor` eme de Turing et Church (1936) : En logique du premier ordre, la question de la cons´ equence logique est semi-d´ ecidable
→ Il existe des algorithmes qui disent “oui” `a tout ´enonc´e cons´equence, mais il n’en existe pas qui disent “non” `a tout ´enonc´e non-cons´equence.
La propositionnalisation semble g´ en´ erer beaucoup d’´ enonc´ es inutiles Exemple :
∀x Roi(x)∧Cupide(x)⇒Mechant(x) Roi(Jean)
∀y,Cupide(y) Frere(Richard,Jean)
→ On d´eduitMechant(Jean), mais ´egalement beaucoup d’´enonc´es comme Cupide(Richard) qui sont non pertinents
Avec p pr´ edicats k-aires et n constantes, il y a p.n
kinstanciations
Inf´erence en logique du premier ordre
Inf´ erence en logique du premier ordre
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
On pourrait obtenir l’inf´ erence imm´ ediatement si l’on pouvait trouver une substitution θ telle que Roi (x ) et Cupide(x ) correspondent ` a Roi (Jean) et Cupide(y )
→ θ={x/Jean,y/Jean}
Unify(α, β) = θ si αθ = βθ
p q θ
Connait(Jean, x) Connait(Jean, Jeanne)
Connait(Jean, x) Connait(y , Bill)
Connait(Jean, x) Connait(y , Mere(y ))
Connait(Jean, x) Connait(x , Bill)
Inf´erence en logique du premier ordre
Unification
On pourrait obtenir l’inf´ erence imm´ ediatement si ’lon pouvait trouver une substitution θ telle que Roi (x ) et Cupide(x ) correspondent ` a Roi (Jean) et Cupide(y )
→ θ={x/Jean,y/Jean}
Unify(α, β) = θ si αθ = βθ
p q θ
Connait(Jean, x) Connait(Jean, Jeanne) {x/Jeanne}
Connait(Jean, x) Connait(y , Bill)
Connait(Jean, x) Connait(y , Mere(y ))
Connait(Jean, x) Connait(x , Bill)
On pourrait obtenir l’inf´ erence imm´ ediatement si ’lon pouvait trouver une substitution θ telle que Roi (x ) et Cupide(x ) correspondent ` a Roi (Jean) et Cupide(y )
→ θ={x/Jean,y/Jean}
Unify(α, β) = θ si αθ = βθ
p q θ
Connait(Jean, x) Connait(Jean, Jeanne) {x/Jeanne}
Connait(Jean, x) Connait(y , Bill) {x/Bill, y /Jean}
Connait(Jean, x) Connait(y , Mere(y ))
Connait(Jean, x) Connait(x , Bill)
Inf´erence en logique du premier ordre
Unification
On pourrait obtenir l’inf´ erence imm´ ediatement si ’lon pouvait trouver une substitution θ telle que Roi (x ) et Cupide(x ) correspondent ` a Roi (Jean) et Cupide(y )
→ θ={x/Jean,y/Jean}
Unify(α, β) = θ si αθ = βθ
p q θ
Connait(Jean, x ) Connait(Jean, Jeanne) {x /Jeanne}
Connait(Jean, x ) Connait(y , Bill ) {x /Bill, y /Jean}
Connait(Jean, x ) Connait(y , Mere(y)) {y /Jean, x /Mere(Jean)}
Connait(Jean, x ) Connait(x , Bill)
On pourrait obtenir l’inf´ erence imm´ ediatement si ’lon pouvait trouver une substitution θ telle que Roi (x ) et Cupide(x ) correspondent ` a Roi (Jean) et Cupide(y )
→ θ={x/Jean,y/Jean}
Unify(α, β) = θ si αθ = βθ
p q θ
Connait(Jean, x ) Connait(Jean, Jeanne) {x /Jeanne}
Connait(Jean, x ) Connait(y , Bill ) {x /Bill, y /Jean}
Connait(Jean, x ) Connait(y , Mere(y)) {y /Jean, x /Mere(Jean)}
Connait(Jean, x ) Connait(x , Bill) ´ echec
Inf´erence en logique du premier ordre
Unification
On pourrait obtenir l’inf´ erence imm´ ediatement si ’lon pouvait trouver une substitution θ telle que Roi (x ) et Cupide(x ) correspondent ` a Roi (Jean) et Cupide(y )
→ θ={x/Jean,y/Jean}
Unify(α, β) = θ si αθ = βθ
p q θ
Connait(Jean, x ) Connait(Jean, Jeanne) {x /Jeanne}
Connait(Jean, x ) Connait(y , Bill ) {x /Bill, y /Jean}
Connait(Jean, x ) Connait(y , Mere(y)) {y /Jean, x /Mere(Jean)}
Connait(Jean, x ) Connait(x , Bill) ´ echec
Normalisation s´ epar´ ee : renommer les variables de fa¸ con ` a empˆ echer toute interf´ erence de nom
→ Connait(z12,Bill)
Il peut y avoir plusieurs unificateurs :
Connait(Jean,x) etConnait(y,z)→ θ={y/Jean, x/z}
→ θ={y/Jean, x/Jean, z/Jean}
Le premier unificateur est plus g´ en´ eral que le second
Il existe un seul unificateur plus g´ en´ eral (MGU, Most General Unifier) qui est unique, au renommage des variables pr` es
→ MGU =θ={y/Jean, x/z}
Inf´erence en logique du premier ordre
Algorithme d’unification
Inf´erence en logique du premier ordre
Skolemisation
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
Skol´ emisation : Suppression des quantifieurs d’une formule, afin d’appliquer une proc´ edure d’inf´ erence
Quantifieurs existentiels : 2 cas
Variables qui ne d´ependent pas d’une variable universellement quantifi´ee : constante de Skolem, qui n’appartient pas d´ej`a `a la base de connaissances Variables qui d´ependent de variable(s) universellement quantifi´ee : fonction de Skolemdont les arguments sont les variables universelles dans la port´ee du quantifieur universel
Exemple :
∃x∀y,z∃t,P(x)∧(Q(y,z)⇒R(x,t)) On obtient :
∀y,z,P(A)∧(Q(y,z)⇒R(A,f(y,z)))
Quantifieurs universels : simplement supprim´ es
Inf´erence en logique du premier ordre
Inf´ erence en logique du premier ordre
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
p
01, p
02, . . . , p
0n, (p
1∧ p
2∧ . . . ∧ p
n⇒ q) qθ
Par exemple :
p
10est Roi (Jean) p
1est Roi(x) p
20est Cupide(y ) p
2est Cupide(x) θ est {x /Jean, y /Jean} q est Mechant(x ) θq est Mechant(Jean)
Le Modus Ponens g´ en´ eralis´ e est utilis´ e sur des bases de connaissances
compos´ ees de clauses d´ efinies (exactement un lit´ eral positif)
Inf´erence en logique du premier ordre
Inf´ erence en logique du premier ordre
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
Base de connaissance
La loi stipule que c’est un crime pour un am´ ericain de vendre des armes
`
a des nations hostiles. Le pays Nono, un ennemi de l’Am´ erique, a des missiles, et tous ses missiles lui ont ´ et´ e vendus par le colonel West, qui est am´ ericain.
⇒ Prouvons que West est un criminel
Inf´erence en logique du premier ordre
Exemple de base de connaissance
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
“Nono ...a des missiles” :
“tous ses missiles lui ont ´et´e vendus par le colonel West” : Les missiles sont des armes :
Un ennemi de l’Am´erique est consid´er´e comme hostile :
“West, qui est am´ericain” :
“Le pays Nono, un ennemi de l’Am´erique” :
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
∀x∀y∀z Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
“tous ses missiles lui ont ´et´e vendus par le colonel West” : Les missiles sont des armes :
Un ennemi de l’Am´erique est consid´er´e comme hostile :
“West, qui est am´ericain” :
“Le pays Nono, un ennemi de l’Am´erique” :
Inf´erence en logique du premier ordre
Exemple de base de connaissance
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
∀x∀y∀z Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
∃x Missile(x)∧Possede(Nono,x)
“tous ses missiles lui ont ´et´e vendus par le colonel West” : Les missiles sont des armes :
Un ennemi de l’Am´erique est consid´er´e comme hostile :
“West, qui est am´ericain” :
“Le pays Nono, un ennemi de l’Am´erique” :
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
∀x∀y∀z Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
∃x Missile(x)∧Possede(Nono,x)
“tous ses missiles lui ont ´et´e vendus par le colonel West” :
∀x Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :
Un ennemi de l’Am´erique est consid´er´e comme hostile :
“West, qui est am´ericain” :
“Le pays Nono, un ennemi de l’Am´erique” :
Inf´erence en logique du premier ordre
Exemple de base de connaissance
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
∀x∀y∀z Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
∃x Missile(x)∧Possede(Nono,x)
“tous ses missiles lui ont ´et´e vendus par le colonel West” :
∀x Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :∀x Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
“West, qui est am´ericain” :
“Le pays Nono, un ennemi de l’Am´erique” :
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
∀x∀y∀z Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
∃x Missile(x)∧Possede(Nono,x)
“tous ses missiles lui ont ´et´e vendus par le colonel West” :
∀x Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :∀x Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
∀x Ennemi(x,Amerique)⇒Hostile(x)
“West, qui est am´ericain” :
Inf´erence en logique du premier ordre
Exemple de base de connaissance
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
∀x∀y∀z Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
∃x Missile(x)∧Possede(Nono,x)
“tous ses missiles lui ont ´et´e vendus par le colonel West” :
∀x Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :∀x Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
∀x Ennemi(x,Amerique)⇒Hostile(x)
“West, qui est am´ericain” :Americain(West)
“Le pays Nono, un ennemi de l’Am´erique” :
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” :
∀x∀y∀z Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
∃x Missile(x)∧Possede(Nono,x)
“tous ses missiles lui ont ´et´e vendus par le colonel West” :
∀x Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :∀x Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
∀x Ennemi(x,Amerique)⇒Hostile(x)
“West, qui est am´ericain” :Americain(West)
Inf´erence en logique du premier ordre
Exemple de base de connaissance
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” : Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” :
∃x Missile(x)∧Possede(Nono,x)
“tous ses missiles lui ont ´et´e vendus par le colonel West” :
∀x Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :∀x Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
∀x Ennemi(x,Amerique)⇒Hostile(x)
“West, qui est am´ericain” :Americain(West)
“Le pays Nono, un ennemi de l’Am´erique” :Ennemi(Nono,Amerique)
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” : Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” : Possede(Nono,M1) Missile(M1)
“tous ses missiles lui ont ´et´e vendus par le colonel West” :
∀x Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :∀x Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
∀x Ennemi(x,Amerique)⇒Hostile(x)
Inf´erence en logique du premier ordre
Exemple de base de connaissance
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” : Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” : Possede(Nono,M1) Missile(M1)
“tous ses missiles lui ont ´et´e vendus par le colonel West” : Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :∀x Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
∀x Ennemi(x,Amerique)⇒Hostile(x)
“West, qui est am´ericain” :Americain(West)
“Le pays Nono, un ennemi de l’Am´erique” :Ennemi(Nono,Amerique)
“... c’est un crime pour un am´ericain de vendre des armes `a des nations hostiles” : Americain(x)∧Arme(y)∧Vend(x,y,z)∧Hostile(z)⇒Criminel(x)
“Nono ...a des missiles” : Possede(Nono,M1) Missile(M1)
“tous ses missiles lui ont ´et´e vendus par le colonel West” : Missile(x)∧Possede(x,Nono)⇒Vend(West,x,Nono) Les missiles sont des armes :Missile(x)⇒Arme(x) Un ennemi de l’Am´erique est consid´er´e comme hostile :
Ennemi(x,Amerique)⇒Hostile(x)
Inf´erence en logique du premier ordre
Algorithme de chaˆınage avant
Valide et complet pour les bases de connaissances de clauses d´ efinies Datalog : base de connaissances de clauses d´ efinies sans symboles de fonctions
Le chaˆınage avant termine en un nombre fini d’it´erations
Peut ne pas terminer dans le cadre g´ en´ eral si α n’est pas cons´ equence
→ In´evitable : la cons´equence logique pour des clauses d´efinies est semi-d´ecidable
Chaˆınage avant incr´ emental : pas besoin de tester une r` egle ` a l’it´ eration k
si l’un de ses pr´ emisses n’a pas ´ et´ e ajout´ e ` a l’it´ eration k − 1
Inf´erence en logique du premier ordre
Inf´ erence en logique du premier ordre
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
Subst(Compose(θ
1, θ
2), p) = Subst(θ
2, Subst(θ
1, p))
Inf´erence en logique du premier ordre
Propri´ et´ es du chaˆınage arri` ere
Chaˆınage arri` ere en profondeur d’abord : la complexit´ e spatiale est lin´ eaire en la taille de la preuve
Incomplet : boucles infinies
→ Comparer le but actuel avec tous les buts empil´es
Inefficace : sous-buts redondants
→ Mettre en cache les r´esultats pr´ec´edents (espace suppl´ementaire)
Utilis´ e pour la programmation logique
R´ eduction de l’inf´ erence du premier ordre ` a l’inf´ erence propositionnelle
Unification Skolemisation
Modus Ponens g´ en´ eralis´ e Chaˆınage avant
Chaˆınage arri` ere
R´ esolution
Inf´erence en logique du premier ordre
R´ esolution
l
1∨ . . . ∨ l
k, m
1∨ . . . ∨ m
n(l
1∨ . . . ∨ l
i−1∨ l
i+1∨ . . . l
k∨ m
1∨ . . . ∨ m
j−1∨ m
j+1∨ . . . m
n)θ
avec Unify(l
i, ¬m
j) = θ
Les deux clauses sont suppos´ ees ˆ etre normalis´ ees s´ epar´ ement
→ ne partagent aucune variable
Exemple :
(Animal(x) ∨ Aimer (G (x ), x )), (¬Aimer (u, v ) ∨ ¬Tuer (u, v )) Animal(x) ∨ ¬Tuer (G(x), x)
avec θ = {u/G (x ), v /x}
R´ esolution appliqu´ ee sur CNF(BC ∧ ¬α) : compl` ete pour la logique du
1er ordre
“Toute personne qui aime tous les animaux est aim´ ee par quelqu’un”
∀x (∀y Animal (y) ⇒ Aimer (x, y)) ⇒ (∃y Aimer(y , x))
1. Elimination des implications :
∀x ¬(∀y ¬Animal(y ) ∨ Aimer (x , y )) ∨ (∃y Aimer(y , x )) 2. D´ eplacement des ¬ vers l’int´ erieur :
¬∀x p≡ ∃x¬p
¬∃x p≡ ∀x¬p
∀x (∃y ¬(¬Animal(y ) ∨ Aimer(x, y ))) ∨ (∃y Aimer(y , x ))
Inf´erence en logique du premier ordre