Vous êtes sur la page 1sur 11

Clausulas de Horn.

Resolucion SLD

1 / 114

Refinando la resolucion
La resolucion general es un mecanismo muy potente de
demostracion...
pero tiene un alto grado de indeterminismo:
en la seleccion de las clausulas con las que hacer resoluci
on
y en la seleccion de los literales a utilizar en la resoluci
on

Desde el punto de vista computacional es muy ineficiente.


Desde el punto de vista practico puede sacrificarse algo de
expresividad y obtener un mecanismo mas eficiente que sustente
un lenguaje de programacion mas realista:
restringimos la forma de las clausulas de modo que a lo sumo
tengan un literal positivo. En notaci
on de Kowalski esto quiere
decir que a lo sumo tienen un atomo en el lado izquierdo de
estudiaremos un metodo de resoluci
on especfico para este
tipo de clausulas.
2 / 114

Clausulas de Horn
Una clausula de Horn es una secuencia de literales que contiene a
lo sumo un literal positivo. Al escribirla en notaci
on de Kowalski
tendra una de estas cuatro formas:
1
2

Hecho: p
Regla: p q1 , . . . , qn
|{z}
| {z }
cabeza

3
4

cuerpo

Objetivo: q1 , . . . , qn

Exito:

Los hechos y las reglas se denominan clausulas definidas:


los hechos representan hechos acerca de los objetos (de
nuestro universo de discurso), relaciones elementales entre
estos objetos
las reglas expresan relaciones condicionales entre los objetos,
dependencias.
3 / 114

Clausulas de Horn (cont.)


Las reglas engloban todos los casos en el siguiente sentido:
un hecho es una regla con cuerpo vaco
un objetivo es una regla con cabeza vaca
y el exito es una regla con cabeza y cuerpo vacos
N
otese que en las clausulas de Horn trabajamos con secuencias de
literales en vez de conjuntos (como venamos haciendo con las
clausulas generales). Esto implica dos cosas:
los literales pueden aparecer repetidos en el cuerpo
hay un orden en los literales del cuerpo (podemos hablar del
primer literal, segundo literal, etc).

4 / 114

Predicados y programas logicos


Un predicado p queda definido por el conjunto de cla
usulas
(hechos y reglas) cuyas cabezas tienen ese smbolo de
predicado. As pues la definici
on de un predicado en general
tendra el aspecto:
p(t1 , . . . , tn )
p(s1 , . . . , sn )
...
p(u1 , . . . , un )
p(u1 , . . . , un )
...

q1 (. . .), . . . , qm (. . .)
r1 (. . .), . . . , rk (. . .)

(puede haber solo hechos, solo reglas o ambos tipos).


Un programa logico es un conjunto de definiciones de
predicados (es decir, un conjunto de cla
usulas definidas:
hechos y reglas).
5 / 114

Un ejemplo

Representacion de un grafo mediante hechos:


a

arco(a, b)
arco(a, c)
arco(b, d)
arco(c, d)
arco(c, e)
arco(d, e)

6 / 114

Ejemplo (cont.)
La relacion de conexion entre nodos (caminos) puede expresarse
mediante reglas:
camino(X , Y ) X = Y
camino(X , Y ) arco(X , Z ), camino(Z , Y )
(la primera regla, tambien se podra haber escrito como un hecho:
camino(X , X ) )
La lectura de estas dos resglas es:
hay un camino de un nodo a otro, si son el mismo
hay un camino de un nodo X a otro Y si existe un nodo Z tal
que hay arco entre X y Z , y hay camino entre Z e Y

7 / 114

Ejemplo (cont.)
Ahora, se podra plantear un objetivo, i.e., entendiendo los hechos
y las reglas que hemos escrito como premisas podramos plantear
una conclusion y tratar de mostrar la validez de la argumentaci
on.
Por ejemplo, podemos plantear los objetivos (o preguntas):
arco(b, d)
camino(a, d)
camino(a, X )
camino(e, Y )
camino(X , Y )
camino(X , b), camino(X , d)
los dos primeros son objetivos cerrados porque no contienen
variables, mientras que los restantes son objetivos abiertos.
... que deberamos obtener (por resoluci
on) en cada caso?
8 / 114

Variables logicas en las clausulas


Todas las variables logicas en de una cla
usula estan cuantificadas
universalmente de forma implcita. Por ejemplo, en la cla
usula:
camino(X , Y ) arco(X , Z ), camino(Z , Y )

implcitamente tenemos:
X .Y .Z .(camino(X , Y ) arco(X , Z ), camino(Z , Y ))

Ahora bien, esta sentencia es l


ogicamente equivalente a:
X .Y .(camino(X , Y ) Z .(arco(X , Z ), camino(Z , Y )))

Es decir, las variables que solo aparecen a la derecha de la cla


usula
estan localmente afectadas de una cuantificaci
on existencial. Se
dice que son variables existenciales o extra o locales. Interpretarlas
existencialemente facilita la lectura de la clausula:
Para todo X y todo Y , hay un camino entre X e Y si existe Z tal
que hay arco de X a Z y hay camino entre Z e Y
9 / 114

Otro ejemplo
Podemos definir la suma de naturales (representados como c y s)
mediante un hecho y una regla:
suma(c, X , X )

suma(s(X ), Y , s(Z )) suma(X , Y , Z )


y plantear distintos objetivos:
suma(s(c), s(s(c)), s(s(s(c))))
suma(X , s(c), s(s(c)))
suma(s(c), Y , Z )
suma(X , Y , Z )
suma(X , X , Z ), suma(Z , Z , H)

10 / 114

SLD-Resolucion

Selection-rule driven Linear resolution for Definite clauses


Es un caso particular de la resoluci
on general, donde:
Los resolventes son siempre objetivos (clausulas sin cabeza).
Los programas son conjuntos de cla
usulas (de Horn) definidas,
i.e., hechos y reglas.
Hay una funcion de selecci
on que selecciona un atomo del
resolvente a quien aplicar resoluci
on.

11 / 114

SLD-resolucion (cont.)
Formalmente:
Sea un programa logico P, un par de objetivos G y G 0 , y una
funcion de seleccion fs . Una derivaci
on de G a G 0 con
SLD-resolucion (P {G } `SLD G 0 ) es una secuencia de
objetivos G0 , G1 , . . . , Gk tal que:
G0 = G
Gk = G 0
para todo i {0, ..., k 1}, Gi+1 de obtiene a partir de Gi
resolviendo (en el sentido de la resoluci
on general) el literal
L = fs (Gi ) con una variante de una regla de P.

Si G 0 , entonces tenemos una SLD-refutaci


on de G a
partir de P.

12 / 114

Ejemplo
Supongamos el programa (c representa cero y s sucesor):
suma(c, Y , Y )

suma(s(X ), Y , s(Z )) suma(X , Y , Z )

y el objetivo suma(s(c), s(c), s(s(c))) (asumimos que fs


selecciona el primer objetivo por la izquierda).
suma(s(c), s(c), s(s(c)))

suma(s(X1 ), Y1 , s(Z1 )) suma(X1 , Y1 , Z1 )

1 = [X1 /c, Y1 /s(c), Z1 /s(c)]


suma(c, s(c), s(c))

suma(c, Y2 , Y2 )

2 = [Y2 /s(c)]

13 / 114

Respuestas correctas
Dado un programa P y un objetivo G q1 , . . . , qn , diremos que
una sustitucion es una respuesta correcta para P {G } si
u
nicamente act
ua sobre las variables de G y
P |= X1 . . . . .Xm (q1 . . . qn ), siendo {X1 , . . . , Xn } el
conjunto de variables de G (notaci
on: P |= [(q1 . . . qn )] )
Por ejemplo, consideremos la siguiente refutaci
on:
G suma(c, s(A), B)

suma(c, Y1 , Y1 )
1 = [Y1 /s(A), B/s(A)]

La sustituci
on obtenida, 1 , restringida a las variables del objetivo original G es
1 |var (G ) = [B/s(A)] (la variable Y1 no aparece en en G ).
= [B/s(A)] es una respuesta correcta para G ... por qu
e?
14 / 114

Respuestas correctas (cont.)


= [B/s(A)] es una respuesta correcta para P {G }:
por un lado, aplicando tenemos suma(c, s(A), s(A))
y ahora, si consideramos cualquier otra sustituci
on
tendremos que
P |= suma(c, s(A), s(A))

o lo que es lo mismo (ver pag. 27):


P |= A.suma(c, s(A), s(A))
P |= [suma(c, s(A), s(A))]

Intuitivamente, si reemplazamos A por cualquier valor lo que


obtenemos pertenecera al modelo de la primera cla
usula de P
y por tanto al modelo de P (recordemos que en la pagina 53
estudiamos un modelo de Herbrand para este programa en el
que
sumaH = {(s m (c), s n (c), s k (c)) | m + n = k}
15 / 114

Coreccion y completitud de la SLD-resolucion


Teorema
Sea P un programa, fs una funci
on de selecci
on y G un objetivo.
Tenemos:
Correccion: Si P {G } `SLD en n pasos y = 1 . . . n es
la composicion de la secuencia de unificadores usados en la
SLD-refutacion, entonces:
0 = |var (G ) es una respuesta correcta para P {G }
Completitud: Sea una respuesta correcta para P {G },
entonces existe una SLD-refutaci
on de G a partir de P con
una secuencia de unificadores 1 , . . . , n tal que
= (1 . . . n ) |var (G ) .
N
otese que la funcion de selecci
on concreta que se utilice no es
relevante para los resultados de correcci
on y completitud.
16 / 114

Ejemplo

Consideremos el programa de los caminos en un grafo:


arco(a, b)
arco(a, c)
arco(b, d)
arco(c, d)
arco(c, e)
arco(d, e)
camino(X , X )
camino(X , Y ) arco(X , Z ), camino(Z , Y )
Y consideremos el objetivo camino(X , e)

17 / 114

Ejemplo (cont.)
Una posible refutacion (tomando como funci
on de selecci
on la que
toma el primer literal por la izquierda):
camino(X , e)

camino(X1 , Y1 ) arco(X1 , Z1 ), camino(Z1 , Y1 )

1 = [X1 /X , Y1 /e]
arco(X , Z1 ), camino(Z1 , e)

arco(a, c)

2 = [X /a, Z1 /c]
camino(c, e)

18 / 114

Ejemplo (cont.)
camino(c, e)

camino(X3 , Y3 ) arco(X3 , Z3 ), camino(Z3 , Y3 )

3 = [X3 /c, Y3 /e]


arco(c, e)

arco(c, Z3 ), camino(Z3 , e)

4 = [Z3 /e]
camino(X4 , X4 )

camino(e, e)

5 = [X4 /e]

19 / 114

Ejemplo (cont.)
La composicion de sustituciones obtenidas es:
= 1 . . . 5 = [X /a, X1 /a, Y1 /e, Z1 /c, X3 /c, Y3 /e, Z3 /e, X4 /e]
Si consideramos la restricci
on a las variables del objetivo original,
es decir, a X tenemos:
0 = |{X } = [X /a]
Por el teorema de correcci
on 0 = [X /a] es una respuesta
correcta para el objetivo original.
Por el teorema de completitud, este mecanismo debe ser
capaz de encontrar ademas otras respuestas. Intuitivamente es
facil ver que seran [X /b], [X /c], [X /d], [X /e]... c
omo se
construiran las SLD-refutaciones para encontrar estas
respuestas?
20 / 114

Hacia Prolog
La resolucion SLD esta mucho mas pr
oxima a una
implementacion realista de la programaci
on l
ogica porque ha
acotado notablemente el indeterminismo con respecto a la
resolucion general.
Las cla
usulas de Horn son lo suficientemente expresivas para
utilizarlas como lenguaje de programaci
on.
Quedan dos cuestiones por resolver:
Que funcion de selecci
on utilizamos? (esto, seg
un hemos visto
no afecta a la correcci
on y la completitud).
Que criterio seguimos para seleccionar una de las reglas
aplicables para resolver un objetivo? (esto, esta relacionado
con la completitud).
En el u
ltimo ejemplo, utilizando uno u otro criterio se obtienen
distintas respuestas.
21 / 114

Vous aimerez peut-être aussi