Académique Documents
Professionnel Documents
Culture Documents
Edelmira Pasarella
Mayo del 2004
1
Indice
1. Deniciones basicas 3
2. Semantica de los programas logicos 4
3. Resolucion SLD 6
4. B usqueda y backtracking 9
2
1. Deniciones basicas
Denicion 1 Sean A
1
. . . A
n
, B
1
. . . B
m
atomos y x
1
. . . x
s
las variables que
ocurren en esos atomos.
1. Un literal es una formula atomica o su negacion. Las formulas atomi-
cas son llamadas literales positivos y sus negaciones, literales neg-
ativos.
2. Una clausula es una formula de la forma
x
1
. . . x
s
(A
1
. . . A
n
B
1
. . . B
m
)
3. Una clausula es una clausula de Horn si contiene a lo sumo un literal
positivo.
4. Una clausula de programa es una clausula con exactamente un
literal positivo.
Si una clausula de programa contiene al menos un literal negativo es
una regla:
x
1
. . . x
s
(A B
1
. . . B
m
) x
1
. . . x
s
(A B
1
. . . B
m
)
De otro modo, es un hecho:
x
1
. . . x
s
A
5. Un objetivo es una clausula que no tiene literales positivos. Es decir,
y
1
. . . y
s
(B
1
. . . B
m
) y
1
. . . y
s
(B
1
. . . B
m
)
6. Una clausula denida es una clausula cuya forma clausal viene dada
por una secuencia de literales. Es decir, el orden en el cual ocurren los
literales en la clausula es importante.
7. Un programa logico denido es un conjunto nito de clausulas
denidas de programa.
3
Notacion Para simplicar, en el resto de este documento cuando hablamos
de clausulas y programas nos referimos a clausulas y programas denidos,
respectivamente. Ademas, utilizaremos la siguiente notacion:
1. Hechos (o clausulas unitarias): A
2. Reglas:AB
1
, . . . , B
m
A se llama la cabeza y B
1
, . . . , B
m
la cola de la regla (clausula), re-
spectivamente.
3. Objetivos: A
1
. . . , A
k
2. Semantica de los programas logicos
La semantica da signicado a los programas y nos permite describir for-
malmente lo que calculan. Hay tres maneras bien conocidas de dar signicado
o semantica a los programas logicos: la semantica declarativa, la semantica
operacional y la semantica denotacional (com unmente llamada semantica
de punto jo). En esta seccion presentamos algunas nociones y teoremas
basicos relacionados a la semantica de los programas logicos denidos (para
mayor detalle, ver [2, 1, 4, 5]). Donde sea posible seguiremos la terminologa
de Lloyd [4].
Denicion 2 Sea L un lenguaje de primer orden.
1. El universo de Herbrand de L, denotado H
L
, es el conjunto de todos
los terminos de base que pueden formarse a partir de las constantes y
los smbolos de funcion que ocurren en L.
Ejemplo Sea L = {0, suc, nat} donde 0 es una constante, suc es un
smbolo de funcion de aridad 1 y nat es un predicado de aridad 1. En
los proximos tres ejemplos nos referiremos a este lenguaje. El universo
de Herbrand de L es:
H
L
= {0, suc(0), suc(suc(0), . . . , suc
i
(0), . . .}
2. La base de Herbrand de L, denotada B
L
, es el conjunto de todos
los atomos que pueden formarse a partir de los predicados que ocurren
en L y los terminos en H
L
.
4
Ejemplo La base de Herbrand de L es:
B
L
= {nat(0), nat(suc(0)), . . . , nat(suc
i
(0)), . . .}.
3. Una estructura A para L es una estructura de Herbrand si su
dominio es H
L
y, para cada smbolo de funcion f de L y elementos
t
1
. . . , t
n
de A, f
A
(t
1
, . . . , t
n
) = f(t
1
, . . . , t
n
). Para cada constante c en
L, c
A
= c.
Ejemplo Una estructura de Herbrand para L es:
A = H
L
, 0
A
, suc
A
, B
L
, donde 0
A
= 0 y suc
A
(t) = suc(t) para todo
t H
L
.
4. Si un conjunto de sentencias, un modelo de Herbrand de es una
estructura de Herbrand que es un modelo para . Debido a que en los
modelos de Herbrand la interpretacion de las constantes y los smbolos
de funcion son jas, es posible identicar un modelo de Herbrand con
un subconjunto de la base de Herbrand.
Consideremos un programa logico P. P induce un lenguaje de primer
orden donde las constantes, los smbolos de funcion y los predicados son,
respectivamente, las constantes, los smbolos de funcion y los predicados
que ocurren en P. Entonces, podemos hablar del universo de Herbrand
de P, denotado H
P
. Asimismo podemos hablar de la base de Herbrand
de P, denotada B
P
.
Ejemplo Sea P el siguiente programa:
p(a)
p(b)
q(a)
r(f(x))p(x), q(x)
El universo y la base de Herbrand de P son, respectivamente:
H
P
= {a, b, , f(a), f(b), f(f(a)), f(f(b)), f(f(f(a))), . . .}
B
P
= {p(a), p(b), q(a), q(b), p(f(a)), p(f(b)), q(f(a)), p(f(b)), p(f(f(a))),
p(f(f(b))), q(f(f(a)), q(f(f(b)) . . .}
5
Semantica declarativa. Desde el punto de vista logico, un programa P
puede verse como una teora logica formada por las clausulas del programa.
Los modelos de Herbrand de esta teora son considerados los modelos del
programa P. Por ejemplo, la base de Herbrand del programa P, B
P
, es un
modelo de P.
Entre las estructuras de Herbrand que son modelos de P, se destaca
el que contiene exactamente los atomos que son consecuencia logica de
P. Este modelo corresponde al signicado entendido o estandar del
programa y es llamado el modelo mnimo de P, M
P
. El modelo M
P
se
dene como sigue:
M
P
= {A B
P
: P |= A}
Ejemplo El modelo mnimo del programa P es:
M
P
= {p(a), p(b), q(a), r(f(a))}
Semantica operacional. Esta denida por el proceso de inferencia uti-
lizado para probar que un objetivo puede ser derivado del programa. En la
proxima seccion estudiaremos en detalle este punto.
Semantica denotacional. Esta semantica asigna signicado a un pro-
grama asociandole un funcion sobre el dominio calculado por el programa.
El signicado viene dado entonces por el punto jo de la funcion, si existe.
En este documento no entramos en detalle de este tema (remitimos al lector
interesado a [7]).
3. Resolucion SLD
La semantica operacional estandar de los programas logicos esta dada
por un procedimiento de refutacion basado en la regla de resolucion, llama-
do resolucion SLD [2], denido originalmente por Kowalski [3]. Resolucion
SLD signica Linear resolution with Selection function for Denite claus-
es.
Denicion 3 La funcion de seleccion, llamada regla de computacion, es
una funcion que va de un conjunto de objetivos a un conjunto de atomos de
forma tal que el valor de la funcion para un objetivo es un atomo, llamado
el atomo seleccionado en ese objetivo.
6
Denicion 4 Sea P un programa, G = A
1
, ..., A
j
, ..., A
n
(n 1) y R una
regla de computacion.
1. Supongamos que R(G) = A
j
y C = AB
1
, ..., B
k
es una clausula
de programa con las variables renombradas. Si A y A
j
son unica-
bles con unicador mas general (umg) , entonces el objetivo G
=
(A
1
, ..., A
j1
, B
1
, ..., B
k
, A
j+1
, ..., A
n
) es derivado de G y C va
R usando . Tambien podemos decir que G
es SLD-derivado de G
en P va R usando . Es decir, G
|= ((
m
i=1
B
i
))
. Su contrapartida des-
de el punto de vista procedimental es la nocion de SLD-respuesta calculada.
Clark establecio la correccion y la completitud de la SLD-resolucion rela-
cionando las respuestas correctas (salida declarativa) y las SLD-respuestas
calculadas (salida procedural). Abajo presentamos los correspondientes teo-
remas.
Teorema 1 (Teorema de correccion) Sea P un programa y G un objetivo.
Entonces, cada SLD-respuesta calculada de G con respecto a P es una res-
puesta correcta de G con respecto a P.
8
Teorema 2 (Teorema de Completitud) Sea P un programa y G un obje-
tivo. Para cada respuesta correcta de G con respecto a P, hay una SLD-
respuesta calculada
1
de G con respecto a P y una sustitucion tal que
=
1
.
El teorema de completitud nos dice que cada respuesta correcta de un
objetivo G con respecto a un programa P es una instancia de una respuesta
calculada de G con respecto a P. Para ilustrar esta propiedad consideremos
el siguiente ejemplo.
Ejemplo Sea P = {menor(0, suc(x))}.
Tenemos que P |= menor(0, y){suc(suc(0))/y}. Esto es, = {suc(suc(0))/y}
es una respuesta correcta de menor(0, y) con respecto a P. Una SLD-
respuesta calculada de menor(0, y) con respecto a P es {suc(x)/y} y te-
nemos entonces que = {suc(x)/y}{suc(0)/x}.
4. B usqueda y backtracking
A continuacion presentamos conceptos relacionados con los procedimien-
tos que implementan la SLD-resolucion. Lo primero que hay que decir es que
el espacio de b usqueda para SLD-refutaciones viene dado por una estruc-
tura de arbol conocido como SLD-arbol. Para ampliar detalles remitimos al
lector a [5, 6].
Denicion 5 Un SLD-arbol de G con respecto a P va R es un arbol tal
que cada nodo es un objetivo (que podra ser la clausula vaca), cuya raz es
G. Sea A
1
, ..., A
j
, ..., A
n
(n 1) un nodo de un SLD-arbol. Supongamos
que R(A
1
, ..., A
j
, ..., A
n
) = A
j
. Entonces, para cada clausula del programa
P, A B
1
, ..., B
k
tal que A
j
y A son unicables con umg , el nodo tiene
un hijo (A
1
, ..., A
j1
, B
1
, ..., B
k
, A
j+1
, ..., A
n
). La clausula vaca, si ocurre
en el arbol, no tiene hijos.
Es importante destacar aqu la independencia de la regla ya que permite
reducir sustancialmente el espacio de b usqueda al poder jar una regla de
computacion a priori y usarla para construir el SLD-arbol.
Ejemplo Consideremos el programa P
1
= P {r(x)q(x)}, es decir,
9
(1) p(a)
(2) p(b)
(3) q(a)
(4) r(f(x))p(x), q(x)
(5) r(x)q(x)
y el objetivo G = r(x). El SLD-arbol de G con respecto a P
1
es el
siguiente:
r(x)
(p(y), q(y)){f(y)/x} q(y){y/x}
(q(y)){a/y} (q(y)){b/y} {y/x}{a/y}
{f(y)/x}{a/y}
Note que cada camino del arbol SLD corresponde a una derivacion SLD.
A continuacion presentamos las derivaciones del arbol de arriba:
I II III
r(x) r(x) r(x)
| | |
(4) (4) (5)
| | |
(p(y), q(y)){f(y)/x} (p(y), q(y)){f(y)/x} q(y){y/x}
| | |
(1) (2) (3)
| | |
(q(y)){a/y} (q(y)){b/y} {y/x}{a/y}
|
(3)
|
{f(y)/x}{a/y}
10
Las derivaciones I y III son refutaciones mientras que II es una derivacion
con fallo.
En la implementacion de la SLD-resolucion, ademas de la unicacion,
hay dos problemas importantes a resolver:
Denir la regla de computacion. En las implementaciones de Prolog,
la regla de computacion selecciona siempre el literal mas a la izquierda
del objetivo considerado.
Cual clausula del programa utilizar
2
para resolver con el literal selec-
cionado. En las implementaciones de Prolog, las clausulas se escogen
siguiendo el orden en el cual aparecen listadas en el programs.
Ejemplo Sea programa P
2
:
(1) p(b)
(2) p(a)
(3) q(x)r(x)
(4) r(b)
y el objetivo p(x), q(x). La regla de computacion selecciona el literal
p(x) y comienza tratando de resolver con la clausula (1).
El esquema generado por la regla de computacion y la escogencia de
la clausula de programa para aplicar la regla de resolucion se traduce
en un recorrido en profundidad del SLD-arbol correspondiente. Esto
es, la b usqueda de una refutacion de un objetivo G con respecto a un
programa P, se inicia siempre por el camino mas a la izquierda del
SLD-arbol de G con respecto a P (asumiendo que este arbol reeja el
orden en el que ocurren las clausulas en el programa P).
2
Recordemos que en realidad se utilizan variantes de las clausulas de programa.
11
Ejemplo Consideremos el SLD-arbol de p(x), q(x) con respecto al
programa P
2
:
p(x), q(x)
q(x){b/x} q(x){a/x}
r(u){b/u} r(u){a/u}
B
1
, . . . , B
n
de P
tal que A y A