Clase 9
Clase 9
Clase 9
Eduardo Bonelli
Departamento de Computacion, FCEyN, UBA
21 de octubre de 2008
Repaso de la clase pasada
Clausulas de Horn y resolucion en Prolog
Refutaciones como computaciones
Metodo de resolucion
Observar que (B
1
) = . . . = (B
k
) = (D
1
) = . . . = (D
l
)
La clausula ({A
1
, . . . , A
m
, B
1
, . . . , B
n
}) se llama resolvente
(de {B
1
, . . . , B
k
, A
1
, . . . , A
m
} y {D
1
, . . . , D
l
, C
1
, . . . , C
n
})
Resoluci on lineal
Preserva completitud
Cada x
1
. . . x
m
C se llama clausula
La forma clausal
x
11
. . . x
1m
1
C
1
. . . x
k1
. . . x
km
k
C
k
se escribe {C
1
, . . . , C
k
} donde C
i
resulta de reemplazar la
disyuncion de literales C
i
por el conjunto de literales asociado
Clausulas de Horn
Una clausula x
1
. . . x
m
C tal que la disyuncion de literales C tiene
a lo sumo un literal positivo
Nota: C puede tomar una de las formas:
{B, A
1
, . . . , A
n
}
{B}
{A
1
, . . . , A
n
} (llamada clausula goal o negativa)
Relaci on con formulas de primer orden
Clausula de la forma x
1
. . . x
m
C tal que la disyuncion de
literales C tiene exactamente un literal positivo
G un clausula negativa
G el goal o meta
Resoluci on SLD
Un secuencia de pasos de resolucion SLD para S es una secuencia
< N
0
, N
1
, . . . , N
p
>
de clausulas negativas que satisfacen las siguientes dos condiciones.
1. N
0
es el goal G
2. sigue en transparencia siguiente
Resoluci on SLD
2. para todo N
i
en la secuencia, 0 < i < p, si N
i
es
{A
1
, . . . , A
k1
, A
k
, A
k+1
, . . . , A
n
}
entonces hay alguna clausula de denicion C
i
de la forma
{A, B
1
, . . . , B
m
} en P tal que A
k
y A son unicables con MGU
, y si
m = 0, entonces N
i +1
es
{(A
1
, . . . , A
k1
, A
k+1
, . . . , A
n
)}
m > 0, entonces N
i +1
es
{(A
1
, . . . , A
k1
, B
1
, . . . , B
m
, A
k+1
, . . . , A
n
)}
Refutaci on SLD
Secuencia de pasos de resolucion SLD < N
0
, . . . , N
p
> tal que
N
p
=
C
1
T
T
T
T
T
T
T
T
T N
0
= G
C
2
T
T
T
T
T
T
T
T
T N
1
1
C
3
T
T
T
T
T
T
T
T
T N
2
2
N
3
3
C
p1
S
S
S
S
S
S
S
. . .
C
p
S
S
S
S
S
S
S
N
p1
p1
N
p
=
p
Sustituci on respuesta
Los atomos A
k
y A son unicados con MGU
i
El literal A
k
se llama atomo seleccionado de N
i
p
. . .
1
C
1
= {add(U, 0, U)}
C
2
= {add(X, succ(Y), succ(Z)), add(X, Y, Z)}
y la clausula goal G
{add(succ(0), V, succ(succ(0)))}
1
= {succ(0)/X, succ(0)/Z, succ(Y)/V}
2
= {succ(0)/U, 0/Y}
La sustitucion resultado es
{succ(0)/X, succ(0)/Z, succ(0)/V, succ(0)/U, 0/Y}
Correcci on y completitud
Correcci on
Si un conjunto de clausulas de Horn tiene una refutacion SLD,
entonces es insatisfactible
Completitud
Dado un conjunto de clausulas de Horn P {G} tal como se
describio, si P {G} es insatisfactible, existe una refutacion SLD
cuya primera clausula es G.
Repaso de la clase pasada
Clausulas de Horn y resolucion en Prolog
Clausulas de Horn y resolucion SLD
Resolucion SLD en Prolog
Refutaciones como computaciones
Resoluci on SLD en Prolog
F
F
F
F
F
F
F
F
q(X, Y), p(Y, b)
3
({b/X})
p(b, b)
1
l
l
l
l
l
l
l
l
l
l
l
l
l
2
L
L
L
L
L
L
L
L
L
L
q(b, U), p(U, b)
falla
({a/X})
Variando la regla de seleccion
C
C
C
C
C
C
C
C
q(X, Y), p(Y, b)
1
.q
q
q
q
q
q
q
q
q
q
2
H
H
H
H
H
H
H
H
H
H
H
({b/X})
q(X, Y), q(Y, U),
p(U, b)
1
.r
r
r
r
r
r
r
r
r
r
2
K
K
K
K
K
K
K
K
K
K
K
q(X, b)
3
N
N
N
N
N
N
N
N
N
N
N
N
N
q(X, Y), q(Y, b)
3
({a/X})
q(X, a)
falla
Variando la regla de b usqueda
C
1
= {add(U, 0, U)}
C
2
= {add(X, succ(Y), succ(Z)), add(X, Y, Z)}
En otras palabras
Existe V tal que 1 + V = 2?
Motivaci on
Lo podemos plantear como la validez de la formula
C
1
C
2
V.add(succ(0), V, succ(succ(0)))
Es decir,
(U.C
1
X.Y.Z.C
2
)
Dene la suma
V.add(succ(0), V, succ(succ(0)))
Pide calcular V
es valida
Motivaci on
Esto es lo mismo que preguntarse por la insatisfactilidad de
C
1
C
2
V.add(succ(0), V, succ(succ(0)))
O lo que es lo mismo
C
1
C
2
V.add(succ(0), V, succ(succ(0)))
Resolucion SLD testea por insatisfactibilidad!
Motivaci on
Resolucion SLD se dispara a partir del conjunto de clausulas
Clausula negativa
{A
1
, . . . , A
n
}
Notaci on Prolog para programas l ogicos
B A
1
. . . A
n
(A
1
. . . A
n
) B
(A
1
. . . A
n
) B
Como consecuencia, las clausulas en P se escriben
B : A
1
, . . . , A
n
para {B, A
1
, . . . , A
n
} (reglas)
B. para B (hechos)
Ejemplo de la suma en notaci on Prolog
Volviendo al ejemplo de la suma, el programa Prolog es
add(U,0,U).
add(X,succ(Y),succ(Z)):-add(X,Y,Z).
Ingresamos el goal
?- add(succ(0),V,succ(succ(0)))
La respuesta es:
V=succ(0)
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.
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).
Debe usarse con cuidado dado que puede podarse una rama
de exito
Ejemplo
?-member(Y,[[1,2],[3,4]]),member(X,Y).
% devuelve X=1,X=2,X=3,X=4 sucesivamente
?-member(Y,[[1,2],[3,4]]),member(X,Y),!.
% devuelve X=1 solamente
?-member(Y,[[1,2],[3,4]]),!,member(X,Y).
% devuelve X=1, X=2 sucesivamente
?-!,member(Y,[[1,2],[3,4]]),member(X,Y).
% devuelve X=1,X=2,X=3,X=4 sucesivamente
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).
?- 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
Ejemplo
Denicion de max
max(X,Y,Y) :- X =< Y.
max(X,Y,X) :- X>Y.
Mejor as
max(X,Y,Y) :- X =< Y, !.
max(X,Y,X) :- X>Y.
Y esto?
max(X,Y,Y) :- X =< Y, !.
max(X,Y,X).
Probar max(2,3,2)
Cut - En general