Resolución SDL y Prolog
Resolución SDL y Prolog
Cl
ausulas de Horn
Refutaciones como computaciones
24 de octubre, 2006
Eduardo Bonelli
Resoluci
on SLD y PROLOG
M
etodo de resoluci
on general
Eduardo Bonelli
Resoluci
on SLD y PROLOG
M
etodo de resoluci
on general
{D1 , . . . , Dl , C1 , . . . , Cn }
({A1 , . . . , Am , C1 , . . . , Cn })
donde es el MGU de {B1 , . . . , Bk , D1 , . . . , Dl }.
Asumimos que las clausulas {B1 , . . . , Bk , A1 , . . . , Am } y
{D1 , . . . , Dl , C1 , . . . , Cn } no tienen variables en com
un; en
caso contrario se renombran las variables
Observar que (B1 ) = . . . = (Bk ) = (D1 ) = . . . = (Dl )
La clausula ({A1 , . . . , Am , B1 , . . . , Bn }) se llama resolvente
(de {B1 , . . . , Bk , A1 , . . . , Am } y {D1 , . . . , Dl , C1 , . . . , Cn })
Eduardo Bonelli
Resoluci
on SLD y PROLOG
M
etodo de resoluci
on general
Resolucion SLD
Si bien el metodo de resoluci
on general es completo, hallar
refutaciones es un proceso muy caro en el caso general
Una manera de proceder es restringir el metodo de resolucion
(ej. resolucion lineal)
Mayor eficiencia en el proceso de producir refutaciones puede
lograrse si nos restringimos a subclases de f
ormulas
Una de estas clases es la de Clausulas de Horn
Una clausula de Horn es una disyunci
on de literales que tiene
a lo sumo un literal positivo
Para conjuntos de clausulas de Horn puede usarse una
variante de resoluci
on general, llamada resolucion SLD, que
goza de buenas propiedades
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Clausulas
Forma clausal
Conjuncion de sentencias prenexas de la forma x1 . . . xm C donde
1
C es una disyunci
on de literales y
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Clausula de Horn
Clausula de Horn
Una clausula x1 . . . xm C tal que la disyunci
on de literales C tiene
a lo sumo un literal positivo
OBS: C puede tomar una de las formas:
{B, A1 , . . . , An }
{B}
{A1 , . . . , An } (llamada clausula goal o negativa)
Clausula de Definicion (Definite Clause)
Una clausula x1 . . . xm C tal que la disyunci
on de literales C tiene
exactamente un literal positivo
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Clausulas de Horn
Observacion
No toda formula de primer orden puede expresarse como una
clausula de Horn
Por ejemplo: x.P(x) Q(x)
Sin embargo, el conjunto de clausulas de Horn es
suficientemente expresivo para representar programas, en la
vision de resolucion como computaci
on (mas detalles por
venir)
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Notacion PROLOG
Dado que
B A1 . . . An
(A1 . . . An ) B
(A1 . . . An ) B
se usa la notacion
B : A1 , . . . , An para {B, A1 , . . . , An }
B. para B
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Derivacion SLD
Derivacion SLD
Sea S un conjunto de clausulas de Horn (con nombre de variables
disjuntos) que consiste en
un conjunto D de clausulas de definici
on
un goal G
Una derivacion SLD para S es una secuencia
< N0 , N1 , . . . , Np >
de clausulas negativas que satisfacen las siguientes dos condiciones.
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Derivacion SLD
N0 = G , donde G es el goal
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Refutacion SLD
Refutacion SLD: derivaci
on SLD < N0 , . . . , Np > tal que Np =
C1 TTTT N0 = G
TTTT
T
C2 TTTT
N1
TTTT
T
C3 TTTT
N2
TTTT
T
2
3
N3
...
Cp1 SS
SSSS
S
Cp SSS
Np1
SSSS
Np =
Eduardo Bonelli
p1
p
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Refutacion SLD
En cada paso, las clausulas
: A1 , . . . , Ak1 , Ak , Ak+1 , . . . , An y A : B1 , . . . , Bm son
resueltas
Los atomos Ak y A son unificados con MGU i
El literal Ak se llama atomo seleccionado de Ni
Las clausulas N0 , C1 , . . . , Cp se llaman clausulas de entrada
La sustitucion
p . . . 1
se llama sustituci
on respuesta (se usa en PROLOG para
extraer la salida del programa)
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Ejemplo
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Ejemplo
Cl
ausula goal
Cl
ausula de entrada
: add(succ(0), V , succ(succ(0))) C2
: add(succ(0), Y , succ(0))
C1
donde
1 = {succ(0)/X , succ(0)/Z , succ(Y )/V }
2 = {succ(0)/U, 0/Y }
La sustitucion resultado es
Sust.
1
2
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Correctitud y completitud
Correctitud
Si un conjunto de clausulas de Horn tiene una refutacion SLD,
entonces es insatisfactible
Completitud
Sea L un lenguaje de primer orden sin igualdad. Dado un conjunto
finito S de clausulas de Horn, si S es insatisfactible, existe una
refutacion SLD cuya primera clausula es alguna clausula negativa
: B1 , . . . , Bn en S
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Arboles
SLD
Tal como se desprende de su definici
on, hay dos decisiones
que determinan el espacio de b
usqueda en el que se halla una
refutacion SLD
1
Estrategia de selecci
on del atomo seleccionado Ak
Dado Ni =: A1 , . . . , An , da lo mismo seleccionar cualquier
Estrategia de selecci
on de la clausula de definicion a usar para
construir el resolvente (junto con Ak )
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
Ejemplo
Cl
ausulas de Def.
p(X,Z) :- q(X,Y), p(Y,Z).
p(X,X).
q(a,b).
Goal
p(X,b)
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
: p(b, b)
MMM
ll
MMM2
1 llll
l
MMM
lll
l
M&
l
vl
({a/X})
: q(b, U), p(U, b) falla
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Cl
ausulas de Horn
Derivaci
on SLD
Ejemplo
Arboles
SLD
DD
DD 2
DD
DD
!
ss
1 ss
s
s
s
s
y ss
: q(X , Y ), p(Y , b)
-:q(X,Y),q(Y,U),
p(U,b)
-:q(X,Y),q(Y,U),
q(U,V),p(V,b)
1
: q(X , b)
II
II 2
II
II
II
I$
ww
1 ww
w
w
w
{w
w
JJ
JJ2
JJ
JJ
JJ
J$
Eduardo Bonelli
({b/X})
II
II
II2
II
II
I$
rrr
1 rr
r
r
yrrr
: q(X , a) falla
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Motivacion
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Motivacion
Volviendo al ejemplo que consista en las clausulas
C1 = add(U, 0, U).
C2 = add(X , succ(Y ), succ(Z )) : add(X , Y , Z ).
B =: add(succ(0), V , succ(succ(0)))
Observar que
U.C1 X .Y .Z .C2 V .B es insatisf
sii
(U.C1 X .Y .Z .C2 V .B) es valida
sii
(U.C1 X .Y .Z .C2 ) V .B es valida
sii
(U.C1 X .Y .Z .C2 ) V .B es valida
sii
(U.C1 X .Y .Z .C2 ) V .add(succ(0), V , succ(succ(0))) es valida
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Motivacion
La sentencia
U.C1 X .Y .Z .C2 define intuitivamente a la suma
V .add(succ(0), V , succ(succ(0))) pregunta por un V tal que
succ(0) + V = succ(succ(0))
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Programa logico
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Notar que
P x1 . . . . xn .G
P (x1 . . . . .xn .B1 . . . Bn )
(P (x1 . . . . .xn .B1 . . . Bn ))
P (x1 . . . . .xn .B1 . . . Bn ))
es
es
es
es
insatisf. sii
insatisf. sii
insatisf. sii
valida
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Notar que
P x1 . . . . xn .G
P (x1 . . . . .xn .B1 . . . Bn )
(P (x1 . . . . .xn .B1 . . . Bn ))
P (x1 . . . . .xn .B1 . . . Bn ))
es
es
es
es
insatisf. sii
insatisf. sii
insatisf. sii
valida
Usaremos resoluci
on SLD para hallar una refutacion de
P x1 . . . . xn .G
La sustitucion respuesta proveera las instancias deseadas
para las variables x1 , . . . , xn
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Ejemplo I
padres(fred, sally).
padres(tina, sally).
padres(sally, john).
padres(sally, diane).
padres(sam, bill).
hermanos(A, B) :- padres(P, A), padres(P, B), A \== B.
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Ejemplo II
Terminos de primer orden para representar estructuras de datos
mas(A,B) (suma)
menos(A,B) (resta)
por(A,B) (producto)
eval(mas(A,B),CV):-eval(A,AV),eval(B,BV),CV is AV+BV.
eval(menos(A,B),CV):-eval(A,AV),eval(B,BV),CV is AV-BV.
eval(por(A,B),CV):-eval(A,AV),eval(B,BV),CV is AV*BV.
eval(Num,Num):-number(Num).
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Cut
Deduccion de informaci
on negativa
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Cut (!)
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Cut (!)
Programa ejemplo
p(a).
p(X) :- q(X), r(X).
p(X) :- u(X).
q(X) :- s(X).
r(a).
r(b).
s(a).
s(b).
s(c).
u(d).
Eduardo Bonelli
?- p(X),!.
X=a ;
no
?- r(X),!,s(Y).
X=a Y=a ;
X=a Y=b ;
X=a Y=c ;
no
?- r(X), s(Y), !.
X=a Y=a ;
no
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
es
es
es
es
valida sii
insatisf. sii
insatisf. sii
insatisf.
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
CWA
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Negation as failure
Es una version restringida de la regla de CWA
Se dice que un arbol SLD falla finitamente si es finito y no
tiene ramas de exito
Dado un programa P el conjunto de falla finita de P es
{B | B atomo ground y existe un arbol SLD que falla
finitamente con : B como raz}
Negation as failure
B atomo ground B en conjunto de falla finita de P
B
Es menos poderoso que CWA pero efectivo (ie. computable)
Eduardo Bonelli
Resoluci
on SLD y PROLOG
Motivaci
on
Programa L
ogico
Ejemplos en PROLOG
M
as sobre PROLOG
Ejemplo
Eduardo Bonelli
Resoluci
on SLD y PROLOG