You are on page 1of 11

Clau´sulas de Horn.

Resoluci´on SLD

1 /114

Refinando la resoluci´on

La resoluci´on general es un mecanismo muy potente de


demostraci´on...
pero tiene un alto grado de indeterminismo:
en la selecci´on de las cl´ausulas con las que hacer resoluci´on y
en la selecci´on de los literales a utilizar en la resoluci´on
Desde el punto de vista computacional es muy ineficiente.

Desde el punto de vista pr´actico puede sacrificarse algo de


expresividad y obtener un mecanismo m´aseficiente que sustente
un lenguaje de programaci´on m´as“realista”:
restringimos la forma de las cl´ausulas 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 m´etodo de resoluci´on espec´ıfico para este
tipo de cl´ausulas.
2 /114
Cl´ausulas de Horn
Una cl´ausula de Horn es una secuencia de literales que contiene a
lo sumo un literal positivo. Al escribirla en notaci´on de Kowalski
tendr´a una de estas cuatro formas:
1 Hecho: p ←
2 Regla: p ← q1, . . . , qn
s˛¸x s ˛¸ x
cabeza cuerpo
3 Objetivo: ← q1, . . . , qn
4 E´xito: ←
Los hechos y las reglas se denominan cl´ausulas 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

Cl´ausulas de Horn (cont.)

Las reglas engloban todos los casos en el siguiente sentido:


un hecho es una regla con cuerpo vac´ıo
un objetivo es una regla con cabeza vac´ıa
y el ´exito es una regla con cabeza y cuerpo vac´ıos

N´otese que en las cl´ausulas de Horn trabajamos con secuencias de


literales en vez de conjuntos (como ven´ıamos haciendo con las
cl´ausulas 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 l´ogicos
Un predicado p queda definido por el conjunto de clau´sulas
(hechos y reglas) cuyas cabezas tienen ese s´ımbolo de
predicado. As´ı pues la definici´on de un predicado en general
tendr´a el aspecto:
p(t1, . . . , tn) ←
p(s1, . . . , sn) ←
. ..
p(u1, . . . , un) ← q1(. . .), . . . , qm(. . .)
p(u1, . . . , un) ← r1(. . .), . . . , rk (. . .)
. ..
(puede haber solo hechos, solo reglas o ambos tipos).
Un programa l´ogico es un conjunto de definiciones de
predicados (es decir, un conjunto de clau´sulas definidas:
hechos y reglas).
5 /114

Un ejemplo

Representaci´on de un grafo mediantehechos:

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

6 /114
Ejemplo (cont.)

La relaci´on de conexi´on entre nodos (caminos) puede expresarse


mediante reglas:

camino(X, Y ) ← X = Y
camino(X, Y ) ← arco(X, Z ), camino(Z, Y )
(la primera regla, tambi´en se podr´ıa 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 podr´ıa plantear un objetivo, i.e., entendiendo los hechos
y las reglas que hemos escrito como premisas podr´ıamos plantear
una conclusi´on 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.
... ¿qu´e deber´ıamos obtener (por resoluci´on) en cada caso?
8 /114
Variables l´ogicas en lascl´ausulas
Todas las variables l´ogicas en de una clau´sula est´an cuantificadas
universalmente de forma impl´ıcita. Por ejemplo, en la clau´sula:
camino(X, Y ) ← arco(X, Z ), camino(Z, Y )
impl´ıcitamente 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 s´olo aparecen a la derecha de la clau´sula


est´an localmente afectadas de una cuantificaci´on existencial. Se
dice que son variables existenciales o extra o locales. Interpretarlas
existencialemente facilita la lectura de la cl´ausula:
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-Resoluci´on

Selection-rule driven Linear resolution for Definite clauses

Es un caso particular de la resoluci´on general, donde:


Los resolventes son siempre objetivos (cl´ausulas sin cabeza).
Los programas son conjuntos de clau´sulas (de Horn) definidas,
i.e., hechos y reglas.
Hay una funci´on de selecci´on que selecciona un ´atomo del
resolvente a quien aplicar resoluci´on.

11 /114

SLD-resoluci´on (cont.)

Formalmente:
Sea un programa l´ogico P, un par de objetivos G y G j , y una
funci´on de selecci´on fs . Una derivaci´on de G a G j con
SLD-resoluci´on (P ∪ {G } €SLD G j ) es una secuencia de
objetivos G0, G1, . . . , Gk tal que:
G0 = G
Gk = G j
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 j ≡←, 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(Z 1 )) ← suma(X1 , Y1 , Z 1 )

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


← suma(c, s(c), s(c)) suma(c, Y2 , Y 2 ) ←

θ2 = [Y2 /s(c)]

13 /114

Respuestas correctas
Dado un programa P y un objetivo G ≡← q1, . . . , qn, diremosque
una sustituci´on θes una respuesta correcta para P ∪ {G } si
θu´nicamente actu´a sobre las variables de G y
P |= ∀X1. . . . .∀Xm(q1 ∧ . . . ∧ qn)θ, siendo {X 1 , . . . , X n } 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 , Y 1 ) ←

θ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 Y 1 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 clau´sula de P
y por tanto al modelo de P (recordemos que en la p´agina 53
estudiamos un modelo de Herbrand para este programa en el
que suma H = {(s m (c), sn (c), sk (c)) |m + n = k }

15 /114

Corecci´on y completitud de la SLD-resoluci´on


Teorema
Sea P un programa, fs una funci´on de selecci´on y G un objetivo.
Tenemos:
Correcci´on: Si P ∪ {G } € S L D ← en n pasos y θ= θ1 . . . θn es
la composici´on de la secuencia de unificadores usados en la
SLD-refutaci´on, entonces:
θj = θ|var (G ) es una respuesta correcta para P ∪ {G }

Completitud: Sea θuna respuesta correcta para P ∪ {G },


entonces existe una SLD-refutacion´ de G a partir de P con
una secuencia de unificadores θ1, . . . , θn tal que
θ= (θ1 . . . θn) |var(G ).

N´otese que la funci´on de seleccion´ 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 refutaci´on (tomando como funci´on de selecci´on la que


toma el primer literal por la izquierda):

← camino(X, e) camino(X1 , Y 1 ) ← arco(X1 , Z 1 ), camino(Z1 , Y 1 )

θ1 = [X1 /X, Y1 /e]

← arco(X, Z 1 ), camino(Z1 , e) arco(a, c) ←

θ2 = [X/a, Z1 /c]

← camino(c,e)

18 /114
Ejemplo (cont.)

← camino(c,e) camino(X3 , Y 3 ) ← arco(X3 , Z 3 ), camino(Z3 , Y 3 )

θ3 = [X3 /c, Y3 /e]

arco(c, Z 3 ), camino(Z3 , e) arco(c, e) ←

θ4 = [Z3 /e]

← camino(e,e) ← camino(X4 , X 4 )

θ5 = [X4 /e]

19 /114

Ejemplo (cont.)

La composici´on de sustituciones obtenidas es:

θ= θ1 . . . θ5 = [X/a, X 1 /a, Y 1 /e, Z 1 /c, X 3 /c, Y 3 /e, Z 3 /e, X4 /e]

Si consideramos la restricci´on a las variables del objetivo original,


es decir, a X tenemos:
θj = θ| { X } = [X/a]

Por el teorema de correcci´on θj = [X/a] es una respuesta


correcta para el objetivo original.
Por el teorema de completitud, este mecanismo debe ser capaz
de encontrar adem´as otras respuestas. Intuitivamente es f´acil
ver que ser´an [X/b], [X/c ], [X/d ], [X/e]... c´omo se
construir´ıan las SLD-refutaciones para encontrar estas
respuestas?

20 /114
Hacia Prolog

La resoluci´on SLD est´amucho m´aspr´oxima a una


implementaci´on realista de la programaci´on l´ogica porque ha
acotado notablemente el indeterminismo con respecto a la
resolucion general.
Las clau´sulas de Horn son lo suficientemente expresivas para
utilizarlas como lenguaje de programaci´on.
Quedan dos cuestiones por resolver:
¿Qu´e funci´on de selecci´on utilizamos? (esto, segu´nhemos visto
no afecta a la correcci´on y la completitud).
¿Qu´e criterio seguimos para seleccionar una de las reglas
aplicables para resolver un objetivo? (esto, est´arelacionado
con la completitud).
En el u´ltimo ejemplo, utilizando uno u otro criterio se obtienen
distintas respuestas.

21 /114

You might also like