Você está na página 1de 124

UNIVERSIDAD DE SEVILLA

Facultad de Matematicas Depto. de Algebra, Computacion, Geometr a y Topolog a

FUNDAMENTOS DE LA PROGRAMACION LOGICA


Tesina presentada por Miguel Angel Gutierrez Naranjo para optar al Grado de Licenciatura

V B del Tutor

Fdo. Jose Antonio Alonso Jimenez Profesor Titular de la Universidad de Sevilla

Sevilla, 1 de Julio, 1994

A mis padres

Introduccion
Logic programming has aimed to bring together and solve two distinct aims in logic and computing: making logic more practical and making computing more logical. R.A. Kowalski y C.J. Hogger pag. 545, 32] Comenzamos esta memoria con una breve presentacion de lo que conocemos como Programacion Logica, sus or genes, su evolucion historica y sus objetivos. Esta introduccion concluye con un breve resumen del contenido de la presente memoria.

Historia
Remontandonos en el tiempo podemos tomar a Aristoteles (384-322 a.C.) y su teor a silog stica como los precursores de la logica matematica y en consecuencia de la Programacion Logica. La teor a silog stica, que estudia una clase particular de implicaciones con dos premisas y una conclusion, tambien fue tratada por losofos contemporaneos de Aristoteles y largamente estudiada en siglos posteriores, aunque no se produjeron innovaciones de interes hasta el siglo XVII con los trabajos de Descartes y Leibnitz. Dos siglos despues Boole dio un paso importante en el sistema de razonamiento aristotelico poniendo en relacion la logica y el algebra. Los trabajos de Boole fueron modi cados y ampliados mas tarde por logicos y matematicos como Jevon, Peirce, Schroeder y Huntington entre otros. Llegamos as a nales del siglo XIX y principios del XX con la revolucion de la fundamentacion de las Matematicas gracias a los trabajos de Frege, Cantor, Peano, Russell y Whitehead entre otros que marcan el per odo mas apasionante y de mayor actividad en la historia de la logica matematica. En el primer tercio del siglo XX y tras la publicacion de los Principia Mathematica por parte de Russell y Whitehead continuo la actividad frenetica de 1

2
innovacion de la mano de investigadores de la talla de Post, Hilbert, Ackerman, Brower, Godel y por supuesto Skolem y Herbrand Llegamos a la mitad del siglo XX y descubrimos que de forma paralela al desarrollo de la logica se ha producido un espectacular avance de las llamadas \maquinas de calcular", avance sobre el que re exiona A. Turing en un art culo titulado \>Pueden pensar las maquinas?", publicado en 1950 y que podemos dar como punto de partida de lo que despues se llamara Inteligencia Arti cial. En los a~os siguientes a la publicacion de este art culo avanzo mucho la n demostracion automatica con trabajos como los de Gilmore, Davis-Putnam y Prawitz, tomando siempre como referencia los trabajos de Skolem y Herbrand sobre logica de primer orden. Un hito importante en la historia de la demostracion automatica lo marco Robinson en 1965 con la presentacion de su metodo de resolucion, punto de partida para los trabajos de otros investigadores como Chang, Lee, Loveland y Wos. No obstante no es hasta la primera mitad de los setenta, con los trabajos de Kowalski y el primer PROLOG de Colmerauer cuando nace la Programacion Logica como rama de la demostracion automatica con personalidad propia. En palabras de Kowalski y Hogger (cf. 32], pag. 544)
1

\La Programacion Logica puede ser brevemente de nida como el uso de la logica simbolica para la representacion de problemas y sus bases de conocimiento asociadas, junto con el control de la inferencia logica para la solucion efectiva de esos problemas."

Tras la presentacion de la Programacion Logica de Kowalski en 1972 y la del primer PROLOG por parte de Colmerauer, 1973-75 los acontecimientos se han precipitado. Telegra camente, podemos citar

1965 J. Alan Robinson publica su principio de resolucion para la demostracion

automatica en forma clausal. 1972 Robert A. Kowalski formula su interpretacion de la logica en forma clausal como lenguaje de programacion. 1973 Alain Colmerauer, Philippe Roussell y otros implantan el primer sistema PROLOG en la Universidad de Aix- Marseille.
M. Davis se culpa en su art culo The Prehistory and Early History of Automated Deduction 16] de dar un nombre erroneo a lo que hoy conocemos como universo y teorema de Herbrand, cuando en realidad deber an llamarse de Skolem. Al parecer, la primera vez que aparecen estos nombres es en un art culo suyo publicado en 1963 17].
1

3
en el IFIP-74. 1977 Keith L. Clark publica sus resultados relacionando la negacion con el fallo nito. 1984 John W. Lloyd publica la primera edicion de su libro sobre la fundamentacion de la Programacion Logica, referencia basica en estos ultimos 10 a~os. n 1984 Se funda el Journal of Logic Programming primero bajo la direccion editorial de J. Alan Robinson y mas tarde de Jean-Louis Lassez. En la ultima decada, desde la aparicion del Journal of Logic Programming el numero de art culos publicados se ha multiplicado, existiendo actualmente un considerable numero de logicos y matematicos investigando y publicando art culos. Podemos citar entre otros nombres a Apt, Shepherdson, Lassez, Maher, Marriot, Hogger, Martelli, Montanari, Kunen o Pedreschi. Especial mencion merece el art culo publicado por Apt y Doets este mismo a~o en el n que rede nen conceptos clasicos sobre Informacion Negativa presentados por Lloyd, trabajo que incorporamos y comentamos en esta memoria.

1974 Robert A. Kowalski presenta su programacion con logica de predicados

Objetivos
Como apuntabamos antes en palabras de Kowalski y Hogger, la Programacion Logica estudia el uso de la logica para el planteamiento de problemas y el control sobre las reglas de inferencia para alcanzar la solucion de forma automatica. As , planteado de la forma mas general posible, La Programacion Logica intenta resolver la siguiente cuestion: Dado un problema S, saber si la a rmacion es solucion o no del problema, o en que casos lo es. Ademas queremos que los metodos sean implantables en maquinas de forma que la resolucion del problema se haga de forma automatica. Los pasos a seguir en la consecucion de nuestro objetivo los podemos separar en dos grandes grupos que podemos llamar Representacion y Tecnicas de resolucion.

Representacion
Los procesos de representacion no pertenecen a la Programacion Logica propiamente dicha y de hecho muchos autores no los consideran. En esta fase lo

4
que hacemos es representar la informacion suministrada en el planteamiento del problema de forma que podamos aplicar sobre el las tecnicas de resolucion automatica. El primer paso en el caso general ser a transcribir un problema planteado en lenguaje natural a lenguaje formal. Hoy d a este es un problema sin resolver y de hecho las investigaciones apuntan a que solo un fragmento del lenguaje natural puede ser traducido . No obstante muchas a rmaciones pueden ser traducidas a formulas de primer orden y de ellas nos ocupamos. Una vez expresado nuestro problema mediante un conjunto nito de formulas de primer orden expresamos estas en FNC, las cuanti camos universalmente y nos preguntamos si nuestro problema tiene o no solucion, y en su caso hallarla. En los terminos en que tenemos representado nuestro problema, esto es, mediante un conjunto de formulas S , preguntarse por una solucion del problema es preguntarse si una determinada formula del tipo 9y : : : 9yn(B ^ : : : ^ Bm ) es consecuencia logica de S . Llamaremos a esta formula. Damos un paso mas, porque preguntarnos si es consecuencia logica de S es preguntarse si el conjunto S f: g es consistente o no. Nos estamos acercando a nuestro objetivo. Puesto que nuestro problema ahora es saber si un determinado conjunto de formulas tiene o no modelos, aplicando el Teorema de Skolem y las equivalencias logicas usuales, podemos reducir nuestro problema al siguiente problema equivalente: Dado el conjunto de clausulas S 0 f: g estudiar su consistencia. donde por clausula entendemos una formula del tipo 8x : : : 8xs (A _ : : : _ An _ :B _ : : : _ Bm ) con los Ai y Bj atomos y los xk las variables que ocurren en ellos. Abreviaremos la notacion de la formula anterior como A : : : An B : : : Bm
2 1 1 3 1 1 1 1 1

Tecnicas de resolucion
Aqu empieza el verdadero estudio de la Programacion Logica y de hecho es el punto de partida de casi todos los trabajos publicados, obviando todo lo
2 3

Las interjecciones parece imposible Denotamos por Bi a los literales apropiados y por yj a las variables que ocurren en ellos.

5
anterior. Nuestro trabajo consiste en estudiar la consistencia de un conjunto nito de clausulas. En una primera aproximacion vamos a estudiar al caso historicamente mas importante. El caso en que las clausulas en las que transcribimos la informacion de nuestro problema y que llamaremos clausulas de programa de nido sean del tipo A B : : : Bm esto es, tengan un y solo un literal positivo. Llamaremos objetivos de nidos a las clausulas sin literales positivos y llamaremos clausulas de Horn tanto a las clausulas de programa de nido como a los objetivos de nidos (cf. Seccion 1.1). Notese que en este caso la formula :9y : : : 9yn(B ^ : : : ^ Bm ) es el objetivo B ; : : : ; Bm. Sea como fuere, nuestro objetivo es estudiar la consistencia de un numero nito de clausulas. A primera vista el problema parece insalvable, puesto que tendr amos que ver que ninguna de las in nitas interpretaciones posibles es modelo de este conjunto de clausulas. Herbrand ya hab a solucionado nuestro problema en 1931 de forma muy ingeniosa, ya que redujo el problema a estudiar solo un tipo concreto de interpretaciones, las interpretaciones de Herbrand, que toman como universo el propio conjunto de terminos cerrados del lenguaje en que esta escrito el programa. Ademas, como desarrollamos en el primer cap tulo de esta tesina podemos identi car una interpretacion de Herbrand con el conjunto de los atomos que son validos en esa interpretacion (Prop. 1.2.5). De esta forma podemos aplicar toda la potencia de la Teor a de Conjuntos en el estudio de la existencia de modelos de Herbrand. De hecho podemos de nir un operador del conjunto de interpretaciones de Herbrand en s mismo, el operador consecuencia inmediata, que para programas de nidos es continuo, con el que podemos caracterizar facilmente los modelos de Herbrand de un programa.
1 1 1 1

Nuestro problema no esta ni mucho menos resuelto todav a. En general existen in nitas interpretaciones de Herbrand y el estudio que podemos hacer en terminos conjuntistas necesita en muchos casos aritmetica trans nita. El metodo que presentamos en esta memoria para decidir de forma mecanica la consistencia o no de nuestro conjunto de clausulas de programa de nido es una variante del metodo de resolucion de Robinson llamado SLDresolucion (Resolucion Lineal para clausulas de programa De nido con funcion de Seleccion). Se basa en dos principios: resolucion propiamente dicha y unicacion.

6
La resolucion es una regla de inferencia, la unica utilizada en este tipo de problemas, tal que dadas dos clausulas nos permite inferir otra. La vemos primero en el caso de la logica proposicional. El principio es muy simple. Dado el objetivo que representa la negacion de la posible respuesta

A ; : : : ; As
1

seleccionamos un atomo Am ,

A ; : : : ; Am ; : : : ; As
1

y buscamos una clausula de nuestro programa de nido que tenga a Am como unico literal positivo, esto es, una clausula del tipo

Am
1 1

B ; : : : ; Bq
1 1 +1

De ambas deducimos el siguiente objetivo (que llamamos objetivo derivado)

A ; : : : ; Am? ; B ; : : : ; Bq ; Am ; : : : ; As
Llamamos derivacion (o SLD-derivacion) a una sucesion de pasos de derivacion como el que hemos descrito. Nuestro interes esta en inferir mediante el uso de esta regla la clausula vac a, la clausula sin literales, que denotamos como 2. Puesto que una clausula es valida en una interpretacion si contiene un literal valido, la clausula vac a es insatisfacible y pensaremos en ella como una contradiccion. Por tanto, cabe pensar que si conseguimos llegar a contradiccion razonando a partir de nuestro conjunto de clausulas, dicho conjunto es inconsistente, con lo que habremos resuelto nuestro problema. En el caso en que ocurran variables en los literales de las clausulas, tendremos que hacer uso de la uni cacion. La uni cacion en s misma es todo un mundo dentro de las Matematicas y a ella dedicamos el segundo apendice de esta memoria. Visto de forma muy somera, una sustitucion es una aplicacion del conjunto de variables de un lenguaje en el conjunto de sus terminos, que se puede extender de forma unica al conjunto de los terminos del lenguaje. As dos terminos s y t son uni cables si existe una sustitucion tal que (s) = (t). En tal caso decimos que es un uni cador de s y t. El concepto de uni cador de maxima generalidad, umg, es mas controvertido y en los ultimos a~os han aparecido distintas de niciones n no todas equivalentes. La idea que intentan atrapar las distintas de niciones es simple, un umg es un uni cador que no hace enlaces super uos, sino los m nimos necesarios en la uni cacion, dejando los terminos uni cados en la instancia mas general posible. En esta memoria seguimos la de nicion de

7
T. Nipkow, que consigue plasmar esta idea mediante relaciones de orden y equivalencia, consiguiendo ademas que el umg de dos terminos sea unico salvo permutacion de variables. Podemos describir ahora la resolucion en la que hacemos uso de la uni cacion. Sea el objetivo A ; : : : ; Am ; : : : ; As
1

donde hemos seleccionado el atomo Am. Consideremos ahora una clausula del programa A B ; : : : ; Bq
1

tal que A yAm sean uni cables. Tomamos su umg e inferimos (A ; : : : ; Am? ; B ; : : : ; Bq ; Am ; : : : ; As)
1 1 1 +1

En este caso tambien buscamos la clausula vac a mediante una derivacion o sucesion de pasos como el que acabamos de describir. Caso de obtenerla tambien habremos obtenido una sustitucion composicion de los distintos umg que hemos considerado en la derivacion. La restriccion de esta sustitucion a las variables de nuestro primer objetivo se llama respuesta computada. Su interpretacion es clara, la respuesta computada es la sustitucion de variables que dan respuesta a nuestro problema mediante el metodo de resolucion aplicado. Vemos un ejemplo clasico.
Problema: Dados tres puntos cualesquiera x; y; z sabemos que si existe un arco que una x e y y un camino de y a z entonces existe un camino de x a z. Si consideramos que existe un camino de todo punto a s mismo y un arco de b a c, >existe algun punto desde el que pueda trazar un camino hasta c?. Las hipotesis del problema con notacion clausal las puedo transcribir 8 > camino(x; z) arco(x; y); camino(y; z) < > camino(u; u) : arco(b; c)

Nos preguntamos entonces si de este programa puedo deducir

9v(camino(v; c))
y en su caso hallarlo. Consideramos el objetivo

camino(v; c) y la siguiente

8
derivacion :
4

camino(v,c)

camino(x; z)
1

arco(x; y); camino(y; z)


= fv=x; z=cg

arco(x,y); camino(y; c)

) ?

arco(b; c)
2

= fx=b; y=cg

camino(c,c)

? )

camino(u; u)
3

= fu=cg

? )

La restriccion de la composicion ; ; a las variables del primer objetivo camino(v; c) nos da como respuesta computada = fv=bg, que parece una respuesta acertada, pero este ejemplo pone de mani esto otros problemas:
1 2 3

1. >Que ocurre si seleccionamos otro atomo en un objetivo? 2. >Que ocurre si en la derivacion buscamos la uni cacion con otra clausula? 3. Y lo que es mas importante, >como sabemos que la respuesta computada es realmente la respuesta que andamos buscando? La contrapartida declarativa al concepto procedural de respuesta computada es el de respuesta correcta. Decimos que la sustitucion es una respuesta correcta para el programa de nido P y el objetivo A ; : : : ; An si 8((A ^ : : : ^ An) ) es consecuencia logica de P . Obviamente, nuestra intencion es demostrar que toda respuesta computada es correcta, esto es probar la adecuacion de metodo de resolucion. Este resultado fue demostrado por Clark en 1979 (Tma. 2.3.1). Por tanto dado un programa de nido y un objetivo de nido podemos a rmar que toda respuesta computada es solucion a nuestro problema. Nos planteamos
1 1

Marcamos en negrilla el atomo seleccionado

9
ahora la cuestion contraria, esto es: Si existe solucion a nuestro problema, >podemos encontrarla con este metodo? La respuesta es a rmativa y nos la da el correspondiente teorema de completitud (Tma. 2.4.6), que a rma que si el conjunto de clausulas P fGg con P un programa de nido y G un objetivo de nido es insatisfacible, entonces existe una SLD-refutacion (o derivacion terminando en la clausula vac a) de P fGg. Tenemos por tanto que la SLD-resolucion es un metodo adecuado y completo, pero en la practica no es tan sencillo puesto que el teorema de completitud solo a rma la existencia de la refutacion, pero no como hallarla. Aqu empieza una segunda fase dentro de la investigacion en Programacion Logica de la que tambien ofrecemos los resultados mas importantes. >Como encontramos esa SLD-refutacion caso de que exista? Esta pregunta enlaza con las dos primeras preguntas que nos planteabamos tras el ejemplo. 1. >Que ocurre en una derivacion si seleccionamos otro atomo? 2. >Que ocurre cuando uni camos con otra clausula? En relacion con el problema de la seleccion de atomos Lloyd de ne una regla de computacion R como una aplicacion que asocia a cada objetivo de nido uno de los atomos que ocurren en el. Esta de nicion es muy r gida y muy criticada por otros autores puesto que en cada objetivo tenemos que seleccionar siempre el mismo atomo independientemente del momento de la derivacion en que aparezca. Aunque r gida, esta de nicion nos permite probar un resultado importante y es la independencia de la regla de computacion (Tma. 2.5.7), esto es, si existe una SLD-refutacion de P fGg, entonces jada una regla de computacion R, existe una SLD-refutacion de P fGg que toma R como regla de computacion. Este resultado nos permite jar una regla de seleccion de atomos con la tranquilidad de que si existe refutacion podremos hallarla con esa regla. Por tanto el ultimo problema que nos queda por atacar es saber que ocurre cuando elegimos uni car con una clausula u otra. En ese sentido de nimos los SLD-arboles de P fGg que no son mas que arboles enraizados en el objetivo G y cuyas ramas son SLD- derivaciones. El estudio de estos arboles pertenece mas a la Teor a de Grafos que a la Programacion Logica, pero apuntamos un ultimo resultado general (Tma. 2.6.6): Dado un programa de nido P y un objetivo de nido G, entonces o bien todo SLD-arbol tiene in nitas ramas con exito (es decir, SLD-refutaciones), o bien todo SLD-arbol tiene el mismo numero nito de ramas de exito.
5

Apt, por ejemplo, en 3].

10

Informacion negativa
Con el estudio que llevamos hasta ahora solo podemos deducir informacion positiva, es decir, solo los literales positivos pueden ser consecuencia logica de un programa. Lo vemos con un ejemplo. Sea L el lenguaje de primer orden sin s mbolos de funcion n- arios (n > 0), con un unico s mbolo de predicado 1-ario: \alumno" y el siguiente conjunto de constantes SC=fEsther, Juan, Rosa, Miguel, Pepeg. Consideremos el siguiente programa P sobre L: alumno(Esther) alumno(Juan) alumno(Rosa) Supongamos que nuestro objetivo es probar que :alumno(Miguel) es consecuencia logica de P . Con las herramientas que tenemos hasta ahora no podemos, ya que podemos encontrar modelos de P f :alumno(Miguel)g, pero tampoco podr amos probar alumno(Pepe) ya que tambien existen modelos de P f alumno(Pepe)g . Para intentar solucionar este problema vamos a introducir otra regla de inferencia, la hipotesis del mundo cerrado, HMC: Si un atomo cerrado A no es consecuencia logica de un programa P entonces inferimos :A. Esta regla no es mas que la generalizacion de la forma de razonar en una base de datos: La informacion que no se da de forma expl cita se toma como falsa. Con esta regla de inferencia solucionamos nuestro problema ya que con ella podemos deducir informacion negativa. El problema es que la logica de primer orden no es decidible y no existe ningun algoritmo que tomando como datos de entrada un programa P y un atomo cerrado A nos devuelva en tiempo nito si A es consecuencia logica de P o no, ya que si el atomo cerrado A no es consecuencia logica de P podemos entrar en un proceso in nito. En la practica restringimos la aplicacion de la HMC unicamente a aquellos atomos cerrados tales que al intentar hacer una refutacion fallamos de forma nita.
6

Fallo nito
La regla de inferencia denominada regla de fallo nito (Seccion 4.2) es menos potente que la HMC y nos permite inferir menos informacion, no obstante tiene la ventaja de ser facilmente automatizable. Es la siguiente: Dado un programa de nido P y un objetivo de nido A, si existe un SLD-arbol nito sin ramas con exito de P f Ag deducimos :A
6

Ver seccion 4.1 para los detalles.

11
La regla es facilmente implantable una vez solucionado un peque~o pron blema. La regla habla de existencia, pero encontrar (o demostrar la existencia) de tal SLD-arbol no parece tarea facil. En ese sentido Lassez y Maher de nieron una SLD- derivacion favorable como una derivacion que O bien es nita y no tiene exito O bien cada atomo de la SLD-derivacion es seleccionado en un numero nito de pasos y se de ne un SLD-arbol favorable como un SLD-arbol tal que todas sus ramas sean SLD-derivaciones favorables. Con esa de nicion podemos probar el siguiente resultado (Tma. 4.2.13): Dado un atomo cerrado A y un programa de nido P , existe un SLD-arbol nito sin exito de P f Ag si y solo si cada SLD-arbol favorable es nito y no contiene ramas con exito. Este teorema muestra que la SLD-derivacion es una implantacion adecuada y completa de la regla de fallo nito. Puesto que ahora tenemos un algoritmo de deduccion de informacion negativa podemos dar un salto hacia conjuntos mas generales de clausulas: los programas normales.

Programas normales
Como vimos, una clausula de programa de nido era una clausula de la forma

B ; : : : ; Bn
1

donde tanto A como los Bi eran literales positivos. Pues bien una clausula de programa normal tiene la misma estructura, con la salvedad de que los literales Bi pueden ser negativos. Analogamente, un objetivo normal es una clausula de la forma B ; : : : ; Bn donde los Bi pueden ser literales negativos. Nuestro objetivo ahora sigue siendo el mismo: Demostrar la inconsistencia de un conjunto de clausulas mediante procedimientos automatizables, el problema para utilizar la SLD- resolucion esta en que el literal seleccionado puede ser negativo, por lo que tendremos que modi car nuestro sistema de derivacion. La idea es utilizar la regla de fallo nito en los casos en que seleccionemos literales negativos.
1

12
Para justi car su uso Clark 10] da un nuevo sentido a la interpretacion de las clausulas. Una clausula del tipo

B ; : : : ; Bn
1 1 1

podemos interpretarla del siguiente modo: A es valido si lo son B ; : : : ; Bn. Clark apunta una nueva interpretacion: A es valido si y solo si lo son B ; : : : ; Bn. La formalizacion de esta idea lleva consigo el desarrollo de una teor a auxiliar no exenta de controversia, puesto que tenemos que introducir un nuevo s mbolo de predicado \=" junto con unos nuevos axiomas, los axiomas de la teor a de igualdad (Sec. 4.4). Las formulas resultantes de la completacion de P (esto es, la formalizacion del si y solo si) junto con los axiomas de la teor a de igualdad constituyen un conjunto de formulas que llamaremos comp(P ). Se puede probar que comp(P ) no es mas que una generalizacion de P en el sentido de que la informacion positiva que podemos obtener de comp(P ) es exactamente la misma que podemos obtener de P y ademas nos va a permitir deducir informacion negativa. El problema, como siempre, es hacer el proceso automatico.

SLDNF-resolucion
El metodo que vamos a seguir en el caso de programas y objetivos normales es la SLDNF-resolucion, que no es otro que la SLD- resolucion aumentada con la regla de fallo nito. Solo imponemos una condicion para poder probar mas tarde resultados de adecuacion y es que los literales negativos que seleccionemos deben ser cerrados . La descripcion formal del proceso destaca varios casos y utiliza induccion sobre lo que Lloyd 37] llama rango de la refutacion. No es mas que un intento de formalizacion de una idea simple: Dado un programa normal P y un objetivo normal G el proceso a seguir es el siguiente:
7

1. Mientras que los literales seleccionados sean positivos aplicamos la SLDderivacion que hemos estudiado. 2. Cuando seleccionamos un literal negativo, Li :A del objetivo

L : : : Li? ; Li; Li ; : : : ; Ln
1 1 +1

intentamos encontrar un SLDNF-arbol nito sin exito de P f Ag. Si existe deducimos L : : : Li? ; Li ; : : : ; Ln
1 1 +1

Llamamos a esa condicion \condicion de seguridad", Cf. 4.5.1.

13
y continuamos nuestra derivacion. Si no existe paramos ah y consideramos que nuestra derivacion no tiene exito. Por supuesto, puede ocurrir que en nuestro SLDNF-arbol, que no es mas que un arbol cuyas ramas son SLDNF-derivaciones, seleccionemos en algun momento un literal negativo. No importa, volvemos a tomar otro SLDNF-arbol auxiliar. El numero de veces que tenemos que hacer eso es lo que Lloyd llama rango de la SLDNF-derivacion. Lo vemos mas claro con un ejemplo. Sea P el programa normal 1. p(x) 2. r(y) 3. q(b)

q(x); :r(a) s(y)

y el objetivo normal p(z). Veamos un esquema de una SLDNF-derivacion de P f p(z)g. (Marcamos el literal seleccionado en negrita)

p(z)
1
?
1

= fz=xg

q(x); :r(a)

r(a)
= fy=ag

q(x)
3
2

= fx=bg

fallo

s(a)

Las de niciones de respuestas correcta y computada se traspasan de forma natural a los programas y objetivos normales. La pregunta es ahora si las respuesta obtenidas mediante SLDNF- resolucion son correctas. La solucion a esta cuestion la dio Clark en su teorema de adecuacion de la SLDNF-resolucion (Tma. 4.6.5): Sea P un programa normal y G un objetivo normal. Entonces

14
toda respuesta computada de P fGges una respuesta correcta de comp(P ) fGg. >Y la completitud? >Podemos probar que si existe alguna sustitucion que sea respuesta correcta la encontraremos mediante la SLDNF-resolucion? No se sabe. Aun no tenemos resultados generales. Se ha probado para determinados tipos de programas pero aun no tenemos un resultado general. En esa l nea va el art culo publicado por Apt y Doets en el ultimo numero del Journal of Logic Programming. En su art culo a rman que aun no se han obtenido resultados generales porque no existen de niciones rigurosas de muchos de los conceptos estudiados y una gran cantidad de trabajos publicados buscan mas la rapida aplicacion practica que la fundamentacion teorica. Los detalles sobre sus nuevas de niciones estan en la seccion 4.8 y solo comentar que pese a su esfuerzo por dar de niciones formales, queda mucho por hacer dentro de este campo. Para terminar un ultimo comentario general sobre la Programacion Logica y es el tema del que trata el ultimo cap tulo de esta memoria: la conexion que existe entre la Programacion Logica y la Teor a de la Recursion. Se puede probar, y de hecho presentamos dos resultados importantes8, que una funcion es recursiva si y solo si existe un programa de nido que la compute.

Breve descripcion del contenido


El presente trabajo intenta uni car criterios, condensar en un unico trabajo la informacion existente sobre esta materia y presentarla de forma ordenada. El Cap tulo I presenta la introduccion clasica a la Programacion Logica a traves de los modelos y teorema de Herbrand, a la vez que nos introduce en los programas mas sencillos sobre los que trata la Programacion Logica: los programas de nidos. El cap tulo termina con la presentacion del operador consecuencia inmediata y una coleccion de resultados para los que necesitaremos aritmetica trans nita. El Cap tulo II entra ya de lleno en los metodos de resolucion de los problemas presentados. Presentamos la SLD-resolucion junto con los resultados correspondientes de adecucion y completitud desde un punto de vista teorico, sin hacer referencia a los metodos de control que tienen estos sistemas en sus implantaciones practicas (el \corte" en PROLOG, por ejemplo). El Cap tulo III profundiza en la relacion existente entre las funciones recursivas y la Programacion Logica demostrando que las funciones recursivas pueden ser computadas por programas logicos.
8

Teoremas de Andreka y Nemeti, 3.3.8, y de Sebelik y Stepanek, 3.4.1.

15
Con el Cap tulo IV entramos ya en un campo de investigacion en el que aun quedan muchos problemas por resolver: La informacion negativa. Para presentar los resultados existentes introducimos un nuevo concepto: el programa normal, as como algunos de los resultados parciales que se conocen sobre completitud y adecuacion de uno de los metodos de resolucion que presentamos. Como muestra del estado de efervescencia en que se encuentra hoy d a la investigacion en este area, bajo el ep grafe \Resultados recientes" (cf. 4.8) incorporamos a esta memoria el ultimo trabajo publicado por Apt y Doets 5] en el que dan de niciones alternativas de los conceptos clasicos buscando mayor rigor y uidez en las demostraciones. La memoria termina con dos apendices, el Apendice A, que recopila algunos resultados elementales de teor a de conjuntos y nos presenta las herramientas basicas de la logica de primer orden sobre la que nos vamos a basar para construir la Programacion Logica. Dentro de esta presentacion merece trato especial el tema de las sustituciones, intentando fundamentar con rigor a un tema crucial en la Programacion Logica: La Uni cacion, a la que dedicamos el Apendice B. Este cap tulo trata uno de los temas mas controvertidos dentro de la Programacion Logica. Podemos encontrar casi una decena de de niciones alternativas de uni cador y uni cador de maxima generalidad en trabajos publicados en los ultimos a~os. La presentacion que hacemos se basa en los n trabajos de T. Nipkow de 1992, aunque tambien tomamos datos de trabajos de Lloyd 37], Apt 3], Lasser, Maher y Marriot 34] entre otros. El cap tulo termina con la presentacion del Algoritmo de Uni cacion de Herbrand y algun comentario sobre otros algoritmos, sin que sea la intencion de esta memoria el estudio de los mismos.

Contenido
1 Modelos de Herbrand. Operador consecuencia inmediata
1.1 Programas de nidos : : : : : : : 1.2 Modelos de Herbrand : : : : : : : 1.2.1 El teorema de Herbrand : 1.2.2 El teorema de Skolem : : 1.2.3 Interpretacion de MP : : : 1.3 Operador consecuencia inmediata 1.4 Clausura ordinal de TP # : : : : : 1.4.1 Asimetr a de TP # : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : :

: : : : : : : : : : : : : : : : : :

: : : : : : : : : : : : : : : : : :

: : : : : : : : : : : : : : : : : :

18
18 20 23 25 27 28 33 33

2 SLD-resolucion
2.1 2.2 2.3 2.4 2.5 2.6

Respuestas : : : : : : : : : : : : : : SLD-resolucion : : : : : : : : : : : Adecuacion de la SLD-resolucion : Completitud de la SLD-resolucion : Reglas de computacion : : : : : : : Procedimientos de SLD-Refutacion

: : : : : :

: : : : : :

: : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

35
35 36 39 42 46 51

3 Funciones recursivas
3.1 3.2 3.3 3.4

Interpretaciones declarativa y procedural Funciones recursivas : : : : : : : : : : : Teorema de Andreka y Nemeti : : : : : : Teorema de Sebelik y Stepanek : : : : : 16

55
55 56 57 60

CONTENIDO

17
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :

4 Informacion Negativa
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

Introduccion : : : : : : : : : : : : : : : : : : : : : : Fallo nito : : : : : : : : : : : : : : : : : : : : : : : Programas normales : : : : : : : : : : : : : : : : : La teor a de igualdad : : : : : : : : : : : : : : : : : SLDNF-resolucion : : : : : : : : : : : : : : : : : : : Adecuacion y completitud de la SLDNF-resolucion La regla de Herbrand : : : : : : : : : : : : : : : : : Resultados recientes : : : : : : : : : : : : : : : : : 4.8.1 Una nueva de nicion : : : : : : : : : : : : : 4.8.2 Comparacion con la de nicion de Lloyd : : :

64

64 65 70 71 75 80 85 87 88 93

A Preliminares

A.1 Nociones basicas de Teor a de Conjuntos A.2 Sintaxis de la logica de primer orden : : A.2.1 Sustituciones : : : : : : : : : : : A.3 Semantica : : : : : : : : : : : : : : : : : A.3.1 Consistencia y validez : : : : : : A.4 Formas prenexas : : : : : : : : : : : : : B.1 La relacion subsuncion : : : : : B.2 Uni cacion : : : : : : : : : : : : B.3 Algoritmos de uni cacion : : : : B.3.1 Algoritmo de Herbrand :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: : : : : : : : : :

: 95 : 96 : 100 : 102 : 103 : 105 : 107 : 111 : 113 : 114

95

B Uni cacion

: : : :

: : : :

: : : :

: : : :

: : : :

107

Cap tulo 1 Modelos de Herbrand. Operador consecuencia inmediata


Como hemos visto en la introduccion, nuestro trabajo consiste en estudiar la consistencia de un conjunto de clausulas. En una primra aproximacion vamos a estudiar el caso historicamente mas importante: el caso en que las clausulas que representan las hipotesis de nuestro problema tengan un y solo un literal positivo, esto es, sean clausulas de programa de nido. En este primer cap tulo reduciremos el problema de encontrar modelos al problema de encontrar un tipo determinado de modelos, los modelos de Herbrand. Como veremos, podemos identi car un modelo de Herbrand con un determinado conjunto, con lo que podemos utilizar toda la potencia de la Teor a de Conjuntos para probar nuestros resultados. En la ultima parte del cap tulo de nimos el operador consecuencia inmediata, que es continuo para programas de nidos, con el que podremos caracterizar facilmente los modelos de Herbrand del programa.

1.1 Programas de nidos


1.1.1 De nicion. Una clausula es una formula de la forma 8x : : : 8xs (L _ : : : _ Lm ) donde cada Li, i 2 f1; : : : ; mg, es un literal y x ; : : : ; xs son todas las variables que ocurren en L _ : : : _ Lm .
1 1 1 1

1.1.2 Nota. Otros autores pre eren de nir las clausulas como conjuntos de literales C = fL ; : : : ; Lm g y luego de nir la formula correspondiente a la
1

18

1.1. Programas de nidos

19

clausula C como:

Form(C ) = 8x : : : 8xs (L _ : : : _ Lm )
1 1

1.1.3 Nota. En lo que sigue usaremos las clausulas constantemente, por lo


que adoptaremos el siguiente acuerdo de notacion. Denotaremos la clausula

8x ; : : : 8xs (A _ : : : _ Ak _ :B _ : : : _ :Bn)
1 1 1

donde A ; : : : ; Ak ; B ; : : : ; Bn son atomos y x ; : : : ; xs son todas las variables que ocurren en esos atomos como
1 1 1

A ; : : : ; Ak
1

B ; : : : ; Bn
1

forma

1.1.4 De nicion. Una clausula de programa de nido es un clausula de la


1

A B ; : : : ; Bn esto es, que contiene solo un literal positivo. A este literal positivo, A, lo llamamos cabeza de la clausula. Al resto de los literales, B ; : : : ; Bn, los llamamos cuerpo de la clausula.
1 1

Podemos dar dos interpretaciones diferentes a las clausulas de programa de nido relacionadas con nuestro proposito. La primera ser a una interpretacion declarativa, esto es, podemos interpretar la clausula A B ; : : : ; Bn del siguiente modo: Para cualquier interpretacion M si B ; : : : ; Bn son validos en M entonces A es valido en M. Tambien podemos darle una interpretacion procedural: Descomponemos el problema A en problemas mas simples B ; : : : ; Bn, cuando tengamos resueltos B ; : : : ; Bn podremos resolver A.
1 1 1 1

1.1.5 De nicion. Una clausula unidad es una clausula con un unico literal.
Si el literal es positivo tendremos una clausula unidad positiva

A
y si el literal es negativo una clausula unidad negativa

1.1.6 De nicion. Sea L un lenguaje de primer orden. Un programa de nido


es un conjunto nito de clausulas de programa de nido del lenguaje.
1

Y en general a todas las clausulas

20

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

1.1.7 Nota. En lo que sigue no haremos referencia de forma expl cita al lenguaje en que esta escrito un programa P . Si no indicamos lo contrario supondremos que las unicas constantes y s mbolos de funcion y predicado del lenguaje son los que ocurren en las clausulas del programa. En caso de ambiguedad, denotaremos este lenguaje como LP .
nen en la cabeza el s mbolo de predicado p se denomina de nicion de p. rales son negativos.

1.1.8 De nicion. En un programa de nido, el conjunto de clausulas que tie-

1.1.9 De nicion. Un objetivo de nido es una clausula donde todos los liteB ; : : : ; Bn Cada uno de esos literales negativos, Bi, los llamamos subobjetivos del objetivo.
1

1.1.10 De nicion. La clausula vac a denotada por 2 es la clausula que no


tiene literales. Puesto que una clausula es el cierre universal de una disyuncion de literales, diremos que una interpretacion M satisface una clausula si y solo si toda asignacion satisface al menos uno de los literales. Esta condicion no se puede veri car en la clausula vac a, luego 2 es insatisfacible.

1.1.11 De nicion. Una clausula de Horn es una clausula con un literal positivo como maximo, esto es, una clausula de programa de nido o un objetivo de nido.

1.2 Modelos de Herbrand


Nuestro objetivo es el siguiente: Dado un conjunto de formulas S y una formula F , saber si F es consecuencia logica de S o no. Segun vimos en el Teorema A.3.14 este problema es equivalente a saber si S fF g es insatisfacible. Este problema as planteado parece insalvable, puesto que para demostrar que S fF g es insatisfacible tenemos que probar que ninguna interpretacion M de L es modelo de S fF g. Herbrand 24] resolvio el problema para clausulas en 1930. 1.2.1 De nicion. Sea L un lenguaje de primer orden. 1. El universo de Herbrand de L, UL, es el conjunto de todos los terminos cerrados de L .
2

Si LP no tuviera constantes a~adimos una nueva constante a al alfabeto para formar el n Universo de Herbrand
2

1.2. Modelos de Herbrand

21

2. La base de Herbrand de L, BL , es el conjunto de todos los atomos cerrados de L.

1.2.2 Ejemplo. Sea P el programa de nido


p(a) q(f (x)) r(g(x)) q(b) En este caso el universo de Herbrand es UL = fa, b, f(a), f(b), g(a), g(b), f(f(a)), f(f(b)), f(g(a)), f(g(b)), g(f(a)), g(f(b)), g(g(a)), g(g(b)),: : :g y la base de Herbrand BL = fp(t) : t 2 ULg fq(t) : t 2 UL g fr(t) : t 2 UL g

1.2.3 De nicion. Sea L un lenguaje de primer orden. Diremos que el par M= (D; I ) es una preinterpretacion de Herbrand del lenguaje L si:
1. D = UL , esto es, el universo de la preinterpretacion es el universo de Herbrand del lenguaje. 2. Para toda constante c de L,

I (c) = c
3. Para todo s mbolo de funcion n-ario f , I (f ) es la aplicacion I (f ) : UL n ! UL tal que I (f )(t ; : : : ; tn) = f (t ; : : : ; tn)
1 1

Una interpretacion de Herbrand es una interpretacion basada en una preinterpretacion de Herbrand.

1.2.4 De nicion. Sea L un lenguaje de primer orden y sea I el conjunto de todas las interpretaciones de Herbrand de L. Se de ne la aplicacion del conjunto I en el conjunto de las partes de la base de Herbrand del siguiente modo: : I ! P (BL ) M 7! (M) = fA 2 BL : M j= Ag 1.2.5 Proposicion. En las condiciones de la de nicion anterior, la aplicacion as de nida establece una biyeccion entre el conjunto I de las interpretaciones de Herbrand de L y el conjunto de las partes de la base de Herbrand P (BL ). Demostracion:
Inyectividad. Sean M= (D; I ) y M0 = (D; I 0) dos interpretaciones de Herbrand tales que

22

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

(M) = (M0). Puesto que ambas interpretaciones se basan en la misma preinterpretacion, para ver que M=M' basta ver que 8p 2 SP I (p) = I 0(p). (M) = (M0) =) fp(t ; : : : ; tn) 2 BL : M j= p(t ; : : : ; tn)g = fp(t ; : : : ; tn) 2 BL : M0 j= p(t ; : : : ; tn)g n =) 8p 2 SP 8(t ; : : : ; tn) 2 UL (t ; : : : ; tn) 2 I (p) $ (t ; : : : ; tn) 2 I 0(p) =) 8p 2 SP I (p) = I 0(p): Sobreyectividad Sea X BL y sea M la interpretacion de Herbrand tal que 8A 2 BL M j= A () A 2 X . Obviamente (M) = fA 2 BL : M j= Ag = X . 2
1 1 1 1 1 1 1

1.2.6 Nota.
1. En virtud de la proposicion anterior podemos identi car la interpretacion de Herbrand M con el subconjunto (M) = fA 2 BL : M j= Ag de BL . 2. En lo que sigue identi caremos M con (M) y usaremos la notacion I; I ; I : : : : para las interpretaciones de Herbrand.
3 1 2

1.2.7 Proposicion. Sea P un programa de nido y fMigi2I un conjunto no vac o de modelos de Herbrand de P . Entonces \i2I Mi es un modelo de Herbrand de P .

modelo de todas sus clausulas. Sea C la clausula C = 8x : : : xn (p(x ; : : : ; xn) _ :q (x ; : : : ; xn ) _ : : : _ :qm (x ; : : : ; xn)) \i2I Mi j= C () Para toda n-upla (a ; : : : ; an) = ~ 2 UL se tiene a n
1 1 1 1 1 1

Demostracion: Obviamente \i2I Mi es una interpretacion de Herbrand de P . Veamos que es

O bien p(~ ) 2 \i2I Mi a O bien 9i 2 f1; : : : ; mg tal que qi (~ ) 2 \i2I Mi a =

Sea ~ 2 UL y supongamos p(~ ) 2 \i2I Mi . Entonces a n a = 9j 2 I tal que p(~ ) 2 Mj a = =) 9j 2 I 9i 2 f1; : : : ; mg tal que qi(~ ) 2 Mj a = =) 9j 2 I 9i 2 f1; : : : ; mg tal que qi(~ ) 2 \i2I Mi a = Por tanto \i2I Mi es modelo de P .
3

De hecho hay autores que de nen las interpretaciones de Herbrand como subconjuntos de BP .

1.2. Modelos de Herbrand

23

1.2.8 Lema. Sea P un programa de nido. Entonces BP es un modelo de Herbrand de P .


Trivial. Para toda clausula C de P

Demostracion:

C = 8x : : : xn (p(x ; : : : ; xn) _
1 1 1

m _ j =1

:qj (x ; : : : ; xn)])
1 1

n BP j= C puesto que para toda n-upla (a ; : : : ; an) 2 UL , p(a ; : : : ; an) 2 BP . 2

el conjunto de los modelos de Herbrand de P es no vac o, y por la proposicion 1.2.7 la interseccion de todos los modelos de Herbrand de P es otro modelo de Herbrand, que llamaremos el menor modelo de Herbrand de P y denotaremos como MP , i.e., \ MP = fM : M es modelo de Herbrand de P g

1.2.9 De nicion. En virtud del lema anterior, dado un programa de nido P

1.2.10 Nota. Es importante destacar que la interseccion de modelos de Herbrand es modelo de Herbrand solo si estamos hablando conjuntos de clausulas de Horn. Para verlo baste tomar el conjunto S = fp(a) _ p(b)g formado por una sola clausula que no es clausula de Horn. En este caso I = fp(a)g e I = fp(b)g son modelos de Herbrand de S , pero I \ I = ; no lo es.
1 2 1 2

1.2.1 El teorema de Herbrand


1.2.11 De nicion.
1. La sustitucion es basica si Rang( ) UL . 2. La clausula C 0 es una instancia basica de la clausula C si existe una sustitucion basica tal que C 0 = (C ). 3. En general diremos que una clausula es basica si los literales que ocurren en ella son cerrados.

1.2.12 Teorema. Sea S un conjunto de clausulas y supongamos que S tiene un modelo. Entonces S tiene un modelo de Herbrand.

24

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

Supongamos que M es modelo de S . Sea M' la interpretacion de Herbrand dada por M0 = fA 2 BL : M j= Ag Veamos que es modelo de todas las clausulas de S . Sea C una de estas clausulas: m n _ _ C = 8x : : : xn ( pi (x ; : : : ; xn] _ :qj (x ; : : : ; xn)])
1

Demostracion:

M es modelo de C si y solo si 8(a ; : : : ; an


1

i=1

M j=
1

n _

j =1 ) 2 Un m _ j =1

n Sea (a ; : : : ; an) 2 UL . Entonces se tiene al menos una de estas opciones:


1 1

i=1

pi(a ; : : : ; an)] _
1

L :qj (a ; : : : ; an]
1

9i 2 f1; : : : ; ng tal que M j= pi(a ; : : : ; an) =) pi(a ; : : : ; an) 2 M0 9j 2 f1; : : : ; mg tal que M j= :qj (a ; : : : ; an) =) qj (a ; : : : ; an) 2 M0 =
1 1

Por tanto de una forma u otra n n _ _ M0 j= ( pi(a ; : : : ; an] _ :qj (a ; : : : ; an)]) Y esto concluye la demostracion.
i=1
1

j =1

1.2.13 Teorema. Sea S un conjunto de clausulas. Entonces S es insatisfacible si y solo si no tiene modelos de Herbrand.

(=)) Trivial. Si S es insatisfacible, no tiene modelos. En particular no tiene modelos de Herbrand. ((=) Por el teorema anterior, si S no tiene modelos de Herbrand, no tiene ningun modelo. 2

Demostracion:

Corolario. 1.2.14 (Lowenheim-Skolem) Si ? un conjunto consistente de


clausulas, entonces tiene un modelo numerable.

Es importante destacar que las tesis de los teoremas anteriores solo son validas si S es un conjunto de clausulas y no un conjunto de formulas cualesquiera.

L, UL siempre es numerable.

Si tiene trivialmente a partir del teorema 1.2.12, puesto que dado un lenguaje

Demostracion:

1.2. Modelos de Herbrand

25

1.2.15 Ejemplo. Sea S = fp(a); 9x:p(x)g. Notese que 9x:p(x) no es una clausula. Evidentemente, S es satisfacible, basta tomar la interpretacion M= (D; I ) con D = f0; 1g e I (a) = 0 e I (p) = f0g. Obviamente M es modelo
1 2

de S . Pero S no tiene modelos de Herbrand. Las unicas interpretaciones de Herbrand de S son I = ; e I = fp(a)g, pero ninguna de las dos es modelo de S Para intentar evitar situaciones como esta Skolem propone la incorporacion al lenguaje de unos s mbolos de funcion con los cuales podemos poner el cierre universal de cualquier formula en forma prenexa sin cuanti cadores universales.

1.2.2 El teorema de Skolem


1.2.16 De nicion. Para cada formula F de nimos su forma de Skolem, Skolem(F), como el resultado del siguiente \algoritmo" recursivo:
1

Sea F una formula en forma normal equivalente a 8(F ). Si F no tiene cuanti cadores existenciales, entonces Skolem(F ) es F .
1 1

Si F es de la forma 8x : : : 8xn 9yG entonces


1 1

Skolem(F ) = Skolem(8x : : : 8xn G y=f (x ; : : : ; xn])


1 1

donde f es un s mbolo de aridad n que no ocurre en F . En este caso se dice que f es una funcion de Skolem.

1.2.17 Ejemplo. Si F 9x:p(x) entonces Skolem(F ) :p(c) Si F 8x9yp(x; y) entonces Skolem(F 8xp(x; f (x)) Si F 9x8y9z(p(x; y) _ q(z)) entonces Skolem(F ) 8y(p(c; y) _ q(f (y)))
1 1 2 ) 3 3

1.2.18 Nota.
1. Las formas de Skolem son formas prenexas cuyo pre jo no contiene cuanti cadores existenciales. 2. A veces, se suprime el pre jo de las formas de Skolem (sobrentendiendose que todas las variables estan universalmente cuanti cadas).

Teorema. 1.2.19 (Teorema de Skolem) Una formula F es consistente si


y solo si su forma de Skolem Skolem(F ) es consistente.

26

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

Vamos a establecer el resultado para una formula del tipo 8x9yp(x; y). La demostracion del caso general se basa en los mismos razonamientos. (=)) Sean 8x9yp(x; y) y Skolem( ) 8xp(x; f (x)) donde f es un s mbolo de funcion n-ario que no pertenece a L. Sea M= (D; I ) un modelo de , por tanto para toda a 2 D, existe b 2 D tal que (a; b) 2 I (p). Sea L'=Lff g y sea M'= (D0; I 0) la interpretacion de L' en la que

Demostracion:

D = D0 I 0 se de ne como I con la ampliacion I (f ) : D ! D a 7! I (f (a)) donde I (f (a)) 2 D es alguno de los elementos b 2 D tal que (a; b) 2 I (p) .
4

Se tiene entonces que M0 j= 8xp(x; f (x)), puesto que para toda a 2 D, (a; f (a)) 2 I (p). ((=) Supongamos ahora que M0 j= 8xp(x; f (x)) donde M' es la interpretacion que acabamos de construir. Resulta evidente entonces que M j= 8x9yp(x; y)

1.2.20 Nota.
1. Hemos probado un poco mas de lo que a rma la tesis del teorema. Hemos visto que si F es una formula y M j= F podemos encontrar otra interpretacion M' con el mismo dominio tal que M0 j= Skolem(F ). 2. No obstante, F y Skolem(F ) no son logicamente equivalentes, esto es, Skolem(F ) j= F , pero no es cierto que F j= Skolem(F ). Lo podemos ver en el siguiente ejemplo.

1.2.21 Ejemplo. Sean F 9xp(x) y Skolem(F ) p(a). Sea M = (D; I ) la


siguiente interpretacion:

D = f0; 1g ( I (a) = 0 I (p) = f0g


4

Para tomar ese elemento b tenemos que hacer uso del axioma de eleccion.

1.2. Modelos de Herbrand

27

Obviamente M es modelo de Skolem(F ), pero no lo es de F .

1.2.22 Corolario. Sea ? = fF ; : : : ; Fng un conjunto de formulas y ?0 = fSkolem(Fi ) : 1 i ng el conjunto de sus formas de Skolem, obtenidas
1

usando para cada una distintas funciones de Skolem. Entonces ? es consistente si y solo si ?0 es consistente.5

Trivial a partir del teorema anterior.

Demostracion:

1.2.3 Interpretacion de MP
En general, cuando un programador escribe una formula o un conjunto de formulas tiene en mente una interpretacion determinada, que llamamos interpretacion intencionada. Obviamente ese conjunto de formulas admitira una gran cantidad de interpretaciones posibles y no podemos tener seguridad de cual es la interpretacion intencionada. Esta puede ser MP o no, pero la siguiente proposicion nos induce a pensar que MP es la interpretacion natural de un programa P . El siguiente resultado es debido a van Emden y Kowalski 50].

1.2.23 Teorema. Sea P un programa de nido. Entonces se tiene que MP = fA 2 B : A es consecuencia logica de Pg
A es consecuencia logica de P () P f:Ag es insatisfacible () P f:Ag no tiene modelos de Herbrand () Para todo modelo de Herbrand M de P , M no es modelo de :A () Para todo modelo de Herbrand M de P , A 2 M () A 2 MP
5

Demostracion:

Una vez estudiada la skolemizacion de una formula podemos presentar el problema general de la demostracion automatica: Dado un conjunto de formulas S , saber si la formula F es consecuencia logica o no de S . Este problema es equivalente a saber si ? = S fF g es inconsstente, esto es, si tiene o no modelos. Pero segun acabamos de ver, ? es consistente si el conjunto formado por las formas de Skolem de sus formulas, que llamaremos Skolem(?) es consistente. Pero a su vez el conjunto Skolem(?) no es mas que un conjunto de clausulas, por tanto hemos reducido nuestro problema a saber si un conjunto de clausulas es consistente o no.

28

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

1.3 Operador consecuencia inmediata


Esta seccion presenta un enfoque distinto dentro de la Programacion Logica, relacionando estrechamente la sintaxis y la semantica, las interpretaciones procedural y declarativa. La idea original se debe a van Emden y Kowalski 50]. Se dice que T es monotona si T (x) T (y) cuando x y.

1.3.1 De nicion. Sea L un ret culo completo y T : L ! L una aplicacion.


L. Se dice que X es dirigido si cada subconjunto nito de X tiene un cota superior en X .

1.3.2 De nicion. Sea L un ret culo completo y X

1.3.3 De nicion. Sea L un ret culo completo y T : L ! L una aplicacion. Decimos que T es continua si T (sup(X )) = sup(T (X )), para todo subconjunto dirigido X de L. 1.3.4 De nicion. Sea L un ret culo completo y sea T : L ! L una aplicacion. Diremos que a es un punto jo de T si T (a) = a. Se dira que a 2 L es el menor
punto jo de T , mpf (T ), si para todo punto jo b de T se tiene que a b. De forma analoga se de ne el mayor punto jo, Mpf (T ).

El siguiente resultado es una version debil de un teorema debido a Tarski 49], que generaliza un resultado anterior de Knaster y Tarski.

1.3.5 Proposicion. Sea L un ret culo completo y T : L ! L una aplicacion


monotona. Entonces T tiene un menor punto jo, mpf (T ), y un mayor punto jo, Mpf (T ). Mas aun, se tiene que mpf (T ) = inf fx : T (x) = xg = inf fx : T (x) xg Mpf (T ) = supfx : T (x) = xg = supfx : x T (x)g

Demostracion: Sea G = fx : T (x) xg y g = inf (G). Veamos que g 2 G. x2G =) g x Por ser g el n mo de G =) T (g) T (x) Por la monoton a de T =) T (g) x Por la de nicion de G Luego, T (g) g, ya que g = inf (G) y por tanto, g 2 G. Veamos ahora que g es punto jo, esto es, T (g) = g. Tenemos que g 2 G, luego T (g) g. Veamos
g T (g). T (g) g =) T (T (g)) T (g) =) T (g) 2 G =) g T (g)

1.3. Operador consecuencia inmediata

29

Por tanto T (g) = g. Sea ahora g0 = inf fx : T (x) = xg. Por ser g punto jo tenemos que g0 g. Por otra parte tenemos que fx : T (x) = xg fx : T (x) xg, luego g g0 y esto termina la demostracion. La demostracion de las igualdades del Mpf (T ) es analoga. 2

1.3.6 Proposicion. Sea L un ret culo completo y T : L ! L una aplicacion monotona. Supongamos que a 2 L y a T (a). Entonces existe un punto jo a0 de T tal que a a0 . Analogamente, si b 2 L y T (b) b, entonces existe un
punto jo b0 de T tal que b0

b.

Se tiene por la proposicion anterior. a T (a) =) a 2 fx : x T (x)g =) a supfx : x T (x)g = Mpf (T ) = a0 T (b) b =) b 2 fx : T (x) xg =) b inf fx : T (x) xg = mpf (T ) = b0

Demostracion:

En los siguientes resultados utilizamos aritmetica trans nita. Las de niciones y propiedades que se necesitan pueden encontrarse en 27].

1.3.7 De nicion. Sea L un ret culo completo y sea T : L ! L una aplicacion


monotona. De nimos: 1. 2. 3. 4. 5. 6.

T "0=? T " ( + 1) = T (T " T " = supfT " : T #0=> T # ( + 1) = T (T # T # = inf fT # :

) < g, si es un ordinal l mite ), si es un ordinal sucesor < g, si es un ordinal l mite


tales que si = Mpf (T ). entonces

1.3.8 Proposicion. Sea L un ret culo completo y T : L ! L una aplicacion monotona. Entonces, para todo ordinal , T " mpf (T ) y T #
Mpf (T ). Mas aun, existen ordinales y T " = mpf (T ) y si entonces T #
1 1 2 2 2 2 1 1

Damos aqu una demostracion para el mpf (T ). La demostracion para el Mpf (T ) es analoga. Seguiremos los siguientes pasos: Paso 1: Para todo ordinal , T " mpf (T ).

Demostracion:

30

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

T " 0 = ? = inf (L) mpf (T ).


Si es sucesor T " = T (T " ( ? 1)) hipotesis de induccion y ser T monotona.

T (mpf (T )) = mpf (T ) Por

Si es l mite T " = supfT " : < g mpf (T ) Por hipotesis de induccion. (Ya que si mpf (T ) supfT " : < g = fT " : < g6, existe < tal que T " 6 mpf (T ))
Paso 2: Para todo ordinal , T

"

T " ( + 1)

T " 0 = ? = inf (L) T " 1.


Si es sucesor T " = T (T " ( ? 1)) T (T " ) = T " ( + 1) Por hipotesis de induccion y ser T monotona. Si es l mite

T"

fT " : < g fT " ( + 1) : < g Por h.i. = fT (T " ) : < g T ( fT " : < g) ( ) = T (T " ) = T " ( + 1)

Veamos ( ). Para todo < T " fT " : < g =) Para todo < T (T " ) T ( fT " : < g) =) fT (T " ) : < g T ( fT " : < g)
Paso 3: Para cualesquiera ordinales

Por induccion sobre .

y , <

=) T "

T"

Si es sucesor =) (< = ? 1 =) T ( ) = T ( ? 1) T ( ) Por Paso 2 < ? 1 =) T ( ) T ( ? 1) T ( ) Por h.i. y Paso 2 Si es l mite < =) T "
6

fT " : < g = T " .

Usamos el s mbolo , para la inclusion estricta, esto es, A B () A B ^ A 6= B

1.3. Operador consecuencia inmediata


Paso 4: Para cualesquiera ordinales y , si < y T

31
" = T " entonces
)

T " = mpf (T ). < =)


(

+ 1 = =) T " ( + 1) = T " + 1 < =) T " ( + 1) T " =) T " ( + 1) Por Paso 2 T "

T" T " ( + 1) =) ) =) T " T " ( + 1) T " =) Por hipotesis T " = T " T " = T " ( + 1) = T (T " ) =) T " es punto jo =) T " = mpf (T ) Por Paso 1
Paso 5: Existe un ordinal tal que para cualquier otro ordinal , si entonces T " = mpf (T ) Sea el menor ordinal cuyo cardinal sea mayor que el cardinal de L. Supongamos que T " 6= mpf (T ) para todo ordinal < . De namos la aplicacion siguiente h : ! L 7! h( ) = T " Por Paso 4 la aplicacion h es inyectiva, lo que contradice la eleccion de . Luego T " = mpf (T ), para algun < . El resto de lo que a rma este paso se obtiene trivialmente a partir de los Pasos 1 y 3. 2

Por Paso 3 )

=)

1.3.9 Proposicion. Sea L un ret culo completo y sea T : L ! L una aplicacion continua. Entonces mpf (T ) = T " !.
Por la proposicion anterior basta ver que T " ! es un punto jo. Notese que el conjunto fT " n : n 2 !g es dirigido, ya que T es monotona. As T (T " !) = T (supfT " n : n 2 !g) = supfT (T " n) : n 2 !g = T "!

Demostracion:

1.3.10 Nota. Dado un programa de nido P , usaremos la notacion 2BP para


referirnos al conjunto de todas las interpretaciones de Herbrand de P , que es un ret culo completo para la inlusion de conjuntos .

32

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

1.3.11 De nicion. Sea P un programa de nido. Llamamos operador consecuencia inmediata a la aplicacion

TP : 2BP ! 2BP de nida del siguiente modo. Sea I una interpretacion de Herbrand de P . Entonces TP (I ) = fA 2 BP : A A ; : : : ; An es una instancia basica de una clausula de P y fA ; : : : ; Ang I g.
1 1

Claramente TP es monotona.

1.3.12 Proposicion. Sea P un programa de nido. Entonces la aplicacion TP


es continua.

Sea X un subconjunto dirigido de 2BP y veamos que TP (sup(X )) = sup(TP (X )), para lo cual necesitamos el siguiente aserto: Aserto. fA ; : : : ; Ang sup(X ) () fA ; : : : ; Ang I para algun I 2 X . Suponiendo cierto al aserto se tiene: A 2 TP (sup(X )) () A A ; : : : ; An es una instancia basica de una clausula de P y fA ; : : : ; Ang sup(X ) () A A ; : : : ; An es una instancia basica de una clausula de P y fA ; : : : ; Ang I para algun I 2 X () A 2 TP (I ) para algun I 2 X () A 2 sup(TP (X )).
1 1 1 1 1 1

Demostracion:

Demostracion del aserto (=)) Puesto que X es un conjunto dirigido todo conjunto nito tiene una cota superior en X . Tenemos fA1; : : : ; Ang sup(X ) = I 2X I , en particular, 8i 2 f1; : : : ; ng 9Ii 2 X tal que Ai 2 Ii. Entonces fA1; : : : ; Ang n=1 Ii = supfI1; : : : Ing. Puede ocurrir i que el supremo no este en X , pero sabemos que existe un J 2 X que es cota superior de fI1; : : : ; Ing,i.e., fA1 ; : : : ; Ang supfI1; : : : Ing J .

((=) Trivial. 9I 2 X tal que fA ; : : : ; Ang I =) fA ; : : : ; Ang sup(X ).


1 1

I 2X I

Herbrand de P . Entonces se tiene que I es un modelo de P si y solo si TP (I ) I.

1.3.13 Proposicion. Sea P un programa de nido e I una interpretacion de Demostracion:

I es modelo de P () Para toda instancia basica A A ; : : : ; An de una clausula de P tal que fA ; : : : ; Ang I tenemos que A 2 I () TP (I ) I . 2
1 1

1.4. Clausura ordinal de TP #

33

1.3.14 Teorema. Sea P un programa de nido. Entonces se tienen las igualdades siguientes

MP = mpf (TP ) = TP " !

Demostracion:
MP = = = = =

\fI : I es modelo de Herbrand de P g \fI : TP (I ) I g inf fI : TP (I ) I g


mpf (TP ) TP " !

Por 1.3.5 Por 1.3.9 y 1.3.12

1.4 Clausura ordinal de TP #


1.4.1 De nicion. Por el teorema 1.3.8 sabemos que si P es un programa de nido existe un ordinal tal que para todo se tiene TP # = Mpf (TP ). Llamaremos a este ordinal la clausura ordinal de TP # y lo denotaremos kTP # k.
Es facil ver que si TP # es continua kTP # k !.

1.4.1 Asimetr a de TP #
Dado un programa de nido P el operador TP es continuo, sin embargo TP # no tiene porque ser continuo. Lo vemos en el siguiente ejemplo.

1.4.2 Ejemplo. Consideremos el siguiente programa


p(f (x)) p(x) q(a) p(x)
Se tiene que para n 1 TP # n = fq(a)g ff k (a) : k ng. Luego TP # ! = fq(a)g y por consiguiente TP # ! + 1 = ;. De ah que kTP # k = ! + 1 y TP no sea continua. Por tanto dado un programa de nido, no tenemos garantizado que su clausura ordinal sea menor o igual que !. Dedicaremos esta seccion a presentar una cota para la clausura ordinal de un programa de nido. Para ello necesitamos algunas de niciones:

34

Cap tulo 1. Modelos de Herbrand. Operador consecuencia inmediata

1.4.3 De nicion. Sea R un orden parcial bien fundamentado en ! en el que

denotaremos como dom(R) su dominio y escribiremos a <R b en lugar de (a; b) 2 R. Asociaremos al orden R el ordinal kRk de nido del siguiente modo ( es kak = 0 fkbk + 1 : b < ag si aotroun elemento <R-minimal de dom(R) sup en caso
R

kRk = supfkak : a 2 dom(R)g Diremos que un ordinal es recursivo si = kRk para algun orden parcial
bien fundamentado R que sea un predicado recursivo.
1

1.4.4 De nicion. Denotaremos como !ck al menor ordinal no recursivo .


7

El siguiente teorema nos caracteriza los ordinales kTP # k.

1.4.5 Teorema.
1. Para todo ordinal

!ck existe un programa de nido P tal que


1

kTP # k =
ck 2. Para todo programa de nido P , kTP # k !1 . n 1.4.6 Ejemplo. Para cada n; m 2 ! sea Pm el programa de nido n Pm = fpj (f (x)) pj (x) : j 2 f0; : : : ; m ? 1gg fpj (ci) pj (x) : j 2 f0; : : : ; m ? 1g i 2 f0; : : : ; ngg fpm (ci ) pm (ci) : i 2 f0; : : : ; n ? 1gg fpm (cn) pm(cn)g n Se comprueba facilmente que el Mpf (Pm ) = fpm (cn)g y que la clausura ordinal n es kTPm # k = !m + n.
+1 +1

La demostracion de este teorema necesita resultados de la Teor a de la Recursion y la Teor a de Conjuntos que exceden los l mites de esta memoria. Blair presenta una demostracion en 8] y Apt comenta este y otros resultados en 3].
ck !1 (!1 de Church y Kleene) recibe este nombre por ser el analogo constructivo del primer ordinal no numerable !1 . Este ordinal es numerable y fue presentado por Church y
7

Kleene en 1937 en 14]. Podemos encontrar distintos comentarios sobre este ordinal en 41]

Cap tulo 2 SLD-resolucion


En este cap tulo presentamos los procedimientos basicos que se usan en Programacion Logica para la demostracion de teoremas. Existen muchas variantes y re namientos de los metodos que no entramos a describir, todas ellas basadas en el metodo de resolucion presentado por Robinson 44] en 1965.

2.1 Respuestas
Como vimos, desde un punto de vista procedural, podemos considerar que una uni cacion dentro de un problema no es mas que la asignacion de un valor determinado a una incognita del problema, esto es, planteada una pregunta el uni cador es la respuesta.

2.1.1 Nota. En lo que sigue consideraremos que el objetivo siempre es una formula del lenguaje LP . 2.1.2 De nicion. Sea P un programa de nido y G el objetivo de nido. Una respuesta para P fGg es una sustitucion tal que Dom( ) V (G). 2.1.3 De nicion. Sea P un programa de nido, G un objetivo de nido A ; : : : ; Ak y una respuesta para P fGg. Decimos que es una respuesta correcta para P fGg si 8((A ^ : : : ^ Ak ) ) es consecuencia logica de P .
1 1

A partir del Teorema 1.2.23 y de la de nicion de respuesta correcta podr a pensarse que dado un programa P la respuesta es correcta si y solo si MP j= 8((A ^ : : : ^ Ak ) ) Desafortunadamente, esto no es as en general.
1

35

36 2.1.4 Ejemplo. Sea P el programa

Cap tulo 2. SLD-resolucion

p(a) Sea G el objetivo p(x) y la sustitucion identidad. Se tiene que MP = fp(a)g y MP j= 8xp(x) . No obstante, no es una respuesta correcta, ya que 8xp(x) no es consecuencia logica de P . La razon es que :8xp(x) no es una clausula y no podemos restringir nuestra atencion a las interpretaciones de Herbrand.
1

2.1.5 Teorema. Sea P un programa de nido y sea G un objetivo de nido A ; : : : ; Ak . Supongamos que es una respuesta para P fGg tal que (A ^: : :^Ak ) es basica. Entonces, las siguientes condiciones son equivalentes:
1 1

1. es correcta. 2. Para todo modelo de Herbrand M de P , M j= (A1 ^ : : : ^ Ak ) . 3. MP j= (A1 ^ : : : ^ Ak )

Las demostraciones de (1) ) (2) y (2) ) (3) son triviales. Veamos (3) ) (1) MP j= (A ^ : : : ^ An) =) Para todo M modelo de Herbrand de P , M j= (A ^ : : : ^ An) =) P f:(A ^ : : : ^ An) g no tiene modelos de Herbrand =) P f:(A ^ : : : ^ An) g no tiene modelos =) (A ^ : : : ^ An) es consecuencia logica de P =) es correcta. 2
1 1 1 1 1

Demostracion:

2.2 SLD-resolucion
La SLD-resolucion es una adaptacion del metodo de resolucion para programas de nidos descrito por primera vez por Kowalski, aunque es en un art culo de Apt y van Emden 6] donde aparece por primera vez este termino.
2

Sea M = (D; I ) la interpretacion de LP dada por 8 < D = f0; 1g )=0 : I (a) = f0g I (p Se comprueba trivialmente que M es modelo de p(a), pero no lo es de 8xp(x). 2 El termino SLD-resolucion, (SLD-resolution, en ingles) es un acronimo de \SLResolution for De nite clauses", donde a su vez \SL-Resolution" es un termino abreviado de \Linear resolution with Selection function".
1

2.2. SLD-resolucion

37
1

2.2.1 De nicion. Sea G el objetivo


1

A ; : : : ; Am; : : : ; Ak y C la clausula A B ; : : : ; Bq . Se dice que el objetivo G0 es derivado de G y C usando el umg si se veri can las siguientes condiciones:
1. Am es un atomo de G, llamado el atomo seleccionado. 2. es un umg de Am y A. 3. G0 es el objetivo (A ; : : : ; Am? ; B ; : : : ; Bq ; Am ; : : : ; Ak ) .
1 1 1 +1

Diremos entonces que G0 es una resolvente de G y C .

2.2.2 De nicion. Sea P un programa de nido y G un objetivo de nido. Una SLD-derivacion de P fGg es una sucesion ( nita o in nita) de objetivos G =
0 1 2 1 2 1 2

G ; G ; G : : :, una sucesion C ; C : : : de variantes de clausulas del programa P y una sucesion ; ; : : : de umg y tales que
1. Gi se deriva de Gi y Ci usando
+1 +1 +1 1 2 +1

i+1 .

2. V (Ci ) \ (V (G) V (C ) V (C ) : : : V (Ci)) = ;, esto es, ninguna de las variables que ocurren en Ci ocurre en G, C , C , : : : o Ci. Denominaremos a esta condicion separacion de variables (\Standardising apart" en ingles) .
1 2 3

Cada variante de una clausula de programa C ; C : : : se le llama clausula de entrada de la derivacion. (En la pagina siguiente se muestra un esquema de SLD-derivacion).
1 2

2.2.3 De nicion. Una SLD-refutacion de P fGges una SLD-derivacion nita de P fGgque tiene la clausula vac a 2 como ultimo objetivo. Si Gn = 2
4

se dice que la refutacion tiene longitud n.

A lo largo del cap tulo, cuando hablemos de \derivacion" y \refutacion" nos referiremos siempre a SLD-derivacion y SLD-refutacion.
De esta forma evitamos que las derivaciones dependan de las variables utilizadas. En la practica, esta condicion se cumple generalmente numerando las clausulas y asociando a las variables el sub ndice correspondiente. 4 El principal objetivo de la Programacion Logica es la demostracion de teoremas mediante refutacion, pero la SLD-derivacion no solo nos permite refutar, sino tambien computar, ya que como vimos, el proceso de uni cacion no es mas que la asignacion de valores a las variables y esto puede ser tomado como la busqueda de soluciones a problemas.
3

38

Cap tulo 2. SLD-resolucion

SLD-derivacion, salvo que no exigimos que los i sean umg, basta con que sean uni cadores.
SLD-derivacion

2.2.4 De nicion. De nimos una SLD-derivacion no restringida como una

G =G
0

C;
1

? =
1

C;
2

= ?
2

C;
3

...

= ?

Gn? ?

Cn ;

Gn

= ?

...

2.3. Adecuacion de la SLD-resolucion

39

2.2.5 De nicion. Una SLD-derivacion puede ser nita o in nita. Una SLDderivacion nita puede tener exito o ser fallida.
1. Una SLD-derivacion con exito es una SLD-derivacion que termina con la clausula vac a, esto es, una refutacion. 2. Una SLD-derivacion fallida es una SLD-derivacion que termina en una clausula no vac a con la propiedad de que el atomo seleccionado en el ultimo objetivo no uni ca con la cabeza de ninguna clausula del programa.

2.2.6 De nicion. Sea P un programa de nido. El conjunto de exito de P es el conjunto de todos los A 2 BP tales que P f Ag tiene una SLD-refutacion.
El conjunto de exito de P es la contrapartida procedural del menor modelo de Herbrand de P . Veremos mas adelante que realmente ambos conjuntos coinciden.

2.2.7 De nicion. Sea P un programa de nido y G un objetivo de nido. Una respuesta computada para P fGg es la sustitucion obtenida restringiendo
la composicion : : : n a las variables de G, donde ; : : : ; umg usada en una SLD-refutacion de P fGg.
1 1

es la sucesion de

2.3 Adecuacion de la SLD-resolucion


La siguiente version del teorema de adecuacion de la SLD-resolucion se debe a Clark 11].

Teorema. 2.3.1 (Adecuacion de la SLD-resolucion) Sea P un programa


de nido y G un objetivo de nido. Entonces cada respuesta computada para P fGg es una respuesta correcta para P fGg.

Sea G el objetivo A ; : : : ; Ak y sea ; : : : ; n la sucesion de umg usada en la refutacion de P fGg. Veamos que 8((A ^ : : : ^ Ak ) : : : n) es consecuencia logica de P . Lo probamos por induccion en la longitud de la refutacion. (n = 1) Si la refutacion es de longitud 1 es porque G es un objetivo de la forma A , el programa tiene una clausula unidad A y existe un umg tal que A = A . Por tanto, puesto que A es una instancia de una clausula de P , tenemos que 8(A ) es consecuencia logica de P . (n ? 1 ) n) Supongamos probado el resultado para refutaciones de longitud n ? 1 y sea ; : : : ; n la sucesion de umg usada en una refutacion de P fGg
1 1 1 1 1 1 1 1 1 1 1 1 1

Demostracion:

40
1

Cap tulo 2. SLD-resolucion

de longitud n. Sea A B ; : : : ; Bq la primera clausula de entrada y Am el atomo seleccionado en G. Por hipotesis de induccion

8((A ^ : : : ^ Am? ^ B ^ : : : ^ Bq ^ Am ^ : : : ^ Ak ) : : : n ) es consecuencia logica de P . Luego si q > 0 8((B ^ : : : ^ Bq ) : : : n) es consecuencia logica de P y por tanto 8(Am : : : n ) (que es lo mismo que 8(A : : : n)) es consecuencia logica de P y por tanto P j= 8((A ^ : : : ^ Ak ) : : : n ) como quer amos probar. 2
1 1 1 +1 1 1 1 1 1 1 1

2.3.2 Corolario. Sea P un programa de nido y G un objetivo de nido. Supongamos que existe una SLD-refutacion de P fGg. Entonces P fGg es
insatisfacible.

Sea G el objetivo A ; : : : ; Ak . Por el teorema 2.3.1 la respuesta computada que hemos obtenido en la SLD-refutacion de P fGg es correcta, luego
1

Demostracion:

P j= 8((A ^ : : : ^ Ak ) )
1

Aplicando ahora el teorema A.3.14 tenemos que

P f:8((A ^ : : : ^ Ak ) )
1

es insatisfacible. De ah que P fGg sea insatisfacible.


en su menor modelo de Herbrand.

2.3.3 Corolario. El conjunto de exito de un programa de nido esta contenido


Sea P un programa de nido y sea A 2 BP .

Demostracion:

A pertenece al conjunto de exito de P () P f Ag tiene una SLD-refutacion =) P j= A Por 2.3.1 () A 2 MP Por 1.2.23

2.3. Adecuacion de la SLD-resolucion

41

2.3.4 De nicion. Si A es un atomo, de nimos A] = fA0 2 BP : A0 = A para alguna sustitucion g


As A] es el conjunto de todas las instancias cerradas de A.

2.3.5 Teorema. Sea P un programa de nido y sea G el objetivo de nido A : : : Ak . Supongamos que P fGg tiene una SLD-refutacion de longitud n
y
1 1

j =1

: : : n es la sucesion de umg de la SLD-refutacion. Entonces tenemos que k A : : : ] T " n. j n p


1

Probamos este teorema por induccion sobre la longitud de la derivacion. (n = 1) En este caso G es de la forma A y el programa tiene una clausula unidad A tal que existe un umg de A y A tal que A = A . Obviamente A] 2 TP " 1 y por tanto
1 1 1

Demostracion:

A ]= A ]
1

A] TP " 1

(n?1 ) n) Supongamos ahora el resultado cierto para refutaciones de longitud (n ? 1) y consideremos una refutacion de P fGg de longitud n. Tomemos entonces Aj , un atomo de G , el segundo objetivo de la refutacion. Por hipotesis de induccion
1 1

(Aj ) : : : n] TP " (n ? 1)
1 2

y por la monoton a de TP , TP " (n ? 1) TP " n. Supongamos ahora que Aj es el atomo seleccionado en G y sea B la primera clausula de entrada. Tenemos que B = Aj
1 1

B ; : : : ; Bq
1

Si q = 0. B ] TP " 1 con lo que tenemos

Aj : : : n ]
1

Aj ]
1

B ] T p " 1 Tp " n

Si q > 0. Por hipotesis de induccion, para todo i 2 f1; : : : ; qg

Bi : : : n ] Tp " (n ? 1) y por la de nicion de TP , Aj : : : n ] = B : : : n ] T p " n


1 1 1

42

Cap tulo 2. SLD-resolucion

2.4 Completitud de la SLD-resolucion


Para la demostracion de los resultados de esta seccion necesitamos dos lemas tecnicos que enunciamos a continuacion. No damos aqu sus demostraciones aunque s ejemplos ilustrativos. Los detalles de las demostraciones pueden encontrarse en 37].

Lema. 2.4.1 (Lema umg) Sea P un programa de nido y sea G un objetivo de nido. Supongamos que P fGg tiene un SLD-refutacion no restringida. Entonces P fGg tiene una SLD-refutacion de la misma longitud tal que, si
1

0 0 son los uni cadores de la SLD-refutacion no restringida y 1 ; : : : ; n son los umg de la SLD-refutacion, existe una sustitucion tal que 1 : : : n = 0 0 1::: n .

;:::;

2.4.2 Ejemplo. Sea el programa P


(

1. p(x; y) 2. q(z; a)

q(x; y) p(v; w)

Consideremos la siguiente derivacion no restringida del objetivo G

p(v; w)
1
1

= fx=u; y=u; v=u; w=ug

q(u; u)
2
2

= fz=a; u=ag

2.4. Completitud de la SLD-resolucion

43

Tenemos que = fx=a; y=a; v=a; w=a; z=a; u=ag. Veamos ahora una refutacion del mismo objetivo donde los uni cadores son de maxima generalidad
1 2

p(v; w)
1
?
1

= fv=x; w=yg = fx=z; y=ag

q(x; y)
2
2

2
1 2

Aqu 0 0 = fv=z; w=a; x=z; y=ag. Basta tomar como sustitucion = fz=a; u=ag para que se veri que la tesis del lema. La demostracion del caso general se realiza por induccion sobre la longitud de la refutacion. Para longitud uno se aplica directamente la de nicion de uni cador de maxima generalidad. Para longitud superior a uno se aplica esta misma de nicion junto con la hipotesis de induccion.
jetivo de nido y una sustitucion. Supongamos que existe una SLD-refutacion de P fG g. Entonces existe una SLD-refutacion de P fGg de la misma longitud tal que, si 1 ; : : : ; n son los umg de la SLD-refutacion de P fG g y 0 0 fGg, entonces existe una 1 ; : : : ; n son los umg de la SLD-refutacion de P 0 ::: 0 . sustitucion tal que 1 : : : n = 1 n

Lema. 2.4.3 (Lema de la elevacion) Sea P un programa de nido,G un ob-

2.4.4 Ejemplo. Sean el programa P


(

1. p(x; y) 2. q(z; z)

q(x; y)

44

Cap tulo 2. SLD-resolucion

el objetivo G p(v; w) y la sustitucion = fv=ag. Consideremos la siguiente refutacion de G p(a; w)

p(a; w)
1
?
1

= fy=w; x=ag = fz=a; w=ag

q(a; w)
2
2

donde las clausulas y uni cadores utilizados en cada paso se dan de forma expl cita en el diagrama. Tenemos que = fx=a; y=a; z=ag Veamos que podemos encontrar una refutacion de G veri cando la tesis del lema
1 2

p(v; w)
1
?
1

= fx=v; y=wg = fv=z; w=zg

q(v; w)
2
2

2
1 2

Con 0 0 = fx=z; w=zg. Puesto que = fv=a; x=a; y=a; z=ag tomando = fz=a; v=a; y=ag se tiene lo que a rma el teorema.
1 2

En el caso general la idea de la demostracion es simple. Basta considerar que la composicion de con la sucesion de uni cadores ; : : : ; n resultante de una refutacion de G dan lugar a una refutacion no restringida de G. Luego basta aplicar el lema 2.4.1.
1

2.4. Completitud de la SLD-resolucion

45

2.4.5 Teorema. El conjunto de exito de un programa de nido es igual a su menor modelo de Herbrand.
Sea P un programa de nido. Por el corolario 2.3.3 es su ciente probar que el menor modelo de Herbrand de P esta contenido en el conjunto de exito de P . Sea A 2 MP . Por el Teorema 1.3.14 A 2 MP = TP " ! = fTP " n : n 2 !g Por tanto A 2 TP " n para algun n 2 !. Probemos por induccion sobre n que si A 2 TP " n entonces P f Ag tiene una SLD-refutacion y por tanto A pertenece al conjunto de exito de P . (n = 1) Si A 2 TP " 1 es porque existe una clausula unidad en P , A tal que A es una instancia cerrada de A . En este caso es evidente que P f Ag tiene una refutacion. (n ? 1 ) n) Supongamos el resultado cierto para n ? 1. Sea A 2 TP " n. Por la de nicion de P existe una instancia basica de una clausula de P , B B ; : : : ; Bq tal que A = B y fB ; : : : ; Bq g TP " (n ? 1) para algun . Por hipotesis de induccion, para todo i 2 f1; : : : ; qg P f Bi g tiene una SLD-refutacion. Puesto que para todo i 2 f1; : : : ; qg Bi es cerrado, estas refutaciones se pueden combinar para obtener una refutacion de P f (B ; : : : ; Bq ) g, de donde P f Ag tiene una refutacion no restringida. Por ultimo aplicamos el lema 2.4.1 y obtenemos una refutacion de P f Ag. 2
1 1 1 1 1

Demostracion:

Teorema. 2.4.6 (Completitud de la SLD-Resolucion) Sea P un programa de nido y G un objetivo de nido. Supongamos que P fGg es insatisfacible. Entonces existe una SLD-refutacion de P fGg. Demostracion: Sea G el objetivo de nido A ; : : : ; An. Puesto que P fGg es insatisfacible MP 2 P fGg, de donde tenemos que MP 2 G. Por tanto para alguna sustitucion , fA ; : : : ; An g MP . Por el teorema 2.4.5 para todo i 2 f1; : : : ; ng hay una SLD-refutacion para P fAi g. Pero los Ai son atomos cerrados,
1 1

as que podemos combinar esas refutaciones para obtener una refutacion de P f (A ; : : : ; An) g Por ultimo, si existe una refutacion de P fG g, por el lema 2.4.3 existe una refutacion de P fGg. 2
1

2.4.7 Lema. Sea P un programa de nido y A un atomo. Supongamos que 8(A) es consecuencia logica de P . Entonces existe una SLD-refutacion de P f Ag con la sustitucion identidad como la respuesta computada.

46 Demostracion:
1

Cap tulo 2. SLD-resolucion

Sea fx ; : : : ; xng el conjunto de las variables que ocurren en A. Sea fa ; : : : ; ang un conjunto de n constantes del lenguaje que no ocurren en P ni en A, y sea la sustitucion = fx =a ; : : : ; xn=ang Obviamente A es consecuencia logica de P . Puesto que A es cerrado, por el teorema 2.4.5 P f A g tiene una refutacion. Puesto que ai no ocurre en A ni en P , sustituyendo ai por xi, i 2 f1; : : : ; ng, obtendr amos una refutacion de P f Ag con la sustitucion identidad como respuesta computada. 2
5 1 1 1

El siguiente resultado es un inverso parcial del teorema de adecuacion. Se debe a Clark 11].

2.4.8 Teorema. Sea P un programa de nido y sea G un objetivo de nido. Para toda respuesta correcta para P fGg existe una respuesta computada para P fGg y una sustitucion tal que = . Demostracion: Sea G el objetivo A ; : : : ; Ak . Puesto que es correcta 8((A ^ : : : ^ Ak ) ) es consecuencia logica de P y por el lema 2.4.7 para todo i 2 f1; : : : ; kg existe una refutacion de P f Ai g tal que la respuesta computada es la sustitucion
1 1

identidad. Podemos por tanto combinar esas refutaciones para obtener una refutacion de P f G g tal que la respuesta computada sea la identidad. Sea ; : : : ; n la sucesion de umg de la refutacion de P f G g. Puesto que su composicion es la sustitucion identidad tenemos que G : : : n = G y por el lema de elevacion 2.4.3 existe una refutacion de P fGg con los umg 0 ; : : : ; 0 tal que n 0 ::: n = 0;:::; n 0 0 para alguna sustitucion 0. Sea la restriccion de 0 : : : n a las variables de 0 apropiada. G. Entonces = donde es la restriccion de 2
1 1 1 1 1 1

2.5 Reglas de computacion


Existen muchas formas de seleccionar los atomos de un objetivo en una resolucion. Presentamos aqu un criterio clasico en el que dado un objetivo siempre seleccionamos en el el mismo atomo independientemente del punto de la derivacion en que nos hallemos. Esta de nicion de regla de computacion, aunque r gida, nos permite probar que la existencia o no de refutacion no depende de la regla elegida.
5

Si no existen tales constantes se las a~adimos al lenguaje n

2.5. Reglas de computacion

47

2.5.1 De nicion. Dado un lenguaje L, una regla de computacion es una aplicacion entre el conjunto de objetivos de nidos y el conjunto de atomos, de forma que la imagen de un objetivo por esa aplicacion sea un atomo de ese objetivo, llamado el atomo seleccionado de ese objetivo. R : Objetivos De nidos ! Atomos ( B ; : : : ; Bn) 7! R( B ; : : : ; Bn) = Bi i 2 f1; : : : ; ng
1 1

2.5.2 De nicion. Sea P un programa de nido, G un objetivo de nido y R una regla de computacion. Una SLD-derivacion de P fGg v a R es una SLD-derivacion de P fGg en la cual usamos la regla de computacion R para
seleccionar atomos Al de nir de este modo las reglas de derivacion estamos imponiendo una restriccion muy fuerte, ya que si un objetivo aparece en diferentes momentos tenemos que seleccionar en el siempre el mismo atomo. Dicho de otro modo, existen SLD-derivaciones que no son SLD-derivaciones v a R para ninguna regla de computacion R. Hay otros autores que consideran esta restriccion demasiado fuerte y dan otras de niciones mas exibles de lo que puede ser una regla de computacion.
6

2.5.3 De nicion. Sea P un programa de nido, G un objetivo de nido y R una regla de computacion. Una SLD-refutacion de P fGg v a R es una SLD-refutacion de P fGg en la que usamos la regla de computacion R para
seleccionar atomos.

2.5.4 De nicion. Sea P un programa de nido, G un objetivo de nido y R una regla de computacion. Una respuesta R- computada de P fGg es una respuesta computada de P fGgobtenida a partir de una SLD-refutacion v a
R.
Nuestra intencion es demostrar que si tenemos un programa de nido P , un objetivo de nido G y P fGg es insatisfacible entonces podemos encontrar una SLD-refutacion de P fGg independientemente de la regla de computacion que usemos, esto es, que si existe una SLD-refutacion de P fGg entonces existe una SLD-refutacion v a R, para cualquier regla de computacion que usemos. Para probarlo necesitamos un lema tecnico previo en el que empleamos la siguiente notacion: Si C es una clausula de un programa de nido, C denotara la cabeza de la causula y C ? denotara el cuerpo.
+ 7

6 7

Ver Apt 3]. No damos aqu la demostracion del lema, que puede encontrarse en 37].

48

Cap tulo 2. SLD-resolucion

Lema. 2.5.5 (Lema del Cambio) Sea P un programa de nido y G un objetivo de nido. Supongamos que P fGg tiene una SLD-refutacion
G = G; G ; : : : ; Gq? ; Gq ; Gq ; : : : ; Gn = 2 con clausulas de entrada C ; : : : ; Cn y umg ; : : : ; n . Supongamos que Gq? es A ; : : : ; Ai? ; Ai; : : : ; Aj? ; : : : ; Ak Gq es (A ; : : : ; Ai? ; Cq ?; : : : ; Aj? ; Aj ; Ak ) q Gq es (A ; : : : ; Ai? ; Cq ? ; : : : ; Aj? ; Cq ?; : : : ; Ak ) q q Entonces existe una SLD-refutacion de P fGg en la cual Aj es el atomo seleccionado en Gq? en lugar de Ai y Ai es el seleccionado en Gq en lugar de Aj . Mas aun, si es la respuesta computada para P fGg en la refutacion dada y 0 es la respuesta computada de P fGg en la nueva refutacion, entonces
0 1 1 +1 1 1 1 1 1 1 1 1 1 +1 1 1 1 +1 +1 1

G es una variante de G 0 .

2.5.6 Ejemplo. Consideremos el siguiente programa P


8 > 1. p(x1 ; y1; z1) < > 2. q(x2 ; a) : 3. r(y2; z2 ; b)

q(x ; y ); r(y ; z ; x )
1 1 1 1 1

Consideremos la siguiente refutacion del objetivo p(x; y; z), donde las clausulas de entrada son, por este orden, 1, 2 y 3. (Marcamos en negrilla el atomo seleccionado).

p(x; y; z)
1
?
1

= fx=x ; y=y ; z=z g


1 1 1 1 1 1

q(x1; y1); r(y ; z ; x )


2
? 1
2

= fx =x ; y =ag
1 2 1

r(a; z ; x2)
3
3

= fy =a; z ; z ; x =bg
2 2 1 2

Tenemos que la respuesta computada en esta derivacion es = fx=b; y=a; z=z g


1

2.5. Reglas de computacion

49
1

y por tanto G p(b; a; z ). Veamos ahora una derivacion del mismo objetivo donde se han permutado los atomos seleccionados en G y G , esto es, las clausulas de entrada son, por este orden, 1, 3 y 2.
1 2

p(x; y; z)
1
?
1 1 1

= fx=x ; y=y ; z=z g


1 1 1

q(x ; y ); r(y1; z1; x1)


3
?
2

= fy ; y ; z =z ; x =bg
1 2 1 2 1

q(b; y2)
2
3

= fx =b; y =ag
2 2

La respuesta computada en esta derivacion es


0 = fx=b; y=a; z=z
2 2

y por tanto G 0 p(b; a; z ). Obviamente se tiene que G 0 es una variante de G como a rma el lema.

Teorema. 2.5.7 (Independencia de la regla de computacion)

Sea P un programa de nido y G un objetivo de nido. Supongamos que existe una SLD-refutacion de P fGg con como respuesta computada. Entonces, para cualquier regla de computacion R, existe una SLD-refutacion de P fGg v a R con una respuesta R-computada 0 tal que G 0 es una variante de G .

Sea G = G ; G ; : : : ; Gn = 2 la sucesion de objetivos de la SLD-refutacion de P fGg que sabemos que existe por hipotesis y sea la respuesta computada en esa refutacion. Suponemos que para todo i 2 f0; : : : ; n ? 1g Gi se obtiene a partir de Gi y la clausula de entrada Ci mediante el umg i . Sea i el menor ndice para el cual la seleccion de atomos determinada por R y la realizada en la SLD- refutacion var an. Sea Ai el atomo seleccionado por R en Gi. Puesto que la SLD-derivacion dada termina en la clausula
0 1 +1

Demostracion:

50

Cap tulo 2. SLD-resolucion

vac a, ese atomo (o su variante correspondiente) es seleccionado en un paso posterior de la refutacion. Supongamos que es en el objetivo Gr (r > i) donde seleccionamos Ai. En virtud del lema del cambio 2.5.5 podemos permutar los atomos seleccionados de Gr y Gr? con lo que obtendr amos una nueva refutacion en la que seleccionamos Ai en el objetivo Gr? . Permutando ahora los atomos seleccionados en Gr? y Gr? , Gr? y Gr? , etc: : : podemos conseguir una SLD-refutacion 0 en la que seleccionamos Ai en el objetivo Gi. Si 0 es la respuesta computada en esta nueva derivacion 0 es evidente que G 0 es una variante de G . En el paso siguiente volvemos a tomar el menor ndice j para el cual la seleccion de atomos realizada en 0 y la indicada por R di eren. Obviamente j > i y puesto que la refutacion tiene un numero nito de objetivos, el proceso termina. 2
1 1 1 2 2 3

2.5.8 De nicion. Sea P un programa de nido y R una regla de computacion. El conjunto de R-exito de P es el conjunto de todos los A 2 BP tales que P f Ag tiene una SLD-refutacion v a R. 2.5.9 Teorema. Sea P un programa de nido y R una regla de computacion. Entonces el R-conjunto de exito de P es igual a su menor modelo de Herbrand.
Se tiene directamente a partir de los teoremas 2.4.5 y 2.5.7.

Demostracion:

2.5.10 Teorema. Sea P un programa de nido, G un objetivo de nido y R una regla de computacion. Supongamos que P fGg es insatisfacible. Entonces existe un SLD-refutacion de P fGg v a R.
Directamente a partir de 2.4.6 y 2.5.7.

Demostracion:

El teorema de completitud de la SLD-Resolucion puede ser generalizado en distintas direcciones. Una de ellas es la siguiente:

2.5.11 Teorema. Sea P un programa de nido , G un objetivo de nido y R una regla de computacion. Entonces, para toda respuesta correcta de P fGg existe una respuesta R-computada para P fGg y una sustitucion tal que
=
.

Trivial a partir de 2.4.8 y 2.5.7.

Demostracion:

2.6. Procedimientos de SLD-Refutacion

51

2.6 Procedimientos de SLD-Refutacion


En esta seccion vamos a formalizar la de nicion de SLD-arbol, que no es mas que el arbol formado por todas las posibles derivaciones de un programa y un objetivo. El problema consiste ahora en estudiar la existencia o no de ramas con exito dentro de un arbol. Este estudio es mas propio de la Teor a de Grafos que de la Programacion Logica, por lo que no entramos a estudiarlo en profundidad. Nos limitamos a presentar sin demostracion tres teoremas elementales (2.6.4, 2.6.5, 2.6.6) y un ejemplo clasico debido a Apt y van Emden que pone de mani esto la importancia de estos procedimientos y estrategias.
8

2.6.1 De nicion. Sean P un programa de nido y G un programa de nido. Un SLD-arbol para P fGges un arbol satisfaciendo las siguientes condiciones:
1. Cada nodo del arbol es un objetivo de nido (puede ser la clausula vac a). 2. El nodo ra z es G. 3. Sea A ; : : : ; Am; : : : ; Ak (k 1) un nodo del arbol y supongamos que Am es el atomo seleccionado. Entonces, para cada clausula de entrada A B ; : : : ; Bq tal que Am y A son uni cables mediante el umg el nodo tiene un hijo
1 1

(A ; : : : ; Am? ; B ; : : : ; Bq ; Am ; : : : ; Ak )
1 1 1 +1

4. Los nodos que son clausulas vac as no tienen hijos. Cada rama del SLD-arbol es una derivacion de P fGg. Las ramas correspondientes a derivaciones con exito las llamaremos ramas con exito, las ramas correspondientes a derivaciones in nitas las llamaremos ramas in nitas y las ramas que corresponden a derivaciones fallidas las llamaremos ramas fallidas. Diremos que un SLD-arbol tiene exito si contiene alguna rama con exito. Podemos enunciar ahora el siguiente

Teorema. 2.6.2 (Teorema del exito) Sea P un programa de nido y A un


atomo cerrado. Son equivalentes: 2. A 2 TP " !
8

1. A pertenece al conjunto de exito de P .


Las demostraciones pueden encontrarse en Lloyd 37].

52
3. Cada SLD-arbol de P f Ag tiene exito. 4. P j= A.

Cap tulo 2. SLD-resolucion

Por los teoremas 1.2.23, 1.3.14 y 2.4.5 tenemos las equivalencias (1) () (2) () (4). Por otra parte, a partir de la de nicion de SLD-arbol, la a rmacion (3) equivale a a rmar \Existe una refutacion de P f Ag" de donde la equivalencia entre (1) y (3) resulta evidente.

Demostracion:

2.6.3 De nicion. Sea P un programa de nido, G un objetivo de nido y R una regla de computacion. El SLD-arbol de P fGg v a R es el SLD-arbol de P fGg en el que se ha usado R como regla de computacion. 2.6.4 Teorema. Sea P un programa de nido, G un objetivo de nido y R una regla de computacion. Supongamos que P fGg es insatisfacible. Entonces el SLD-arbol de P fGg v a R tiene al menos una rama con exito. 2.6.5 Teorema. Sea P un programa de nido, G un objetivo de nido y R una regla de computacion. Entonces cada respuesta correcta de P fGg esta puesta de mani esto (\displayed") en el SLD-arbol de P fGg v a R. Donde
\puesta de mani esto" signi ca que, dado hay una rama con exito tal que es una instancia de la respuesta computada de la refutacion correspondiente a esa rama.

2.6.6 Teorema. Sea P un programa de nido y G un objetivo de nido . Entonces o bien todo SLD-arbol de P fGg tiene in nitas ramas de exito, o bien todo SLD-arbol de P fGg tiene el mismo numero nito de ramas de exito. 2.6.7 De nicion. Una regla de busqueda es una estrategia para encontrar raFinalizamos este cap tulo con un ejemplo clasico debido a Apt y van Emden 6] que pone de mani esto como puede cambiar la forma y el tama~o de un n SLD-arbol al cambiar la regla de computacion. mas con exito dentro de los SLD- arboles. Un procedimiento de SLD- refutacion viene dado por una regla de computacion junto con una regla de busqueda.

2.6. Procedimientos de SLD-Refutacion

53

2.6.8 Ejemplo. Se P el siguiente programa


1. camino(x; z) 2. camino(x; x) 3. arco(b; c)

arco(x; y); camino(y; z)

Una posible interpretacion de P es la evidente, esto es, se veri ca camino(x; y) si existe un camino de x a y y se veri ca arco(x; y) si existe un arco de x a y. Las dos guras siguientes muestran SLD-arboles de

P f camino(x; c)g
El atomo seleccionado esta en negrilla y las clausulas se modi can segun las sustituciones indicadas. Las clausulas de entrada del nivel i se obtienen de la clausula original a~adiendo el sub ndice i a las variables que ya han sido n consideradas en la derivacion. De esta forma se garantiza la condicion de la separacion de variables.

camino(x,c)
fz=c; x =xg
1

YY YY YY

fx=c; x =cg
1

YY

Y s Y

arco(x,y),camino(y,c)
3 fx=b; y=cg

camino(c,c)
fx =c; z =cg
2 2 2

YY Y

YY Y YY

fx =cg
2

Y s Y

arco(c; y2); camino(y ; c)

54

Cap tulo 2. SLD-resolucion

Notese que este primer SLD-arbol es nito, en cambio el que ofrecemos a continuacion es in nito.

camino(x,c)
fz=c; x =xg
1

YY Y

YY Y

fx=c; x =cg
1

YY s

arco(x; y); camino(y; c)

2
2

fx =y; z =cg
2 2 2

YY

YY Y

fy=c; x =cg
YY s Y

arco(x; y); arco(y; y ); camino(y2; c)


Y

arco(x,c)
3

1
A A A A

YY 3 YY YY s Y

fx =c; y =cg
2

fx=bg
2
?

arco(x; y); arco(y; c)


3
?

Subarbol in nito

fy=bg

arco(x,b)

de refutacion. Podemos encontrar una exposicion clara en 22].

2.6.9 Nota. Existen numerosos estudios sobre estrategias y procedimientos

Cap tulo 3 Funciones recursivas


En este cap tulo estudiamos la relacion que hay entre la Programacion Logica y la Teor a de la Recursion, demostrando que toda funcion recursiva puede ser computada por un programa de nido.

3.1 Interpretaciones declarativa y procedural


El estudio de la Programacion Logica admite dos interpretaciones contrapuestas y a la vez complementarias a las que ya hemos hecho referencia: Una interpretacion declarativa y otra procedural.

La interpretacion declarativa hace referencia a que debe ser computado

por el programa, nos da el objetivo, a donde queremos llegar, independientemente de que exista un algoritmo o no que nos conduzca a ese objetivo. Entre los conceptos que hemos de nido, tienen un clara interpretacion declarativa: El menor modelo de Herbrand, el conjunto de fallo nito, etc... a cuales son los pasos que sigue para conseguir su objetivo. Tienen una fuerte interpretacion procedural conceptos como: El conjunto de exito de un programa, el SLD- conjunto de fallo nito, etc...

La interpretacion procedural hace referencia a como computa el programa,

Resumiendo, podemos decir que la interpretacion declarativa hace referencia al signi cado, al sentido de lo que hacemos y la interpretacion procedural al metodo, al procedimiento. Bajo esta perspectiva general, los teoremas de adecuacion demuestran que los conceptos de nidos de forma procedural realmente son los mismos que aquellos 55

56

Cap tulo 3. Funciones recursivas

que se han de nido de forma declarativa y por otra parte los teoremas de completitud no hacen mas que probar que los conceptos de nidos de forma declarativa son los mismos que los de nidos de forma procedural.

3.2 Funciones recursivas


3.2.1 De nicion. Se de nen las funciones basicas como las siguientes funciones 1. O : ! ! ! O(x) = 0 Funcion cero 2. S : ! ! ! S (x) = x + 1 Funcion sucesor 3. in : !n ! ! in(x ; : : : ; xn) = xi 8n 1 8i 2 f1; : : : ; ng Funcion proyeccion
1

3.2.2 De nicion.
1. Si f : !n ! ! y g ; : : : ; gn : !m ! ! son funciones parciales, la aplicacion parcial h : !m ! ! de nida por
1

h(a ; : : : ; am ) = f (g (a ; : : : ; am ); : : : ; gn(a ; : : : ; am ))
1 1 1 1

diremos que se obtiene de f; g ; g ; : : : ; gn por composicion. 2. Si f : !n ! ! y g : !n ! ! son funciones parciales, la aplicacion parcial h : !n ! ! de nida por h(a ; : : : ; an; 0) = f (a ; : : : ; an) h(a ; : : : ; an; x + 1) = g(a ; : : : ; an; x; h(a ; : : : ; an; x))
1 2 +2 +1 1 1 1 1 1

diremos que se obtiene de f y g por recursion (o recursion primitiva). 3. Sean f : !n ! ! y (a ; : : : ; an) = ~ , la aplicacion a ( (~ ; ) = a a x(f (~ ; x) = 0) = y; si fotroycaso0 y 8z < y(f (~ ; z) #6= 0) a "; en
+1 1

diremos que se obtiene de f por ? recursion

De nicion. 3.2.3 (Dedekind, Skolem, Godel) La clase de las funciones


primitivas recursivas es la menor clase de funciones que 1 " signi ca que la funcion no esta de nida y # que s esta de nida.

3.3. Teorema de Andreka y Nemeti

57

1. Contiene las funciones basicas. 2. Es cerrada bajo composicion. 3. Es cerrada bajo recursion primitiva. funciones que

3.2.4 De nicion. La clase de las funciones recursivas es la menor clase de


1. Contiene las funciones basicas 2. Es cerrada bajo composicion, recursion primitiva y -recursion. Nuestro objetivo es establecer un resultado esencial dentro de la fundamentacion teorica de la Programacion Logica, y es el hecho de que toda funcion computable puede ser computada por un programa de nido. Podemos encontrar distintos art culos tratando este tema, cada uno de los cuales asume una de nicion diferente de \funcion computable". As podemos encontrar demostraciones de que toda funcion Turing computable puede ser computada por un programa de nido (Tarnlund, 48]), o bien usando maquinas de registro ilimitadas para de nir funciones computables (Shepherdson, 46]). Kowalski 31] establecio el resultado mostrando como transformar un conjunto de ecuaciones recursivas en un programa de nido. Andreka y Nemeti 2] y Sonenberg y Topor 47] demostraron la adecuacion de los programas de nidos para la computacion sobre un universo de Herbrand. Sebelik y Stepanek 45] demostraron que toda funcion recursiva parcial puede ser computada por un programa de nido. Presentamos aqu los teoremas de Andreka y Nemeti y Sebelik y Stepanek.

3.3 Teorema de Andreka y Nemeti


cantidad in nita numerable de s mbolos de predicado de aridad n.

3.3.1 Nota. Asumiremos que L es un lenguaje con al menos un s mbolo de constante. As mismo supondremos que para cada n 2 ! el lenguaje tiene una

3.3.2 De nicion. Diremos que un programa de nido P computa un subconn junto R de UL, mediante el s mbolo de predicado r de aridad n si para toda n n-upla (t ; : : : ; tn) 2 UL se tiene (t ; : : : ; tn) 2 R () Existe una SLD-refutacion de P f r(t ; : : : ; tn)g
1 1 1

Esta de nicion, de clara intencion procedural, tiene su contrapartida declarativa:

58

Cap tulo 3. Funciones recursivas

3.3.3 De nicion. Diremos que un programa de nido P de ne un subconn junto R de UL , mediante el s mbolo de predicado r de aridad n si para toda n n-upla (t ; : : : ; tn) 2 UL se tiene (t ; : : : ; tn) 2 R () P j= r(t ; : : : ; tn)g
1 1 1

n 3.3.4 Teorema. Sea P un programa de nido, R UL y r un s mbolo de predicado n-ario de L. Entonces las siguientes condiciones son equivalentes:

1. P computa R usando r. 2. P de ne R usando r.


n 3. Para todo (t1 ; : : : ; tn) 2 UL se tiene
1

(t ; : : : ; tn) 2 R () r(t ; : : : ; tn) 2 MP


1

Se tiene por aplicacion directa de los teoremas 1.3.14 y 2.6.2.

Demostracion:

As , el problema de cuales son los subconjuntos computables por programas de nidos se reduce a estudiar que subconjuntos del ultimo modelo de Herbrand puede ser de nido mediante atomos. Nosotros vamos a estudiar el caso en que el lenguaje L tenga al menos un s mbolo de constante y al menos un s mbolo de funcion, con lo que garantizaremos que UL es in nito. La asuncion de que L contiene in nitos s mbolos de predicado para cada aridad n, con n 2 ! nos permite construir nuevas clausulas sin problemas sintacticos. Tambien exigiremos que tanto el conjunto de las constantes del lenguaje como el conjunto de los s mbolos de funcion sean nitos

3.3.5 De nicion. Diremos que una relacion binaria R en UL es una enumeracion de UL si R de ne una funcion sucesor en UL ; esto es, existe una aplicacion biyectiva : ! ! UL tal que para todo par (x; y) 2 R, existe n 2 !
tal que x = (n) e y = (n + 1) Como primer paso hacia la caracterizacion de los predicados computables por programas logicos probamos el siguiente resultado debido a Andreka y Nemeti 2]. La presentacion que hacemos se debe a Blair 9].

Teorema. 3.3.6 (Teorema de enumeracion) Existe un programa sucesor tal que computa una enumeracion de UL usando la relacion binaria suc.

3.3. Teorema de Andreka y Nemeti

59

La construccion del programa sucesor es bastante tediosa. La idea que Blair utiliza es de nir una funcion peso de un termino cerrado
2

Demostracion:

peso(x) = 0 si x es una constante peso(f (t ; : : : ; tn)) = 1 + maxfpeso(ti ) : i 2 f1; : : : ; ngg


1

y un buen orden en el conjunto de s mbolos de funcion y constantes mediante una biyeccion con !. Mas tarde con ayuda de la funcion peso establece un buen orden en el conjunto de los terminos cerrados. La construccion del programa sucesor se lleva a cabo trasladando minuciosamente la de nicion de ese buen orden al lenguaje de las clausulas. Los detalles pueden encontrarse en 3]. 2

3.3.7 Proposicion. Para todo programa P , MP es recursivamente enumerable.

Por el teorema 1.3.14 tenemos que A 2 MP si y solo si existe k 2 ! tal que A 2 TP " k, por tanto el resultado es inmediato, puesto que, mediante una codi cacion apropiada es facil ver que el predicado pertenecer a TP " k es recursivo. 2 El teorema de enumeracion nos permite identi car cualquier universo de Herbrand, con las retricciones antes expuestas, con el conjunto de los numeros naturales, por lo que podemos aplicar ahora sobre este conjunto la teor a de la recursion.

Demostracion:

Teorema. 3.3.8 (Andreka y Nemeti, 1978) Para toda funcion recursiva


f existe un programa P que computa el grafo de f usando una relacion pf .

3.3.9 Nota. No damos aqu la demostracion del teorema de Andreka y Nemeti


puesto que es analoga a la que presentamos del teorema de Sebelik y Stepanek. Una presentacion amena de esta demostracion puede encontrarse en 3].

merable si y solo si existe un programa P que lo computa usando una relacion r.


Notese la semejanza entre el concepto que Blair de ne como peso (height) y el que Lassez, Maher y Marriot de nen como profundidad (depth), 34].
2

3.3.10 Corolario. Un predicado R de nido sobre UL es recursivamente enu-

60 Demostracion:

Cap tulo 3. Funciones recursivas

()) Supongamos que para algun predicado recursivo S se tiene que ~ 2 R () 9b(~ ; b) 2 S a a Sea PS es programa que computa la funcion caracter stica de S , CS , usando la relacion pS . Entonces el programa PS aumentado con la clausula pR (x ; : : : ; xk ) pS (x ; : : : ; xk ; y; 0) computa el predicado R usando es s mbolo de predicdo pR . (() Se tiene directamente a partir de los teoremas 3.3.4 y 3.3.7. 2
1 1

3.3.11 Corolario. Si un programa P computa el grafo de una funcion total


usando alguna relacion, entonces la funcion es recursiva.

Una funcion total es recursiva si y solo si su grafo es recursivamente enumerable. 2

Demostracion:

3.3.12 Corolario. Existe un progrma P tal que MP es r.e.-completo. Demostracion: Sea R una relacion r.e.-completa de nida sobre UL . Por el corolario 3.3.10 y

el teorema 3.3.4 tenemos que para todo ~ , a ~ 2 R () r(~ ) 2 MP a a donde P es un programa que computa R usando una relacion r. Esto prueba que MP es r.e.-completo. 2

3.3.13 Nota. En 3] podemos encontrar diversos resultados relacionados con


este teorema.

3.4 Teorema de Sebelik y Stepanek


parcial n-aria. Entonces existe un programa de nido Pf y un s mbolo de predicado (n + 1)-ario pf tal que todas las respuestas computadas de Pf f pf (sk1 (0); : : : ; skn (0); x)g son de la forma fx=sk (0)g y para toda n-upla de enteros no negativos (k1 ; : : : ; kn) y para todo entero no negativo k tenemos que f (k1 ; : : : ; kn) = k si y solo si fx=sk (0)g es una respuesta computada de Pf f pf (sk1 (0); : : : ; skn (0); x)g.

Teorema. 3.4.1 (Sebelik y Stepanek, 1982) Sea f una funcion recursiva

3.4. Teorema de Sebelik y Stepanek

61

En el programa Pf representamos el entero no negativo k como sk (0), donde s representa la funcion sucesor. Por el teorema 2.5.7 podemos suponer que toda respuesta computada es R- computada, donde R es la regla de seleccion en la que siempre seleccionamos el atomo mas a la izquierda. Hacemos la demostracion por induccion sobre q, el numero de veces que aplicamos composicion, recursion primitiva y ?recursion para de nir f . (q = 0) En este caso f es una funcion basica. 1. Si f es la funcion cero, entonces Pf es el programa

Demostracion:

pf (x; 0)
2. Si f es la funcion sucesor, entonces Pf es el programa

pf (x; s(x))
3. Si f es la funcion proyeccion, in(x ; : : : ; xn) = xi entonces Pf es el programa pf (x ; : : : ; xn; xi )
1 1

Obviamente, para cada una de estas funciones, los programas dados cumplen las condiciones requeridas. (q ? 1 ) q) Supongamos ahora que la funcion recursiva parcial f esta de nida para q (q > 0) aplicaciones de composicion, recursion primitiva y ?recursion.
Composicion Supongamos que la de nicion de f es

f (x ; : : : ; xn) = h(g (x ; : : : ; xn); : : : ; gm(x ; : : : ; xn)) con h; g ; : : : ; gm funciones recursivas parciales. Por hipotesis de induccion, para cada i 2 fi; : : : ; mg existe un programa de nido Pgi y un s mbolo de predicado pgi que satisfacen las condiciones del teorema. Analogamente existe un programa de nido Ph y un s mbolo de predicado ph que satisface las condiciones del teorema. Podemos suponer que los s mbolos de predicado que ocurren en los programas Pg1 ; : : : :Pgm y Ph son distintos. De nimos Pf como la union de esos s mbolos de predicado junto con la clausula pf (x ; : : : ; xn; z) pg1 (x ; : : : ; xn; y ); : : : pgm (x ; : : : ; xn ; ym); ph(y ; : : : ; ym; z) Claramente podemos ver, por induccion, que toda respuesta computada de Pf f pf (sk1 (0); : : : ; skn (0); zg es de la forma fz=sk (0)g. Supongamos que
1 1 1 1 1 1 1 1 1 1

62
1

Cap tulo 3. Funciones recursivas

f (k ; : : : ; kn) = k y para cada i 2 fi; : : : ; mg sea gi(k ; : : : ; kn) = ni . Por hipotesis de induccion tenemos que fyi=sni (0)g es una respuesta computada de Pgi f pgi (sk1 (0); : : : ; skn (0); yig y que fz=sk (0)g es una respuesta computada de Ph f ph(sn1 (0); : : : ; snm (0); zg, por tanto fz=sk (0)g es una respuesta computada para Pf f pf (sk1 (0); : : : ; skn (0); zg. Por otra parte, supongamos que fz=sk (0)g es una respuesta computada de Pf f pf (sk1 (0); : : : ; skn (0); zg. De la refutacion en la que obtenemos esta respuesta podemos extraer, para cada i 2 fi; : : : ; mg, una respuesta computada fyi=sni (0)g para Pgi f pgi (sk1 (0); : : : ; skn (0); yig y una respuesta computada fz=sk (0)g para Ph f ph(sn1 (0); : : : ; snm (0); zg. Entonces, por hipotesis de induccion tenemos que, para cada i 2 fi; : : : ; mg, gi(k ; : : : ; kn) = ni y que h(n ; : : : ; nm ) = k. De ah que f (k ; : : : ; kn) = k.
1 1 1 1

Recursion primitiva Supongamos que f tiene a siguiente de nicion:

f (x ; : : : ; xn; 0) = h(x ; : : : ; xn ) f (x ; : : : ; xn; y + 1) = g(x ; : : : ; xn; y; f (x ; : : : ; xn; y))


1 1 1 1 1

donde h y g son funciones recursivas parciales. Por hipotesis de induccion, para las funciones h y g existen dos programas de nidos Ph y Pg y dos s mbolos de predicado ph y pg que satisfacen las propiedades del teorema. Podemos tambien suponer que Ph y Pg no tienen s mbolos de predicado en comun. De nimos Pf como la union de Ph y Pg junto con las clausulas

pf (x ; : : : ; xn; 0; z) ph(x ; : : : ; xn; z) pf (x ; : : : ; xn; s(y); z) pf (x ; : : : ; xn; y; u); pg(x ; : : : ; xn; y; u; z)


1 1 1 1 1

Un razonamiento similar al que hemos hecho con la composicion nos demuestra que este programa tiene las propiedades deseadas.

?recursion Supongamos que f esta de nida de la siguiente manera


f (x ; : : : ; xn ) = y(g(x ; : : : ; xn; y) = 0)
1 1

con g una funcion recursiva parcial. Por hipotesis de induccion tenemos que para la funcion g existe un programa de nido Pg y un s mbolo de predicado pg que satisfacen las condiciones del teorema. De nimos Pf como Pg junto con

3.4. Teorema de Sebelik y Stepanek

63

las clausulas siguientes

pf (~ ; y) x r(~ ; 0) x r(~ ; y) x

pg (~ ; y; 0); % g(~ ; y) = 0 x x r(~ ; y) x % 8z(z < y ! g(~ ; z) > 0) x suc(y0; y); r(~ ; y0); x pg (~ ; y0; z); x p<(0; z)
% % % %

y = y0 + 1 8z(z < y0 ! g(~ ; z) > 0) x g(~ ; y0) = z x 0<z

Donde tras el s mbolo % indicamos las interpretaciones intencionadas de las distintas clausulas. Un argumento similar a los usados anteriormente, puesto que los predicados utilizados son recursivos, demuestra que el programa de nido Pf cumple la tesis del teorema. 2

Para simpli car la notacion escribimos ~ en lugar de la n-upla x1 ; : : : ; xn . x

Cap tulo 4 Informacion Negativa


4.1 Introduccion
Hasta el momento, con nuestro estudio sobre Programacion Logica solo podemos demostrar teoremas que nos dan informacion positiva; es decir, solo los literales positivos pueden ser ser consecuencia logica de un programa. As , si tenemos un programa de nido P y un atomo A 2 BP no podemos probar que :A sea consecuencia logica de P . La razon esta en que P fAg es satisfacible teniendo a BP como modelo. n- arios (n > 0), con un unico s mbolo de predicado 1-ario: \alumno" y el siguiente conjunto de constantes SC=fEsther, Juan, Rosa, Miguel, Pepeg. Consideremos el siguiente programa P sobre L: alumno(Esther) alumno(Juan) alumno(Rosa) Supongamos que nuestro objetivo es probar que :alumno(Miguel) es consecuencia logica de P . Con las herramientas que tenemos hasta ahora no podemos, ya que BP es modelo de P f :alumno(Miguel)g, pero tampoco podr amos probar alumno(Pepe) ya que I=falumno(Esther), alumno(Juan), alumno(Rosa)g es modelo de P f alumno(Pepe)g. Para intentar solucionar nuestro problema vamos a ampliar el conjunto de nuestras reglas de inferencia para poder deducir informacion negativa. La primera regla de inferencia que presentamos para deducir informacion negativa, fue presentada por Reiter 43]. 64

4.1.1 Ejemplo. Sea L el lenguaje de primer orden sin s mbolos de funcion

4.2. Fallo nito

65
1

4.1.2 De nicion. Regla de Inferencia HMC] Si un atomo cerrado A no es consecuencia logica de un programa, entonces inferimos :A. 4.1.3 Nota. El acronimo HMC es la abreviatura de hipotesis del mundo cerrado, traduccion del acronimo ingles CWA, closed world assumption.

4.1.4 Ejemplo. As , en el ejemplo anterior el atomo cerrado alumno(Pepe)


no es consecuencia logica del programa P y por tanto, usando la regla HMC podemos inferir :alumno(Pepe). La HMC es la forma usual de razonamiento cuando se trabaja con bases de datos: La informacion que no esta presente de forma expl cita en la base de datos se toma como falsa. La HMC es un ejemplo de regla de inferencia no monotona.

4.1.5 De nicion. Una regla de inferencia ` se dice monotona si dados dos


programas P y P 0, para toda formula se tiene

P ` =) P P 0 ` esto es, la regla de inferencia es no monotona si a~adiendo nuevos axiomas n puede reducirse el numero de teoremas.
En consecuencia, dado un programa P al que podamos aplicar la HMC y dado un atomo A 2 BP , si queremos probar :A lo unico que tenemos que ver es que A no es consecuencia logica de P . Pero desgraciadamente el problema de la validez en logica de primer orden es indecidible, por tanto no hay ningun algoritmo que tomando como datos de entrada un programa de nido P y un atomo A 2 BP nos devuelva en un tiempo nito si A es o no consecuencia logica de P , ya que si el atomo cerrado A no es consecuencia logica de P podemos entrar en un proceso in nito. En la practica restringimos la aplicacion de la HMC unicamente a aquellos atomos cerrados tales que al intentar hacer una refutacion fallamos de forma nita.

4.2 Fallo nito


4.2.1 Nota. El planteamiento que hacemos aqu fue presentado por Lloyd en
2

1987 (ver 37]) y es generalmente aceptado. No obstante otros autores han publicado trabajos que di eren de esta presentacion.
1 2

Apt nace una presentacion detallada de esta regla de inferencia en 3]. Ver la seccion \Resultados recientes" en este mismo cap tulo.

66

Cap tulo 4. Informacion Negativa

La regla de inferencia denominada regla de fallo nito es menos potente que la HMC y nos permite inferir menos informacion, no obstante tiene la ventaja de ser facilmente automatizable. Es la siguiente: Dado un programa de nido P y un objetivo de nido A, si existe un SLD-arbol nito sin ramas con exito de P f Ag deducimos :A Veamos algunos resultados relacionados con esta regla:

4.2.2 De nicion. Sea P un programa de nido. Se de ne el conjunto de atod mos de BP con fallo nito de profundidad d, FP , de la siguiente manera:
1. A 2 FP si A 2 TP # 1. = d 2. A 2 FP para d > 1 si para toda clausula B B ; : : : ; Bn de P y toda sustitucion tal que A = B y B ; : : : ; Bn sean atomos cerrados , d existe un k 2 f1; : : : ; ng y Bk 2 FP ? .
1 1 1 1

4.2.3 De nicion. Sea P un programa de nido. Se de ne el conjunto de fallo


nito, FP de P como el conjunto

FP =

d FP

4.2.4 Proposicion. Sea P un programa de nido, entonces FP = BP nTP # !


En la demostracion de esta proposicion necesitamos el siguiente Aserto.
d BP nFP = TP # d 8d 1 Suponiendo cierto el aserto se tiene que d d BP nFP = BP n d FP = \d (BP nFP ) = \d TP # d = TP # !
1 1 1

Demostracion:

Demostracion del aserto ( ) Lo vemos por induccion. (d = 1) Sea A 2 BP . Por de nicion, si A 2 FP entonces A 2 TP # 1. = 1 (d ) d + 1) Sea A 2 BP . Si A 2 FP +1 entonces existe una clausula B = d B1; : : : ; Bn y una sustitucion con A = B y fB1 ; : : : ; Bng BP tal que d para todo k 2 f1; : : : ; ng Bk 2 BP nFP . Pero por hipotesis de induccion d BP nFP TP # d con lo que tenemos que existe una clausula B B1; : : : ; Bn y una sustitucion con A = B y fB1 ; : : : ; Bng BP tal que para todo k 2 f1; : : : ; ng Bk 2 TP # d, por tanto A 2 TP # d + 1, como quer amos

4.2. Fallo nito

67

probar. ( ) Tambien lo vemos por induccion (d = 1) Sea A 2 BP . Por de nicion, si A 2 TP # 1 entonces A 2 FP . = (d ) d + 1) Sea A 2 BP . Si A 2 TP # d + 1 entonces existe una clausula B B ; : : : ; Bn y una sustitucion con A = B y fB ; : : : ; Bn g TP # d d. Pero por hipotesis de induccion TP # d BP nFP , con lo que tenemos que existe una clausula B B ; : : : ; Bn y una sustitucion con A = B y fB ; : : : ; Bng BP tal que para todo k 2 f1; : : : ; ng Bk 2 TP # d, por tanto A 2 FP . = d 2
1 1 1 1 1

4.2.5 De nicion. Sea P un objetivo de nido y G un objetivo de nido. Un SLD-arbol nitamente fallido de P fGg es un SLD-arbol nito que no contiene ramas con exito. 4.2.6 De nicion. Sea P un programa de nido, se de ne el SLD-conjunto de fallo nito de P como el conjunto de todos los atomos A 2 BP para los cuales existe un SLD-arbol nitamente fallido de P f Ag, esto es un arbol nito
sin ramas con exito. Notese que solo se exige la existencia de un SLD-arbol nitamente fallido de P f Ag para que A 2 BP pertenezca al SLD-conjunto de fallo nito de P . La siguiente proposicion y los dos lemas previos se deben a Apt y van Emden. No presentamos la demostracion de los lemas, pero pueden encontrarse en 6].

4.2.7 Lema. Sea P un programa de nido, G un objetivo de nido y una sustitucion. Supongamos que P fGgtiene un SLD-arbol nitamente fallido de profundidad k. Entonces P fG g tiene tambien un SLD-arbol nitamente
fallido de profundidad
1

k.

4.2.8 Lema. Sea P un programa de nido y fA ; : : : ; Amg BP . Supongamos que P f A ; : : : ; Am g tiene un SLD-arbol nitamente fallido de profundidad k entonces existe i 2 f1; : : : ; mg tal que P f Aig tiene un SLD-arbol
1

nitamente fallido de profundidad

k.

tiene un SLD-arbol nitamente fallido de profundidad que A 2 TP # k. =

4.2.9 Proposicion. Sea P un programa de nido y A 2 BP . Si P f Ag Demostracion:

k entonces se tiene

Lo probamos por induccion sobre k. (k = 1) Supongamos que P f Ag tiene un arbol nitamente fallido de

68

Cap tulo 4. Informacion Negativa

profundidad uno, esto es, A no uni ca con la cabeza de ninguna clausula de P . Obviamente A 2 TP # 1. = (k ? 1 ) k) Lo vemos por reduccion al absurdo. Supongamos que para todo A0 2 BP tal que P f A0g tiene un SLD-arbol nitamente fallido de profundidad menor o igual que k se veri ca que A0 2 TP # k, esto es, se veri ca = la tesis de la proposicion para k ? 1, y que existe A 2 BP con un arbol nitamente fallido de P f Ag de profundidad menor o igual que k y a su vez A 2 TP # k . Si A 2 TP # k, existe una clausula B B ; : : : ; Bn y una sustitucion tal que A = B y fB ; : : : ; Bn g TP # (k ? 1). Por tanto podemos encontrar un umg de A y B , A = B tal que = para algun . Pero entonces (B ; : : : ; Bn) es ra z de un SLD-arbol nitamente fallido de profundidad menor o igual que k ? 1. Por el lema 4.2.7 tambien existe un SLD-arbol nitamente fallido de profundidad menor o igual que k ? 1 para P f (B ; : : : ; Bn) g. Aplicando ahora el lema 4.2.8 existe i 2 f1; : : : ; ng tal que existe un arbol nitamente fallido para P f Bi g de profundidad menor o igual que k ? 1. Pero por hipotesis de induccion, si esto ocurre Bi 2 TP # k ? 1, con lo que llegamos a contradiccion. = 2 La de nicion 4.2.6 solo exige la existencia de un arbol nitamente fallido. Ser a muy util que tuvieramos alguna forma de encontrar ese arbol nitamente fallido, caso de que exista. La siguiente de nicion, presentada por Lassez y Maher en 33] va en esa direccion.
1 1 1 1

4.2.10 De nicion. Una SLD-derivacion es favorable si


3

O bien es fallida O bien cada atomo B de la derivacion , B es seleccionado en un numero nito de pasos.
4

4.2.11 De nicion. Diremos que un SLD-arbol es favorable si cada rama del


arbol es una SLD-derivacion favorable.

4.2.12 Proposicion. Sea P un programa de nido y

tivo de nido. Supongamos que existe una SLD-derivacion favorable no fallida A1; : : : Am = G0 ; G1; : : : con los umg 1; 2 ; : : :. Entonces, dado k 2 ! existe n 2 ! tal que Ai 1 ; : : : n] TP # k, para i 2 f1; : : : ; mg.

A ; : : : Am un obje1

Por el teorema 2.3.5 podemos asumir que la derivacion es in nita. Claramente


3 4

Demostracion:

Traduccion libre del termino ingles \fair". o alguna instancia suya

4.2. Fallo nito

69

es su ciente probar que dado i 2 f1; : : : ; mg y k 2 ! existe n 2 ! tal que Ai ; : : : n ] T P # k . Fijemos i 2 f1; : : : ; mg y veamos que el resultado es cierto por innduccion sobre k. (k = 0) Trivial. (k ? 1 ! k) Asumamos que el resultado es cierto para k ? 1 y supongamos que Ai : : : p? es seleccionado en el objetivo Gp? . (Por ser la derivacion favorable, Ai es seleccionado en algun momento). Sea Gp el objetivo B ; : : : ; Bq con q 1. Por hipotesis de induccion existe s 2 ! tal que q B j p ; : : : p s ] TP # (k ? 1). De ah que j Ai ; : : : p s] TP ( q Bj p ; : : : p s] TP (TP # (k ? 1)) = TP # k j Y esto concluye la demostracion. 2
1 1 1 1 1 =1 +1 + 1 + =1 +1 +

Combinando ahora los resultados de Apt y van Emden 6] y Lassez y Maher 33] obtenemos la siguiente caracterizacion del conjunto de fallo nito de un programa. 4.2.13 Teorema. Sea P un programa de nido y A 2 BP . Las siguientes condiciones son equivalentes: 1. A 2 FP 2. A 2 TP # ! = 3. A esta en el SLD-conjunto de fallo nito. 4. Cada SLD-arbol favorable de P f Ag es nitamente fallido. El esquema de la demostracion es el siguiente: ( 1 () 2 4)3)2)4 Con lo que tendremos probada la equivalencia entre las cuatro a rmaciones. (1) , (2) Se tiene por la proposicion 4.2.4. (4) ) (3) Obvio. (3) ) (2) Por la proposicion 4.2.9. (2) ) (4) Lo vemos por reduccion al absurdo. Supongamos que es falsa la a rmacion (4), esto es, existe una SLD-derivacion favorable de A que no falla en un numero nito de pasos. Entonces, por la proposicion 4.2.12 para todo k 2 ! A 2 TP # k, esto es A 2 TP # !. Contradiccion con (2). 2 Este teorema muestra que la SLD-derivacion favorable es una implantacion adecuada y completa de la regla de fallo nito.

Demostracion:

70

Cap tulo 4. Informacion Negativa

4.3 Programas normales


En esta seccion seguimos nuestro estudio sobre la informacion negativa ampliando el concepto de programa de nido a programa normal.

4.3.1 De nicion. Una clausula de programa es una clausula de la forma


A L ; : : : ; Ln donde A es un atomo y L ; : : : Ln son literales.
1 1

Notese que las clausulas de programa de nido son un caso particular de las clausulas de programa.

4.3.2 De nicion. Un programa normal es un conjunto nito de clausulas


5

de programa.

4.3.3 De nicion. Un objetivo normal es una clausula de la forma


L ; : : : ; Ln
1

donde L ; : : : ; Ln son literales.


1

4.3.4 De nicion. La de nicion de un s mbolo de predicado p en un programa normal P es el conjunto de todas las clausulas de programa de P que tienen el s mbolo p en su cabeza. 4.3.5 De nicion. Adoptaremos la siguiente de nicion de completacion de un
1 1

programa: Sea p(t ; : : : ; tn) L ; : : : ; Lm una clausula de un programa normal P . Consideraremos un nuevo s mbolo de predicado =, que no aparezca en LP , con la interpretacion \intencionada" de la relacion identidad. Vamos a transformar la clausula dada siguiendo los siguientes pasos: 1. Transformamos la clausula dada en

p(x ; : : : ; xn) (x = t ) ^ : : : ^ (xn = tn) ^ L ^ : : : ^ Lm donde x ; : : : ; xn son n variables que no aparecen en la clausula dada.
1 1 1 1 1

Aun podemos generalizar mas el concepto con los programas generales cuyas clausulas son del tipo
5

donde los Ai son atomos y los Lj literales cualesquiera.

A1 ; : : : An

L1 ; : : : ; L k

4.4. La teor a de igualdad

71

2. Si y ; : : : ; yd son las variables que existen en la clausula original hacemos


1

p(x ; : : : ; xn)
1

9y : : : 9yd((x = t ) ^ : : : ^ (xn = tn ) ^ L ^ : : : ^ Lm )
1 1 1 1

3. Supongamos que ya hemos hecho esta transformacion para toda clausula que pertenezca a la de nicion de p. Obtenemos por tanto k 1 formulas del tipo p(x ; : : : ; xn) E ... p(x ; : : : ; xn) Ek donde cada Ei tiene la forma generica
1 1 1

9y : : : 9yd ((x = t ) ^ : : : ^ (xn = tn) ^ L ^ : : : ^ Lm )


1 1 1 1

Por ultimo se de ne la de nicion completada de p como la formula

8x : : : 8xn(p(x ; : : : xn) $ E _ : : : _ Ek )
1 1 1

4.3.6 Nota. Puede ocurrir que alguno de los s mbolos de predicado que ocurran en el programa nunca aparezcan en la cabeza de una clausula. Para cada uno de esos s mbolos de predicado q a~adimos expl citamente la clausula n
8x : : : 8xn :q(x ; : : : ; xn)
1 1

que es la de nicion de q dada de forma impl cita en el programa . Tambien llamaremos a esta formula la de nicion completada de q. que vimos al principio del cap tulo es

4.3.7 Ejemplo. La de nicion completada del predicado alumno del ejemplo


8x(alumno(x) $ (x = Esther) _ (x = Juan) _ (x = Rosa))

4.4 La teor a de igualdad


En la de nicion de completacion de un programa normal hemos introducido un nuevo s mbolo de predicado = que no aparec a en el programa. Evidentemente queremos que la interpretacion del s mbolo sea la relacion identidad, pero tenemos que dar unas reglas para su uso desde un punto de vista sintactico. Llamaremos a los siguientes axiomas axiomas de la teor a de la igualdad.(Usaremos la notacion6= en lugar de : =):

72
1 1

Cap tulo 4. Informacion Negativa

1. 8(f (x ; : : : ; xn) 6= g(y ; : : : ; ym)) para todo par de s mbolos de funcion distintos f y g. 2. 8(f (x ; : : : ; xn) 6= c para todo s mbolo de funcion f y toda constante c. 3. 8(t(x) 6= x) para todo termino t(x) es que ocurra x y sea distinto de x. 4. 8((x 6= y ) _ : : : _ (xn 6= yn) ! f (x ; : : : ; xn) 6= f (y ; : : : ; yn)) para todo s mbolo de funcion f . 5. 8(x = x). 6. 8((x = y ) ^ : : : ^ (xn = yn) ! f (x ; : : : ; xn) = f (y ; : : : ; yn)) para todo s mbolo de funcion f . 7. 8((x = y ) ^ : : : ^ (xn = yn) ! (p(x ; : : : ; xn) ! p(y ; : : : ; yn)) para todo s mbolo de predicado p, incluido =.
1 1 1 1 1 1 1 1 1 1 1 1 1

4.4.1 De nicion. Sea P un programa normal. Denominaremos completacion


de P , comp(P ), al conjunto de formulas formado por las de niciones completadas de los s mbolos de predicado que ocurren en P junto con los axiomas de la teor a de igualdad.

4.4.2 De nicion. Sea P un programa normal y G el objetivo normal. Una respuesta para P fGg es una sustitucion tal que Dom( ) V (G). 4.4.3 De nicion. Sea P un programa normal, G un objetivo normal L ; : : : ; Lk y una respuesta para P fGg. Decimos que es una respuesta correcta para comp(P ) fGg si 8((L ^ : : : ^ Lk ) ) es consecuencia
1

logica de comp(P ).

Veremos que estas de niciones generalizan las de niciones dadas anteriormente de respuesta y respuesta correcta. Para ello el primer resultado que vemos es el siguiente:
logica de comp(P ).

4.4.4 Proposicion. Sea P un programa normal. Entonces P es consecuencia Demostracion:


1

Para probarlo tenemos que ver que todo modelo de comp(P ) es modelo de P . Sea M un modelo de comp(P ) y sea p(t ; : : : ; tn) L ; : : : ; Lm una clausula de P . Sean y ; : : : ; yn las variables que ocurren en la clausula y supongamos una asignacion de esas variables tal que M j= (L ^ : : : ^ Lm )
1 1 1

4.4. La teor a de igualdad

73

Consideremos la de nicion completada de P 8x : : : 8xn (p(x ; : : : ; xn) $ E _ : : : _ Ek ) y supongamos que Ei es 9y : : : 9yd ((x = t ) ^ : : : ^ (xn = tn) ^ L ^ : : : ^ Lm ) Si modi camos de forma que a cada xi le hace corresponder el termino (ti) tenemos M j= (L ^ : : : ^ Lm ) que junto con el axioma 6 de la teor a de igualdad hace que M j= Ei . De ah que M j= p(t ; : : : ; tn) como quer amos probar. 2
1 1 1 1 1 1 1 1 1

Vamos a generalizar la de nicion de operador consecuencia inmediata a programas normales.

4.4.5 De nicion. Sea J una preinterpretacion de un programa normal P y


sea I una interpretacion basada en J . Entonces
1 1

J TP (I ) = fAJ; : A L ^ : : : ^ Ln 2 P; V es una asignacion de variables de J y I j= (L ^ : : : ^ Ln)g J Si J es la preinterpretacion de P , escribiremos TP en lugar de TP .

p :p J No obstante, si P es un programa de nido TP es monotona.

siguiente programa P :

4.4.6 Nota. TPJ no es en general monotona, como se ve si consideramos el

4.4.7 Proposicion. Sea P un programa normal, J una preinterpretacion de LP , e I una interpretacion basada en J . Entonces I es modelo de P si y solo
J si TP (I ) I .

I es modelo de P si para toda instancia cerrada A L ; : : : ; Ln de una clausula de P tal que I j= L ^ : : : ^ Ln tenemos I j= A. Pero esto es lo mismo que J decir que si A 2 TP (I ) entonces A 2 I , que es lo que quer amos probar. 2
1 1

Demostracion:

4.4.8 Proposicion. Sea P un programa normal, J una preinterpretacion de


P , e I una interpretacion basada en J . Supongamos que I junto con la relacion identidad asignada a = es un modelo de la teor a de igualdad. Entonces I junto con la relacion identidad asignada a =, es un modelo de comp(P ) si y solo si J TP (I ) = I .

74 Demostracion:

Cap tulo 4. Informacion Negativa


J Supongamos primero que TP (I ) = I . Puesto que asumimos que I , junto con la relacion identidad asignada a = es modelo de la teor a de igualdad, basta probar que esta interpretacion es modelo de cada de nicion completada de comp(P ). Consideremos una de nicion del tipo 8x : : : 8xn :q(x ; : : : ; xn) puesto que I es punto jo, se tiene que esta interpretacion es modelo de la formula. Consideremos ahora una de nicion completada de la forma 8x : : : 8xn (p(x ; : : : ; xn) $ E _ : : : _ Ek ) J Puesto que TP (I ) I tenemos que la interpretacion es modelo de la formula 8x : : : 8xn (p(x ; : : : ; xn) E _ : : : _ Ek ) J Pero tambien tenemos que TP (I ) I de donde tenemos que esa interpretacion tambien es modelo de la formula 8x : : : 8xn (p(x ; : : : ; xn) ! E _ : : : _ Ek ) Supongamos ahora que I junto con la relacion identidad asignada a = es modelo de la completacion. Entonces usando el hecho de que la interpretacion es modelo de las formulas del tipo 8x : : : 8xn (p(x ; : : : ; xn) E _ : : : _ Ek ) J tenemos que TP (I ) I . Analogamente, puesto que la interpretacion es modelo de 8x : : : 8xn (p(x ; : : : ; xn) ! E _ : : : _ Ek ) J tenemos que TP (I ) I . 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

4.4.9 Proposicion. Sea P un programa de nido y A 2 BP . Entonces A 2 Mpf (TP ) si y solo si comp(P ) fAg tiene un modelo de Herbrand.
()) Supongamos que A 2 Mpf (TP ). Por la proposicion anterior Mpf (TP ) fs = s : s 2 UP g es modelo de Herbrand de comp(P ) fAg. (() Supongamos ahora que comp(P ) fAg tiene un modelo de Herbrand M. Puesto que M j= comp(P ), el s mbolo de predicado = tiene asignada la relacion identidad en M. Por tanto M tiene la forma M = I fs = s : s 2 UP g para alguna interpretacion de Herbrand I de P . Luego, por la proposicion anterior I = TP (I ) y A 2 I . De ah que A 2 I Mpf (TP ). 2

Demostracion:

4.5. SLDNF-resolucion

75
1

4.4.10 Proposicion. Sea P un programa de nido y sean A ; : : : ; Am atomos. Si 8(A ^ : : : ^ Am ) es consecuencia logica de comp(P ) entonces tambien
lo es de P .
1 1

Sean x ; : : : ; xk las variables que ocurren en A ^ : : : ^ Am . Vamos a probar que 8x : : : 8xk (A ^ : : : ^ Am) es consecuencia logica de P , esto es, que P f:8x : : : 8xk (A ^ : : : ^ Am )g es insatisfacible, o lo que es lo mismo, que S = P f:A0 _ : : : _ :A0m g es insatisfacible, donde A0i es Ai con las variables x ; : : : ; xk reemplazadas por constantes de Skolem apropiadas. Puesto que S esta en forma clausal podemos restringir nuestra atencion a interpretaciones de Herbrand. Sea I una interpretacion de Herbrand de S . Podemos considerar I como una interpretacion de P . Supongamos que I es modelo de P y consideremos la preinterpretacion J obtenida de I ignorando la asignacion que esta interpretacion hace a los s mbolos de predicado del J J lenguaje. Por la proposicion 4.4.7 tenemos que TP (I ) I . Puesto que TP es J monotona, por la proposicion 1.3.6 existe un punto jo I 0 de TP tal que I 0 I . Puesto que I 0 junto con la relacion identidad asignada a = es obviamente un modelo de la teor a de igualdad, por la proposicion esta interpretacion es modelo de comp(P ). De ah que :A0 _: : :_:A0m sea falsa en esta interpretacion y puesto que I 0 I , tenemos que :A0 _ : : : _ :A0m es falso en I . Luego S es insatisfacible. 2
1 1 1 1 1 1 1 6 1 1

Demostracion:

Notese que combinando las proposiciones 4.4.4 y 4.4.10 tenemos que la informacion positiva que podemos deducir de comp(P ) es exactamente la misma que podemos deducir de P . Es decir, hemos obtenido el siguiente resultado:

4.4.11 Teorema. Sea P un programa de nido, G un objetivo de nido y una respuesta para P fGg. Entonces es una respuesta correcta para comp(P ) fGg si y solo si lo es para P fGg.

4.5 SLDNF-resolucion
Acabamos de de nir el concepto declarativo de la completacion de un programa. Veamos ahora su contrapartida procedural, esto es, como podemos llevarlo a la practica para poder deducir informacion negativa. La idea basica es usar la SLD-resolucion aumentada con la regla de fallo nito, esto es la SLDNF- resolucion.
6

Notese que I no es necesariamente una interpretacion de Herbrand de P

76

Cap tulo 4. Informacion Negativa

4.5.1 Nota. Nuestra intencion es probar la adecuacion de la SLDNF-resolu-

cion una vez la hallamos de nido formalmente. Para ello necesitamos alguna regla en el proceso de seleccion de los atomos que nos garantice esa adecuacion. La seleccion se realizara del siguiente modo:
No hay restriccion para la eleccion de un literal positivo, en cambio solo podremos seleccionar literales negativos cerrados.

Llamaremos a esta condicion condicion de seguridad (safeness condition) .


7

L ; : : : ; Lm ; : : : ; Lp y C la clausula A M ; : : : Mq . Se dice que el objetivo G0 es derivado de G y C usando el umg si se veri can las siguientes condiciones:
1 1

4.5.2 De nicion. Sea G el objetivo

1. Lm es un atomo de G, llamado el atomo seleccionado. 2. es un umg de Lm y A. 3. G0 es el objetivo normal (L ; : : : ; Lm? ; M ; : : : ; Mq ; Lm ; : : : ; Lp) .


1 1 1 +1

4.5.3 De nicion. Sea P un programa normal y G un objetivo normal. Una SLD-refutacion de rango 0 de P fGg consiste en una sucesion
G = G; G ; : : : ; Gn = 2
0 1

de objetivos normales, una sucesion C ; : : : ; Cn de variantes de clausula de programa de P y una sucesion de : : : ; n de umg tales que cada Gi se deriva de Gi y Ci usando i .
1 1 +1 +1 +1

4.5.4 De nicion. Sea P un programa normal y sea G un objetivo normal. Un SLDNF-arbol nitamente fallido de rango 0 para P fGg es un arbol
satisfaciendo las siguientes condiciones: 1. El arbol es nito y cada nodo del arbol es un objetivo normal distinto de la clausula vac a. 2. El nodo ra z es G. 3. Los literales seleccionados son siempre positivos.
7

Esta condicion es muy fuerte. Lloyd comenta en 37] como debilitarla.

4.5. SLDNF-resolucion

77

4. Sea L ; : : : ; Lm ; : : : ; Lp un nodo del arbol que no sea hoja y supongamos que Lm es el atomo seleccionado. Entonces, para cada clausula de programa (o variante) A M ; : : : ; Mq tal que Lm y A son uni cables mediante el umg el nodo tiene un hijo
1 1

(L ; : : : ; Lm? ; M ; : : : ; Mq ; Lm ; : : : ; Lp)
1 1 1 +1

5. Sea L ; : : : ; Lm ; : : : ; Lp un nodo del arbol que no sea hoja y supongamos que Lm es el atomo seleccionado. Entonces no hay ninguna clausula en P (o variante) tal que su cabeza uni que con Lm .
1

4.5.5 De nicion. Sea P un programa normal y G un objetivo normal. Una SLD-refutacion de rango k+1 de P fGg consiste en una sucesion G =
0 1 1 1

G; G ; : : : ; Gn = 2 de objetivos normales, una sucesion C ; : : : ; Cn compuesta por variantes de clausula de programa de P y/o literales negativos cerrados y una sucesion de : : : ; n de sustituciones tales que para cada i
O bien cada Gi se deriva de Gi y Ci usando
+1 +1 1

i+1 ,

O bien Gi es L ; : : : ; Lm ; : : : ; Lp, el literal seleccionado Lm de Gi es un literal negativo cerrado :Am y existe un SLDNF-arbol nitamente fallido de rango k para P f Am g. En este caso Gi es L ; : : : ; Lm? ; Lm ; : : : ; Lp, i es la sustitucion identidad y Ci es :Am .
+1 1 1 +1 +1 +1

4.5.6 De nicion. Sea P un programa normal y sea G un objetivo normal. Un SLDNF-arbol nitamente fallido de rango k+1 para P fGg es un arbol
satisfaciendo las siguientes condiciones: 1. El arbol es nito y cada nodo del arbol es un objetivo normal distinto de la clausula vac a. 2. El nodo ra z es G. 3. Sea L ; : : : ; Lm ; : : : ; Lp un nodo del arbol que no sea hoja y supongamos que Lm es el literal seleccionado. Entonces,
1

O bien Lm es un atomo y para cada clausula de programa (o variante) A M ; : : : ; Mq tal que Lm y A son uni cables mediante el umg el nodo tiene un hijo
1

(L ; : : : ; Lm? ; M ; : : : ; Mq ; Lm ; : : : ; Lp)
1 1 1 +1

78

Cap tulo 4. Informacion Negativa

O bien Lm es un literal negativo cerrado :Am y existe un SLDNFarbol nitamente fallido de rango k para P f Am g, en cuyo caso el unico hijo es L ; : : : ; Lm? ; Lm ; : : : ; Lp. 4. Sea L ; : : : ; Lm ; : : : ; Lp un nodo del arbol que no sea hoja y supongamos que Lm es el literal seleccionado. Entonces O bien Lm es un atomo y no hay ninguna clausula en P (o variante) tal que su cabeza uni que con Lm . O bien Lm es un literal negativo cerrado :Am y existe una SLDNFrefutacion de rango k de P Am .
1 1 +1 1

4.5.7 De nicion. Sea P un programa normal y G un objetivo normal. Una SLDNF-refutacion de P fGg es una SLDNF- refutacion de P fGg de rango
k, para algun k.

4.5.8 De nicion. Sea P un programa normal y G un objetivo normal. Un SLDNF-arbol nitamente fallido de P fGg es un SLDNF-arbol nitamente fallido de P fGg de rango k, para algun k. 4.5.9 De nicion. Sea P un programa normal y G un objetivo normal. Una respuesta computada de P fGg es la sustitucion obtenida restringiendo la
1 1

composicion de sustituciones : : : n a las variables de G, donde : : : n es la sucesion de sustituciones obtenida en una SLDNF-refutacion de P fGg.

4.5.10 De nicion. Sea P un programa normal y G un objetivo normal. Una SLDNF-derivacion de P fGg es una sucesion ( nita o in nita) de objetivos
0 1 2 1 2 1 2

normales G = G ; G ; G : : :, una sucesion C ; C : : : de variantes de clausulas del programa P (llamadas clausulas de entrada o literales negativos cerrados y una sucesion ; ; : : : de sustituciones satisfaciendo las siguientes condiciones: 1. Para cada i, O bien Gi se deriva de Gi y la clausula de entrada Ci usando i . O bien Gi es L ; : : : ; Lm ; : : : ; Lp el literal seleccionado en Lm en Gi es un literal negativo cerrado :A y existe un SLDNF-arbol nitamente fallido de P f Am g. En este caso Gi es
+1 +1 +1 1 +1

L ; : : : ; Lm? ; Lm ; : : : ; Lp
1 1 +1

i+1

es la sustitucion identidad y Ci es :Am .


+1

4.5. SLDNF-resolucion

79
0 1 2

2. Si la sucesion G = G ; G ; G : : : es nita, entonces O bien el ultimo objetivo es la clausula vac a O bien el ultimo objetivo es L ; : : : ; Lm ; : : : ; Lp, el literal seleccionado es Lm y es positivo y no hay ninguna clausula de P (o variante) cuya cabeza uni que con Lm . O bien el ultimo objetivo es L ; : : : ; Lm ; : : : ; Lp, el literal seleccionado es Lm y es un literal negativo cerrado :Am y existe una SLDNF-refutacion de P f Am g.
1 1

4.5.11 De nicion. Sea P un programa normal y G un objetivo normal. Un SLDNF-arbol de P fGg es un arbol que satisface lo siguiente:
1. Cada nodo del arbol es un objetivo normal (puede ser la clausula vac a). 2. El nodo ra z es G. 3. Sea L ; : : : ; Lm ; : : : ; LP (p 1) un nodo que no sea hoja en el que hemos seleccionado el literal Lm .
1

(a) Si Lm es un atomo, entonces para cada clausula de programa (o variante suya) A M ; : : : ; Mq tal que A y Lm sean uni cables con el umg , el nodo tiene como hijo la clausula
1

(L ; : : : ; Lm? ; M ; : : : ; Mq ; Lm ; : : : ; Lp)
1 1 1 +1

(b) Si Lm es un literal negativo cerrado :Am y existe un SLDNF-arbol nitamente fallido de P f Am g, entonces el unico sucesor es (L ; : : : ; Lm? ; Lm ; : : : ; Lp)
1 1 +1

4. Sea L ; : : : ; Lm ; : : : ; LP (p 1) un nodo hoja en el que hemos seleccionado el literal Lm. Entonces


1

(a) O bien Lm es un atomo que no uni ca con ninguna cabeza de clausula (o variante de clausula) de P . (b) O bien Lm es un literal negativo :A y existe una SLDNF- refutacion de P f Am g. 5. Los nodos que son clausulas vac as no tienen sucesores.

4.5.12 De nicion.

80

Cap tulo 4. Informacion Negativa

Una SLDNF-derivacion es nita si consta de una sucesion nita de objetivos, en otro caso se dice in nita. Una SLDNF-derivacion tiene exito si es nita y su ultimo objetivo es la clausula vac a. Una SLDNF-derivacion falla si es nita y su ultima clausula no es la clausula vac a.

4.5.13 De nicion. Sea P un objetivo normal y G un objetivo normal. Decimos que una computacion de P fGg es inviable si en algun punto de la
8

computacion alcanzamos un objetivo que solo contenga literales negativos no cerrados.


9

4.5.14 Ejemplo. Si G es el objetivo computacion de P fGg es inviable.

:p(x) y P es un programa normal la

4.6 Adecuacion y completitud de la SLDNFresolucion


Nuestro objetivo ahora es probar la adecuacion de la SLDNF- resolucion. Para ello necesitamos dos lemas previos debidos a Clark. Su demostracion puede encontrarse en 10].

4.6.1 Lema. Sean p(s ; : : : ; sn) y p(t ; : : : ; tn) dos atomos.


1 1

1. Si p(s1 ; : : : ; sn) y p(t1 ; : : : ; tn ) no son uni cables, entonces

:9((s = t ) ^ : : : ^ (sn = tn ))
1 1

es consecuencia logica de la teor a de igualdad. 2. Si p(s1 ; : : : ; sn) y p(t1 ; : : : ; tn ) son uni cables con el umg = fx1 =r1 ; : : : ; xk =rk g dado por el algoritmo de uni cacion entonces

8((s = t ) ^ : : : ^ (sn = tn) $ (x = r ) ^ : : : ^ (xn = rn))


1 1 1 1

es consecuencia logica de la teor a de igualdad.


8 9

Floundered en el texto original En 37] podemos encontrar distintos resultados relacionados con la inviabilidad

4.6. Adecuacion y completitud de la SLDNF-resolucion

81

4.6.2 Lema. Sea P un programa normal y G un objetivo normal. Supongamos que el literal seleccionado en G es positivo.
1. Si no tiene objetivos derivados, entonces G es consecuencia logica de comp(P ). 2. Si el conjunto fG1 ; : : : ; Gr g de objetivos derivados es no vac o entonces

G $ G ^ : : : ^ Gr
1

es consecuencia logica de comp(P ).

Teorema. 4.6.3 (Adecuacion de la negacion como regla de fallo) Sea P un programa normal y G un objetivo normal. Si P fGg tiene un Demostracion:

SLDNF-arbol nitamente fallido, entonces G es consecuencia logica de la completacion de P , comp(P ).

La demostracion es por induccion sobre el rango k del SLDNF- arbol nitamente fallido de P fGg. Sea G el objetivo L ; : : : ; Ln. (k = 0) El resultado se tiene directamente del lema 4.6.2. (k ! k + 1) Supongamos ahora el resultado cierto para SLDNF-arboles nitamente fallidos de rango k y consideremos un SLDNF-arbol de P fGg de rango k + 1. La demostracion de que en este caso tambien G es consecuencia logica de comp(P ) la vamos a hacer por induccion sobre la profundidad de ese arbol, induccion que llamaremos secundaria.
1

(d = 1) Supongamos primero que la profundidad del arbol es 1. Si el literal seleccionado es positivo, por el lema 4.6.2, primer apartado, se tiene el resultado. Si el literal seleccionado en G, Li es el literal cerrado negativo :Ai , puesto que la profundidad es 1, existe una SLDNF-refutacion de rango k de P f Aig . As , usando la proposicion 4.4.4 y aplicando la hipotesis de induccion para arboles nitamente fallidos de profundidad k ? 1 obtenemos que Ai es consecuencia logica de comp(P ). Por ultimo, puesto que Ai es cerrado, deducimos que :9(L ^: : :^Ln ) es consecuencia logica de comp(P ).
10 1

Notese que para un objetivo cuyo literal seleccionado sea positivo, el objetivo derivado es consecuencia logica del objetivo dado y la clausula de entrada.
10

82

Cap tulo 4. Informacion Negativa

(d ! d + 1) Supongamos ahora que el SLDNF-arbol de P fGg que estamos considerando tiene profundidad d + 1. Si el literal seleccionado en G es positivo, el resultado se tiene por el segundo apartado del lema 4.6.2 y la hipotesis de induccion secundaria. Supongamos que el seleccionado en G es el literal cerrado negativo Li . Aplicando la hipotesis de induccion secundaria obtenemos que :9(L ^ : : : ^ Li? ^ Li ^ : : : ^ Ln) es consecuencia logica de comp(P ). De ah que :9(L ^ : : : ^ Ln ) tambien sea consecuencia de comp(P ).
1 1 +1 1

4.6.4 Corolario. Sea P un programa de nido. Si A 2 FP entonces :A es


consecuencia logica de comp(P )

Sea A 2 FP . Por el teorema 4.2.13 todo SLD-arbol favorable de P f Ag falla de forma nita. En particular existe un SLD-arbol de P f Ag que falla de forma nita. Por tanto, puesto que los SLD-arboles son casos particulares de SLDNF-arboles, tenemos que existe un SLDNF- arbol de P f Ag que falla de forma nita. De ah que comp(P ) j= :A. 2 El siguiente resultado se debe esencialmente a Clark 10].

Demostracion:

Teorema. 4.6.5 (Adecuacion de la SLDNF-resolucion) Sea P un proDemostracion:


1

grama normal y G un objetivo normal. Entonces toda respuesta computada de P fGg es una respuesta correcta de comp(P ) fGg.

Sea G el objetivo normal L ; : : : ; Lk y ; : : : ; n la sucesion de sustituciones usada en una SLDNF-refutacion de P fGg. Tenemos que probar que 8((L ^ : : : ^ Lk ) ; : : : ; n) es consecuencia logica de comp(P ). Probamos el resultado por induccion sobre la longitud de la SLDNF-refutacion. (n = 1) En este caso G es de la forma L . Podemos considerar dos posibilidades:
1 1 1 1

L es positivo. Entonces P tiene una clausula unidad de la forma A y L = A . Puesto que L es una instancia de una clausula unidad de P , tenemos que 8(L ) es consecuencia logica de P y de ah que lo sea de comp(P ).
1 1 1 1 1 1 1 1

4.6. Adecuacion y completitud de la SLDNF-resolucion

83

L es negativo. En este caso, L es cerrado, es la sustitucion identidad y por el teorema 4.6.3 L es consecuencia logica de comp(P ).
1 1 1 1

(n ? 1 ! n) Supongamos ahora que que el resultado se tiene para para respuestas computadas obtenidas con SLDNF- refutaciones de longitud n ? 1. Sea : : : n la sucesion de sustituciones obtenida en una SLDNF-refutacion de P fGg de longitud n. Sea Lm el literal seleccionado en G. De nuevo podemos considerar dos casos:
1

L es positivo. Sea A M ; : : : ; Mq (q entrada. Por hipotesis de induccion,


1 1 1 1 1

0) la primera clausula de
+1 1

8((L ^ : : : ^ Lm? ^ M ^ : : : ^ Mq ^ Lm ^ : : : ^ Lk ) : : : n) es consecuencia logica de comp(P ). Por tanto, si q > 0, 8((M ^ : : : ^ Mq ) ; : : : ; n ) es consecuencia logica de comp(P ) y en consecuencia 8(Lm : : : n), que es lo mismo que 8(A : : : n ) es consecuencia logica de comp(P ). De ah que 8((L ^ : : : ^ Lk ) : : : n) sea consecuencia logica
1 1 1 1

de comp(P ). L es negativo. En este caso, Lm es cerrado, es la sustitucion identidad y por el teorema 4.6.3 Lm es consecuencia logica de comp(P ). Usando la hipotesis de induccion se obtiene directamente que 8((L ^ : : : ^ Lk ) : : : n) es consecuencia logica de comp(P ).
1 1 1 1

2
El siguiente resultado se debe a Ja ar, Lassez y Lloyd 29].

Teorema. 4.6.6 (Completitud de la negacion como regla de fallo) Demostracion:

Sea P un programa de nido y G un objetivo de nido. Si G es consecuencia logica de comp(P ), entonces cada SLD-arbol favorable es nitamente fallido.

Sea G el objetivo A ; : : : ; Aq . Supongamos que P fGg tiene un SLD-arbol favorable que no falla de forma nita. Vamos a probar que comp(P ) f9(A ^ : : : ^ Aq )g tiene un modelo. Sea BR una rama no fallida en el SLD-arbol favorable de P fGg. Supongamos que BR es G = G; G ; : : : con los umg ; ; : : : y las clausulas de entrada C ; C ; : : :. El primer paso es usar BR para de nir una preinterpretacion J de P. Supongamos que L es el lenguaje de primer orden subyacente en P . Evidentemente suponemos que L es lo bastante rico como para edmitir todas las
1 1 0 1 1 2 1 2

84

Cap tulo 4. Informacion Negativa

separaciones de variables necesarias en BR. De nimos la relacion sobre el conjunto de los terminos de L de la siguiente manera: Sean s y t teminos en L. Entonces s t si existe n 1 tal que s : : : n = t : : : n, esto es, si existe un n 1 tal que : : : n uni ca a s y t. Claramente se tiene que es relacion de equivalencia. Vamos a de nir el dominio D de nuestra preinterpretacion J como el conjunto de todas las -clases de equivalencia de terminos de L. Denotaremos la clase del termino s como s]. Demos ahora una asignacion a los s mbolos de funcion de L. Si c es una constante de L le asignamos la clase de equivalencia c]. Si f es un s mbolo de funcion n-ario, (n 1), le asignamos la aplicacion de Dn en D de nida como ( s ],: : : , sn])! f (s ; : : : ; sn)]. Trivialmente se comprueba que esta bien de nida. Esto completa la de nicion de J . El siguiente paso es dar una asignacion a los s mbolos de predicado de forma que extendamos J a un modelo de comp(P ) f9(A ^ : : : ^ Aq )g. Primero de nimos el conjunto I como sigue:
1 1 1 1 1 1 0

I = fp( t ]; : : : ; tn]) : p(t ; : : : ; tn) aparezca en BRg J J Vemos que I TP (I ), donde TP es la aplicacion asociada a la preinterpretacion J . Supongamos que p( t ]; : : : ; tn]) 2 I y que p(t ; : : : ; tn) aparece en Gi, i 2 !. Puesto que BR es favorable y no nita existe j 2 ! tal que p(s ; : : : ; sn) = p(t ; : : : ; tn) i : : : i j aparece en Gi j y p(s ; : : : ; sn) es el atomo seleccionado en Gi j . Supongamos que Ci j es p(r ; : : : ; rn) J B ; : : : ; Bm. Por de nicion de TP tenemos que J p( r i j ]; : : : ; rn i j ]) 2 TP (I ) Entonces, usando el hecho de que, para cada k, : : : k puede ser tomada como idempotente, tenemos que: p( t ]; : : : ; tn]) = p( t i ]; : : : ; tn i ]) = p( s ]; : : : ; sn]) = p( s i j ]; : : : ; sn i j ]) = p( r i j ]; : : : ; rn i j ])
0 1 1 0 0 1 0 1 1 1 +1 + + 1 + + +1 1 1 1 + +1 + +1 0 1 1 1 +1 +1 1 1 + +1 + +1 1 + +1 + +1

T J As que p( t ]; : : : ; tn]) 2 TP (I ), y por tanto I TP (I ). J Aplicando ahora la proposicion 1.3.6, existe I tal que I I y I = TP (I ). Esta interpretacion I nos da la asignacion buscada a los s mbolos de predicado de L. Asignamos tambien la relacion identidad a =. Esto completa la de nicion de la interpretacion I , junto con la relacion identidad asignada a =, para comp(P ) f9(A ^ : : : ^ Aq )g. Notese que esta interpretacion es un modelo de 9(A ^ : : : ^ Aq )g, puesto que I I . Notese ademas que esta interpretacion es claramente un modelo para la teor a de
1 0 0 0 0 1 1 0

4.7. La regla de Herbrand

85
1

igualdad. De ah que, aplicando la proposicion 4.4, tengamos que I junto con la relacion identidad asignda a = sea modelo de comp(P ) f9(A ^ : : : ^ Aq )g.

4.6.7 Nota. El modelo construido en esta demostracion no es un modelo de Herbrand. De hecho el teorema no puede ser probado restringiendo nuestra atencion a modelos de Herbrand .
11

4.6.8 De nicion. Una regla de computacion segura es una funcion del con-

junto de objetivos normales, ninguno de los cuales consiste unicamente en literales negativos no cerrados en el conjunto de los literales tal que el valor de la funcion para tales objetivos sea o bien un literal positivo o bien un literal negativo cerrado llamado el literal seleccionado de ese objetivo.

4.6.9 De nicion. Sea P un programa normal, G un objetivo normal y R una


regla de computacion segura. Adoptaremos las siguientes de niciones: 1. Una SLDNF-derivacion de P fGg v a R es una SLDNF-derivacion de P fGg en la que hemos usado la regla de computacion R para seleccionar literales. 2. Un SLDNF-arbol de P fGg v a R es un SLDNF-arbol de P fGg en el que hemos usado la regla de computacion R para seleccionar literales. 3. Una SLDNF-refutacion de P fGg v a R es una SLDNF-refutacion de P fGg en la que hemos usado la regla de computacion R para seleccionar literales. 4. Una respuesta R-computada P fGg v a R es una respuesta computada de P fGg en la que hemos usado la regla de computacion R para seleccionar literales.

4.6.10 Nota. Existen numerosos estudios sobre como inferir informacion ne-

gativa, no obstante aun no esta probada la completitud de forma general, lo que abre las puertas a una posterior investigacion en este terreno.

4.7 La regla de Herbrand


Terminamos este cap tulo comparando los distintos resultados que hemos presentado, pero antes veamos una nueva regla de inferencia.
11

Ver Lloyd 37].

86

Cap tulo 4. Informacion Negativa

De nicion. 4.7.1 (Regla de Herbrand) Sea P un programa de nido y sea A 2 BP . Entonces si comp(P ) A no tiene modelo de Herbrand, inferimos :A.

'

:A inferido con Negacion como regla de fallo

:A inferido
BP TP # ! Mpf (TP )

'

'

& &

' & &

TP " !

$ %%
?

con HMC

:A inferido con la regla de Herbrand Tenemos ahora tres posibles reglas de inferencia para deducir informacion negativa. Si P es un programa de nido se tiene que

%%

fA 2 BP : :A puede ser deducido con la negacion como regla de fallog= BP nTP # ! fA 2 BP : :A puede ser deducido con la regla de Herbradg=BP nMpf (TP ) fA 2 BP : :A puede ser deducido con la HMC g=BP nTP " !

4.8. Resultados recientes

87

Puesto que TP " ! Mpf (TP ) TP # !, se tiene que la regla mas fuerte es la HMC , seguida de la regla de Herbrand y por ultimo, la negacion como regla de fallo. Como en general TP " !, Mpf (TP ) y TP # ! son distintos, las reglas son diferentes.

4.8 Resultados recientes


La nocion de SLD-resolucion presentada por Kowalski 30] en 1974 nos da un metodo que nos permite deducir informacion negativa, esto es, nos permite estudiar si un literal positivo es o no consecuencia logica de un programa. A~os mas tarde, en 1979 Clark 11] propuso ampliar esta regla con la negacion n de fallo nito y crear as la SLDNF - resolucion. La idea de la SLDNF resolucion es muy simple y ya ha sido presentada en esta memoria. Dado un atomo cerrado A,

:A tiene exito () A falla de forma nita :A falla de forma nita () A tiene exito
El problema es que \tener exito" y \fallar de forma nita" no son las unicas posibilidades de una derivacion. As , por ejemplo, dado el programa P = fA Ag y el objetivo normal G, :A, el SLDNF -arbol de P fGg ni tiene exito ni falla de forma nita.

:A XXXXX

X z X

? ?

... A Este ejemplo pone de mani esto la existencia de una tercera posibilidad: Existen SLD- arboles que ni tienen exito ni fallan de forma nita con las de niciones hasta ahora aceptadas. Este problema ya es mencionado en 1991 en los trabajos de Apt y Bezem 4] y Apt y Pedreschi 7]. El problema fue tratado por Martelli y Tricomi en 1992 39] quienes propusieron una revision de

88

Cap tulo 4. Informacion Negativa

la de nicion original en la que los arboles subsidiarios utilizados en la resolucion de literales negativos se constru an \dentro" del arbol principal. Estos autores utilizaban formulas mas complicadas que los objetivos normales y la construccion era bastante arti ciosa. En el ultimo numero de The Journal of Logic Programming K.R. Apt y K. Doets 5] han publicado un art culo titulado A new de nition of SLDNF-resolucion en el que presentan una construccion alternativa. En la solucion que presentan, como en la de nicion original, los arboles subsidiarios para la resolucion de literales negativos se construyen \aparte", pero no se toman como una unica arista dentro del arbol principal, sino que contruyen sus ramas en paralelo, como un subarbol del arbol principal. As si alguno de esto arboles subsidiarios es in nito, el abol principal se considera in nito Estudiemos ahora la nueva de nicion presentada por Apt y Doets.
12

4.8.1 Una nueva de nicion


4.8.1 De nicion. Sea C una clausula, L un literal positivo de C y Pi una
clausula de programa normal A
13

E.

1. Diremos que C se resuelve a D v a con respecto a , o de otra forma, que el par ( ; D) es un resolvente de C respecto a , (con notacion C ! D( )) si:
O bien = (L; Pi ), es un umg de L y A y D es la clausula obtenida sustituyendo en C el literal L por E y aplicando . O bien es un literal negativo de C , = " y D es la clausula obtenida a partir de C eliminando la ocurrencia del literal .

2. Diremos que una clausula es aplicable a un atomo si alguna variante de su cabeza uni ca con el atomo.
n+1 1 4.8.2 De nicion. Una sucesion ( nita o in nita) C ! : : : Cn ! Cn : : :

de pasos de resolucion es una pseudoderivacion si para cada paso:

+1

La clausula de entrada empleada no contiene variables que ocurran en el objetivo inicial ni en ninguna de las demas clausulas de entrada de los pasos anteriores (\Separacion de variables").
Veremos la construccion formal mas adelante Apt y Doets presentan su de nicion para programas generales que nosotros no hemos tratado en esta memoria, por eso, en la medida de lo posible, adaptaremos estos resultados a programas normales.
12 13

4.8. Resultados recientes

89

El umg empleado es relevante (\Relevancia"). Intuitivamente, segun esta construccion, una SLDNF-derivacion va a ser una pseudoderivacion en la que la resolucion de la clausula S a la clausula D respecto , cuando sea un literal negativo, este justi cada por un SLDNFarbol nitamente fallido. A continuacion vamos a considerar unos sistemas de arboles que Apt y Doets llaman arboles complejos .
14

4.8.3 De nicion. Un arbol complejo es una terna T=(T ,T, subs) donde:
T es un conjunto de arboles. T es un elemento de T que llamaremos arbol principal.
subs es una funcion parcial de nida sobre el conjunto de los nodos de los arboles de T, tal que a algunos de estos nodos les asigna un arbol (\susbsidiario") de T.

4.8.4 De nicion. De niremos un camino en T como una sucesion de nodos N ; : : : ; Ni; : : : de arboles de T tal que para todo i, Ni es
1 +1

O bien un hijo de Ni en el correspondiente arbol de T O bien la ra z del arbol subs(Ni). As podemos considerar un arbol complejo como un tipo especial de grafo dirigido, en el que hay dos tipos de aristas: las \usuales", que unen dos nodos de un mismo arbol y las que unen un nodo con la ra z de un arbol subsidiario. Un SLDNF-arbol va ser un arbol complejo de un tipo especial, construido como l mite de ciertos arboles complejos nitos: los pre-SLDNF- arboles. En lo que sigue jaremos un programa P . cuyos nodos son objetivos (posiblemente marcados) o literales (posiblemente marcados). La funcion subs asigna a los nodos que sean literales negativos cerrados :A un arbol en T de ra z A. De nimos por induccion la clase de los pre-SLDNF- arboles. Para cada objetivo C , el arbol complejo (fC g; C; ;) es un pre-SLDNFarbol (un pre-SLDNF-arbol inicial).
Apt y Doets comentan en su art culo que les dan este nombre \a falta de uno mejor" (for lack of a better name)
14

4.8.5 De nicion. Un pre-SLDNF-arbol (relativo a P) es un arbol complejo

90

Cap tulo 4. Informacion Negativa

Si T es un pre-SLDNF-arbol, entonces cualquier extension de T es un pre-SLDNF-arbol. De nimos una extension de T como el arbol complejo resultante de aplicar los siguientes pasos a todo objetivo distinto de la clausula vac a que sea una hoja no marcada en algun arbol de T . Sea C por tanto una tal clausula. 1. Primero tomamos el literal seleccionado de la clausula C . Si no existiera ninguno con la marca \seleccionado" marcamos uno. Sea L el literal seleccionado de C . Si L es positivo. { Si C no tiene resolventes respecto a L y alguna clausula de P , entonces marcamos la clausula C como fallo. { Si C tiene resolventes, para cada clausula Pi de P aplicable a L, elegimos una resolvente ( ; D) de C respecto a L y Pi y la a~adimos como inmediato sucesor de C en T . Estas resoln ventes de eligen de tal modo que todas las ramas de T sean pseudoderivaciones. L = :A es un literal negativo. { Si A no es cerrado, marcamos C como inviable. { Si A es cerrado Si no esta de nido subs(C ), entonces a~adimos un nuevo n 0 = (fAg; ;) a T y de nimos subs(C ) = T 0 . arbol T Si subs(C ) esta de nido y tiene exito, marcamos C con la etiqueta \fallo" Si subs(C ) esta de nido y falla de forma nita, entonces a~adimos la resolvente de C ("; C ? fLg) como el unico n sucesor inmediato de C en T . 2. Ademas, marcamos todas las clausula vac as como \exito"
15

Notese que si T no tiene hojas sin marcar, T es trivialmente una extension suya, con lo que el proceso se estaciona. Cada pre-SLDNF-arbol no es mas que un arbol complejo, por lo que tiene sentido hablar de inclusion entre pre-SLDNF-arboles y de l mite de una sucesion de pre-SLDNF-arboles encajados. 15 Representamos un arbol como un par ordenado T = (N ; A) donde N es el conjunto de los nodos y A el conjunto de las aristas. En este caso el nuevo arbol que a~adimos a T no n

tiene aristas y tiene un unico nodo: A

4.8. Resultados recientes

91

4.8.6 De nicion.
Un SLDNF-arbol es el l mite de una sucesion T ; : : : ; Tn; : : : tal que T0 es un pre-SLDNF-arbol inicial y, para todo i, Ti 1 es una extension de Ti .
0 +

Un SLDNF-arbol para C es un SLDNF-arbol con C como ra z del arbol principal. Se dice que un (pre-)SLDNF-arbol \tiene exito" si contiene hojas marcadas como exito. Se dice que un (pre-)SLDNF-arbol \falla de forma nita" si es nito y todas sus hojas estan marcadas como \fallo". Se dice que un SLDNF-arbol es nito si no contiene caminos in nitos (cf. De nicion 4.8.4). De namos ahora el concepto de SLDNF-derivacion.

4.8.7 De nicion. Una (pre-)SLDNF-derivacion para C es una rama del arbol principal de T junto con todos los arboles de T cuyas ra ces puedan ser

alcanzadas desde los nodos de esta rama. Se dice que una SLDNF-derivacion es nita si todos los caminos contenidos en ella (i.e., en la rama del arbol principal considerada y sus arboles subsidiarios) son nitos. Finalmente, veamos la de nicion de respuesta computada.

4.8.8 De nicion. Consideremos una rama del arbol principal de un (pre-)


1 1 1

SLDNF-arbol que termine con la clausula vac a. Sean ; : : : ; n las sustituciones obtenidas a lo largo de esa rama. Entonces a la restriccion ( : : : n) V (C ) de la composicion : : : n a las variables de C la llamaremos respuesta computada de C . Los pre-SLDNF-arboles pueden crecer inde nidamente. No obstante, si el SLDNF-resultante tiene exito o falla de forma nita, este hecho puede ser conocido tras un numero nito de pasos.

4.8.9 Ejemplo. consideremos el siguiente programa P : A :B


B B B

92
Si consideramos el objetivo Ag.

Cap tulo 4. Informacion Negativa

A, tenemos el siguiente SLDNF-arbol de P f

fallo

:B

XX

XXX X

XXX z

YY YYY

2
exito

YYY s

YY
2
exito

YY YYY

Y s Y
:::

Aqu el arbol subsidiario con ra z B crece inde nidamente. No obstante una extension del arbol subsidiario inicial formado por el nodo B tiene exito, por lo que en la siguiente extension el nodo :B es marcado como fallo. En consecuencia el SLDNF-arbol se considera nitamente fallido aunque no sea nito. El siguiente teorema es el principal resultado presentado por Apt y Doets en su art culo.

4.8.10 Teorema.
1. Todo pre-SLDNF-arbol es nito. 2. Todo SLDNF-arbol es l mite de una unica sucesion de pre- SLDNFarboles. 3. Si el SLDNF-arbol es l mite de la sucesion de pre- SLDNF-arboles T0 ; : : : ; Ti; : : :, entonces para toda sustitucion (a) tiene exito y tiene a como respuesta computada si y solo si algun Ti tiene exito y tiene a como respuesta computada.

4.8. Resultados recientes


(b) falla de forma nita si y solo si algun Ti falla de forma nita.

93

Demostracion:
1. Se tiene trivialmente por induccion. 2. La unica forma de que dos extensiones de un pre-SLDNF-arbol incluido en un SLDNF-arbol dado sean distintas es por la seleccion de literales en los objetivos no vac os. No obstante esta seleccion viene marcada por el SLDNF-arbol dado. 3. Vemos las equivalencias (I ) y (II ) con el mismo razonamiento: (=)) Una rama del arbol principal de nalizada con 2 o un arbol de nitamente fallido no es mas que un conjunto de nodos (posiblemente marcados). Cada uno de esos nodos (incluidos los marcados) pertenecen a algun Ti. El mayor de esos Ti es el que buscamos. ((=) Se tiene trivialmente, ya que cada Ti esta contenido en . 2 Este resultado nos permite asociar a cada SLDNF-arbol con exito o nitamente fallido un numero natural que denominaremos rango de y , rang( ; ), que es el menor i para el que se tiene la equivalencia (3), con = " si es nitamente fallido. Otro de los conceptos fundamentales en el estudio de la deduccion negativa, el concepto de regla de seleccion, tambien esta impl citamente de nido. En la de nicion de SLDNF-arbol la regla de seleccion esta \incorporada" en la construccion de una extension. Claramete este proceso de seleccion puede ser separado de la construccion de una extension, de forma que una regla de seleccion es una funcion que en cada pre-SLDNF-arbol selecciona un literal en cada una de sus hojas distintas de la clausula vac a no marcadas.

4.8.2 Comparacion con la de nicion de Lloyd


Las de niciones presentadas en la primeraparte del cap tulo, que hasta el momento son las mas aceptadas, fueron presentadas por Lloyd en la segunda edicion de su libro Foundations of Logic Programming en 1987 37]. En la segunda parte de su art culo Apt y Doets comparan esta de nicion clasica con su nueva de nicion. Como hemos visto, Lloyd de ne las SLDNF-derivaciones nitamente fallidas y los SLDNF-arboles (para abreviar, SLDNF- objetos) por induccion sobre su rango, donde rango podemos de nirlo informalmente como el numero de niveles del arbol en los que seleccionamos literales negativos.

94

Cap tulo 4. Informacion Negativa

As , en las SLDNF-derivaciones con exito de rango 0 y arboles nitamente fallidos de rango 0 ningun literal negativo es seleccionado y la seleccion de un literal negativo cerrado :A en un SLDNF-objeto de rango n+1 tiene exito si existe un SLDNF-arbol con ra z A nitamente fallido de rango n, y falla si existe una SLDNF-derivacion de A de rango n. Ignorando peque~os detalles , hay tres diferencias fundamentales entre el tran tamiento del preoblema de Lloyd y el de Apt y Doets. La primera ya na sido mencionado y es el hecho de que para algunos programas y objetivos como P = fA Ag y :A no exista ni SLDNF-refutaciones ni SLDNF-arboles nitamente fallidos segun la de nicion de Lloyd. La segunda es que segun Lloyd la seleccion de un literal negativo cerrado :A falla si existe un SLDNF-derivacion para A, mientras que en el caso de Apt y Doets falla si existe un SLDNF-arbol con exito para A. Reemplazando SLDNF-derivacion con exito por SLDNF-arbol con exito se puede probar por induccion sobre el rango que si un SLDNF- objeto existe segun la de nicion de Lloyd, entonces tambien existe segun la de nicion de Apt y Doets. Por ultimo el tratamiento de la inviabilidad es diferente. Para Lloyd un objetivo es inviable si consta unicamente de literales negativos no cerrados y la inviabilidad se deriva de no poder seleccionar ningun literal en ese objetivo. Para Apt y Doets la inviabilidad se deriva en el momento en que seleccionamos un literal negativo no cerrado en un objetivo. Evidentemente esta diferencia no es esencial y podemos adaptar facilmente la de nicion de Lloyd, no obstante Apt y Dots destacan que su de nicion es mas apropiada cuando se estudia SLDNF-resolucion con una regla de seleccion jada como puede ser en el caso de PROLOG, y su regla de tomar el literal mas a la izquierda.
16

4.8.11 Nota. Distintos problemas relacionados con la SLDNF- resolucion como


puedan ser la terminacion, la ausencia de inviabilidad o la seleccion de literales negativos no cerrados solo seran resueltos una vez que tengamos una de nicion formal y clara de la misma. Los distintos trabajos publicados con un caracter eminentemente practico carec an de este rigor tanto en las de niciones como en las demostraciones de los resultados. En su art culo Apt y Doets profundizan en este tema y dan una de nicion que per la resultados conocidos aunque deja cabos sin atar, con lo que abre todo un campo para futuras investigaciones.

Hay peque~as diferencias en las presentacion de la teor a entre Lloyd y la que hacen Apt n y Doets. En la adaptacion que hacemos de su art culo estas diferencias han sido subsanadas.
16

Apendice A Preliminares
El estudio de la Programacion Logica es esencialmente el estudio de ciertos conjuntos de formulas de un lenguaje de primer orden. Este primer apendice presenta los principales resultados en Teor a de Conjuntos y Logica de Primer Orden que necesitamos en la presente memoria.

A.1 Nociones basicas de Teor a de Conjuntos


A.1.1 De nicion. Sea S un conjunto. Una relacion R sobre S es un subconjunto del producto cartesiano S S .

A.1.2 De nicion. Una relacion R sobre un conjunto S es un preorden si se veri can las siguientes propiedades:
1. Re exiva: Para todo x 2 S , (x; x) 2 R. 2. Transitiva: Si (x; y) 2 R y (y; z) 2 R, entonces (x; z) 2 R, para todo fx; y; zg S .

A.1.3 De nicion. Una relacion R sobre un conjunto S es un orden parcial si se veri can las siguientes condiciones:
1. R es un preorden. 2. Si (x; y) 2 R y (y; x) 2 R entonces x = y, para todo fx; yg Propiedad Antisimetrica. contexto.

S.

A.1.4 Nota. A partir de ahora usaremos la notacion usual xRy para indicar (x; y) 2 R y si no se indica lo contrario denotara la relacion indicada por el
95

96

Apendice A. Preliminares

A.1.5 De nicion. Sea S un conjunto con un orden parcial y X un subconjunto de S . Entonces se dice que a 2 S es una cota superior de X si para todo x 2 X se tiene x a. Analogamente se dice que b 2 S es una cota inferior de X si para todo x 2 X se tiene b x.
para cualquier otra cota superior a0 se tiene que a a0. De forma analoga se dice que b 2 S es el n mo de X , inf (X ), si b es una cota inferior de X y para cualquier otra cota inferior de X , b0 , se tiene que b0 b.

A.1.6 De nicion. Sea S un conjunto con un orden parcial y sea X S . Se dice que a 2 S es el supremo de X , sup(X ), si a es una cota superior y

A.1.7 Nota. Es facil ver que dado un conjunto S y X S , si la relacion

es orden parcial y existen sup(X ) o inf (X ), estos son unicos. No obstante si la relacion solo es un preorden no se tiene la unicidad de supremos e n mos.

A.1.8 De nicion. Sea A es un conjunto y un orden parcial en A. Decimos


que el par (A; ) es un semirret culo superior si para cualquier subconjunto nito de A, X , existe sup(X ).

A.1.9 De nicion. Sea A es un conjunto y un orden parcial en A. Decimos


que el par (A; ) es un ret culo si para cualquier subconjunto nito de A, X , existe sup(X ) e inf (X ). que el par (A; ) es un ret culo completo si para cualquier subconjunto de A, X , existe sup(X ) e inf (X ).

A.1.10 De nicion. Sea A es un conjunto y un orden parcial en A. Decimos A.1.11 Nota. Sea L un ret culo completo. Usaremos el s mbolo > para referirnos al supremo de L, y el s mbolo ? para el n mo de L. A.1.12 Ejemplo. Sea S un conjunto y P (S ) el conjunto de las partes de S ,
en el que establecemos el orden parcial dado por la inclusion de conjuntos . Es facil veri car que el par (P (S ); ) es un ret culo completo en el que > = S y ? = ;.

A.2 Sintaxis de la logica de primer orden


A.2.1 De nicion. Un lenguaje de primer orden consta de un alfabeto y del
1

conjunto de formulas que podemos de nir sobre el . El alfabeto de un lenguaje de primer orden L consta de
1

Una fundamentacion rigurosa de los conceptos de Logica que aqu presentamos puede encontrarse, por ejemplo, en 20]

A.2. Sintaxis de la logica de primer orden

97

1. Un conjunto numerable de variables, V . 2. Las conectivas logicas: : (negacion) y W (disyuncion). 3. El cuanti cador existencial: 9 4. Un conjunto numerable de s mbolos de funcion, posiblemente vac o, SF . 5. Un conjunto numerable de s mbolos de predicado, SP . 6. Unos s mbolos auxiliares: \(", \)" y \,".
2

A.2.2 Nota.
1. Los conjuntos anteriormente descritos son disjuntos. 2. El conjunto de los s mbolos de funcion SF lleva asociado una funcion aridad que a cada s mbolo f le asocia un entero no negativo a(f ), llamado la aridad del s mbolo de funcion f. 3. Analogamente, el conjunto de los s mbolos de predicado SP lleva asociado una funcion aridad que a cada s mbolo p le asocia un entero no negativo a(p), llamado la aridad del s mbolo de predicado p 4. Los s mbolos de predicado de aridad cero se denominan s mbolos proposicionales. 5. Llamaremos constantes a los s mbolos de funcion de aridad cero y denotaremos por SC al conjunto de las constantes. 6. Usaremos los siguientes s mbolos para referirnos a los elementos de los distintos conjuntos. (Los usaremos frecuentemente con sub ndices)

: : : ; x; y; z seran variables. a; b; c; : : : seran constantes. f; g; h; : : : seran s mbolos de funcion de aridad 1. p; q; r; : : : seran s mbolos de predicado.

Ademas de los conjuntos de s mbolos que aqu damos otros autores (Hogger 26] y Apt 3], por ejemplo) a~aden las constantes booleanas TRUE y FALSE como s mbolos n proposicionales especiales, no obstante, la construccion de la Programacion Logica se puede hacer sin necesidad de estas constantes, como veremos.
2

A.2.3 Nota. En lo que sigue, nos referiremos siempre al lenguaje de primer orden L as de nido.

98

Apendice A. Preliminares

A.2.4 De nicion. Adoptaremos la siguiente de nicion inductiva de termino:


1. Una variable es un termino 2. Una constante es un termino 3. Si f es un s mbolo de funcion n-ario y t ; : : : ; tn son teminos, entonces f (t ; : : : ; tn) es un termino.
1 1

Llamaremos TERML al conjunto de teminos del lenguaje L y simplemente TERM cuando no exista ambiguedad.

A.2.5 De nicion. Una formula se de ne del siguiente modo:


1. Si p es un s mbolo de predicado n-ario y t ; : : : ; tn son terminos entonces p(t ; : : : ; tn) es una formula, que llamaremos formula atomica o simplemente atomo.
1 1

2. Si F y G son formulas entonces (:F ) y (F _ G) son formulas. 3. Si F es una formula y x es una variable entonces (9xF ) tambien es una formula. Llamaremos FORML al conjunto de teminos del lenguaje L y simplemente FORM cuando no exista ambiguedad. siguientes abreviaturas:

A.2.6 Nota. Sean F y G dos formulas y x una variable. Adoptaremos las


Escribiremos 8xF en lugar de :9x:F

F ^ G en lugar de :((:F ) _ (:G)) F ! G en lugar de ((:F ) _ G) F $ G en lugar de (F ! G) ^ (G ! F ) (_n Fi ) en lugar de (F _ (F _ : : : _ (Fn? _ Fn) : : :)) i (^n Fi ) en lugar de (F ^ (F ^ : : : ^ (Fn? ^ Fn) : : :)) i
=1 1 2 1 =1 1 2 1

A.2.7 Nota. Para simpli car la notacion adoptaremos los siguientes convenios: 1. Pueden eliminarse los parentesis externos.

A.2. Sintaxis de la logica de primer orden

99

2. Las conectivas tienen una precedencia de asociacion. De menor a mayor estan ordenadas por: :; ^; _; !; $. 3. Cuando una conectiva se asocia repetidamente, se asocia por la derecha.

A.2.8 De nicion. Diremos que e es una expresion de L si es un termino o una formula de L.


variables que ocurren en e.

A.2.9 Nota. Si e es una expresion, denotaremos como V (e) al conjunto de

A.2.10 De nicion. El alcance de 8x (resp. 9x) en la formula 8xF (resp. 9xF ) es F . A.2.11 De nicion. De nimos recursivamente el conjunto de las variables libres de un termino t, Libre(t), del siguiente modo: ( Libre(t) = fxg (t ) : : : Libre(t ) si t = x(es :una variable Libre si t = f t : : t )
1

A.2.12 De nicion.
1. El conjunto de las variables libres de una formula F , Libre(F ), se de ne recursivamente del siguiente modo: 8 > Libre(t ) : : : Libre(tn ) si t = p(t : : : tn) > Libre(G) < si F = :G Libre(F ) = > Libre(G) Libre(H ) si F = (G _ H ) > : Libre(G) ? fx g si F = 9x G
1 1

2. El conjunto de las variables ligadas de una formula F , Ligada(F ), se de ne recursivamente del siguiente modo: 8 > Ligada(t ) : : : Ligada(tn) si t = p(t : : : tn) > Ligada(G) < si F = :G Ligada(F ) = > Ligada(G) Ligada(H ) si F = (G _ H ) > : Ligada(G) fx g si F = 9x G
1 1

A.2.13 De nicion.
1. Un termino cerrado es un termino en el que no ocurre ninguna variable.

100

Apendice A. Preliminares

2. Una formula cerrada es una formula en la que no ocurre libre ninguna variable. Por tanto un atomo cerrado es un atomo en el que no ocurre ninguna variable. 3. Una formula abierta es una formula que no contiene cuanti cadores.

A.2.14 De nicion. Si Libre(F ) = fx ; : : : ; xng entonces:


1

1. La clausura universal de F , 8(F ) es (8x ) : : : (8xn )F


1

2. Analogamente, la clausura existencial de F , 9(F ) es (9x ) : : : (9xn )F


1

A.2.1 Sustituciones
A.2.15 De nicion. Dado un lenguaje de primer orden L, una sustitucion
es una funcion del conjunto V de las variables en el conjunto TERM de los terminos : V ! TERM Denotaremos por SUST al conjunto de las sustituciones.

A.2.16 De nicion. Adoptaremos las siguientes de niciones:


1. De nimos el dominio de una sustitucion como el conjunto siguiente Dom( ) = fx 2 V : (x) 6= xg 2. El codominio de una sustitucion como Cod( ) = f (x) : x 2 Dom( )g V ( (x)) 3. El rango de una sustitucion como Rang( ) = S
x2Dom(
)

A.2.17 De nicion. Llamaremos sustitucion identidad a la sustitucion de dominio vac o y la denotaremos .

A.2.18 De nicion. Una sustitucion es nita si D( ) es nito. A.2.19 Nota. En lo que sigue solo consideraremos sustituciones nitas y omitiremos el adjetivo.

A.2. Sintaxis de la logica de primer orden

101

A.2.20 De nicion. Diremos que una sustitucion es basica si para todo x 2 Dom( ), (x) es un termino cerrado. A.2.21 Nota. Sea una sustitucion de dominio Dom( ) = fx ; : : : ; xng. Notaremos de la siguiente forma
1 1

fx = (x ); : : : xn= (xn)g
1

A.2.22 De nicion. Dada una sustitucion , a cada par ordenado (x; (x)) donde x 2 Dom( ) lo llamaremos enlace de la sustitucion. Con la notacion anterior, un enlace es cada una de las expresiones x= (x) 2 . A.2.23 Teorema. Para cada sustitucion existe una unica aplicacion 0 : TERM ! TERM
de nida por
0 (t) =

(t) si t es una variable f ( 0(t ) : : : 0(tn )) si t = f (t : : : tn)


1 1 3

Haciendo un abuso de notacion escribiremos (t) en lugar de 0 (t) y seguiremos llamando sustitucion a esta nueva aplicacion.

A.2.24 De nicion. Sean dos terminos s y t y la sustitucion = fx=tg. El


termino resultante de sustituir en s la variable x por el termino t es

s x=t] = (s)
tante de sustituir en F la variable x por el termino t se de ne recursivamente por 8 > p(t x=t]; : : : ; tn x=t]) si F = p(t ; : : : ; tn) > > :G x=t] si F = :G < si F = G _ H F x=t] = > G x=t] _ H x=t] > 9yG x=t] si F = 9yG y x 6= y > : 9xG si F = 9xG
1 1

A.2.25 De nicion. Sean F una formula y t un termino. La formula resul-

Para poder dar la demostracion de este resultado y otros analogos que citamos mas adelante ser a necesario establecer algunos resultados previos sobre el principio de induccion para terminos y formulas y la libre generacion de estos, en los que no vamos a entrar. Estos resultados podemos encontrarlos en 20].
3

102
cumple una de las siguientes condiciones: 1. F es atomica. 2. F = :G y x es sustituible por t en G.

Apendice A. Preliminares

A.2.26 De nicion. Una variable x de F es sustituible por el termino t si se

3. F = G _ H y x es sustituible por t en G y H . 4. F = 9xG 5. F = 9yG, x 6= y, y no ocurre libre en t y x es sustituible por t en G.

A.2.27 Nota.
1. En lo sucesivo, al escribir F x=t] supondremos que x es sustituible por t en F . 2. Si una formula F contiene una variable libre x, escribiremos F como F (x) y abreviaremos F x=t] como F (t).

A.3 Semantica
A.3.1 De nicion. Sea L un lenguaje de primer orden. Una preinterpretacion de L es un par M'= (D; I ) tal que:
1. D es un conjunto no vac o, llamado el dominio de la preinterpretacion. 2. I es una aplicacion de nida sobre SF tal que: (a) Para cada constante c del lenguaje, I (c) 2 D. (b) Para cada s mbolo de funcion n-ario del lenguaje I (f ) es una aplicacion parcial de Dn en D.

I (f ) : Dn ! D
tal que I (f )(I (t ); : : : ; I (tn)) = I (f (t ; : : : ; tn)).
1 1

A.3.2 De nicion. Sea L un lenguaje de primer orden. Una interpretacion de L es un par M= (D; I ) tal que:
1. M es una preinterpretacion de L.

A.3. Semantica

103

2. Ademas extendemos la aplicacion I a los s mbolos de predicado del siguiente modo: Para todo s mbolo de predicado n- ario (n > 0)

I (p) Dn
En este caso se dice que la interpretacion M esta basada en la interpretacion M'.

A.3.3 De nicion. Sea L un lenguaje de primer orden y M= (D; I ) una interpretacion de L. Una asignacion es una aplicacion del conjunto de las variables de L, V , en el universo de la interpretacion, D. :V !D A.3.4 Teorema. Sea M= (D; I ) una interpretacion de L . Para cada asignacion existe un unica aplicacion : TERM ! D de nida por
(t es (t) = I (f))( (t ); : : : ; (t ) si t = funa; variable si t (t : : : ; tn) n
1 1

En lo sucesivo escribiremos (t) en lugar de (t).

asignacion. Se representa por x=d] la asignacion 0 de nida por ( si y = x 0 (y ) = d (y) si y 6= x

A.3.5 De nicion. Sea M= (D; I ) una interpretacion para L, d 2 D y una

A.3.1 Consistencia y validez


A.3.6 De nicion. Los elementos del conjunto 2 = f1; 0g se llaman valores
de verdad. Diremos que 0 es el valor falso y que 1 es el valor verdadero.

A.3.7 De nicion. De nimos las funciones de verdad del siguiente modo


1. La funcion de verdad de la negacion es H: : 2 ! 2 de nida por

H:(i) = 1 ? i
2. La funcion de verdad de la disyuncion es H_ : 2 2 ! 2 de nida por

H_(i; j ) = maxfi; j g

104

Apendice A. Preliminares

3. Se de ne la funcion H9 : P (2) ! 2 del siguiente modo: ( 2X H9(X ) = 1;; si 1caso contrario 0 en

A.3.8 Teorema. Sea M una interpretacion de L. Para cada asignacion existe una unica aplicacion ~ : FORM ! 2 tal que
8 > > > > > > < ~ (F ) = > > > > > > :
si F = p(t1 ; : : : ; tn) e (I (t1 ); : : : ; I (tn)) 2 I (p) 0; si F = p(t1 ; : : : ; tn) e (I (t1 ); : : : ; I (tn)) 2 I (p) = H:(G) si F = :G H_(G; H ) si F = G _ H H9(f x=m](G) : m 2 Dg) si F = 9xG

1;

En lo sucesivo escribiremos (F ) en lugar de ~ (F ).

A.3.9 De nicion. Sea L un lenguaje de primer orden, F una formulas y M una interpretacion de L. Diremos que:
1. F es valida en M respecto de la asignacion , Mj= F si (F ) = 1. 2. F es valida en M, M j= F , si (F ) = 1 para todas las asignaciones . En este caso se dice que M es un modelo de F y que M satisface la formula F . 3. F es valida, j= F , si es valida en todas las interpretaciones de L. 4. F es consistente o satisfacible si tiene algun modelo.

A.3.10 Nota. Las de niciones anteriores son las mismas en el caso en que
hablemos de un conjunto de formulas ?.

A.3.11 De nicion. Sea T una teor a de primer orden y sea L el lenguaje de T. Un modelo de T es una interpretacion de L que sea modelo para todo axioma de T. Si T tiene un modelo entonces decimos que es consistente. A.3.12 De nicion. Sea S un conjunto de formulas cerradas y F una formula cerrada. Diremos que F es consecuencia logica de S , y lo denotaremos S j= F , si para toda interprtetacion M, si M es modelo de S , entonces es modelo de

F.

A.4. Formas prenexas

105

A.3.13 De nicion. Dos formulas F y G son logicamente equivalentes, F G, si para toda interpretacion M se tiene que M j= F si y solo si M j= G A.3.14 Teorema. Sea S un conjunto de formulas cerradas y F una formula cerrada. Entonces se tiene que F es consecuencia logica de S si S fF g es
insatisfacible.

A.4 Formas prenexas


A.4.1 De nicion. Una formula F esta en forma prenexa si es de la forma
Q x : : : QnxnG
1 1

donde para todo i 2 f1; : : : ng, Qi 2 f8; 9g, xi son variables distintas y G es una formula abierta. Se dice que Q x : : : Qnxn es el pre jo de F y que G es la matriz de F .
1 1

nexa equivalente a F .

A.4.2 Teorema. Para cada formula F existe una formula F 0 en forma preA.4.3 Nota. Existen algoritmos tales que dada cualquier formula F devuel-

ven una formula F 0 en forma prenexa equivalente a la formula dada.

A.4.4 De nicion. Un literal es un atomo o la negacion de un atomo. Un


literal positivo es un atomo. Un literal negativo es la negacion de un atomo.

A.4.5 De nicion.
El complementario de un literal L es ( L = :(pt(t; :;::::;:t; t)n) si L es p(pt(t; :;::::;:t;nt) ) p si L es : n n
1 1 1 1

Dos literales L y L0 son complementarios si

L0 = L

A.4.6 De nicion.

106

Apendice A. Preliminares

Una clausula conjuntiva C es la conjuncion de un conjunto nito de literales, i.e., n ^ C = Li


i=1

Una clausula disyuntiva D es la disyuncion de un conjunto nito de literales, i.e., n _ D = Li


i=1

A.4.7 De nicion.
Una formula esta en forma normal conjuntiva, FNC, si esta en forma prenexa y su matriz es una conjuncion de un conjunto de clausulas disyuntivas, i.e., ^ _ F = Q x : : : Qn xn n ( mi Li;j ) j i
1 1 =1 =1

Una formula esta en forma normal disyuntiva, FND, si esta en forma prenexa y su matriz es una disyuncion de un conjunto de clausulas conjuntivas, i.e., _ ^ F = Q x : : : Qn xn n ( mi Li;j ) j i
1 1 =1 =1

A.4.8 De nicion.
1. F es una forma normal conjuntiva de G si F esta en forma normal conjuntiva y F G. 2. F es una forma normal disyuntiva de G si F esta en forma normal disyuntiva y F G.
es una forma normal conjuntiva de F y G2 es una forma normal disyuntiva de F .

A.4.9 Teorema. Para cada formula F existen formulas G y G tales que G


1 2

A.4.10 Nota. Existe un algoritmo tal que dada cualquier formula F devuelve
una forma normal conjuntiva (resp. disyuntiva) de F .

Apendice B Uni cacion


En este apendice tratamos uno de los temas mas importantes dentro de la fundamentacion de la Programacion Logica y que tiene rami caciones dentro de gran parte de las matematicas actuales. La elaboracion del apendice se basa en recientes trabajos de Nipkow 40] y Lassez, Maher y Marriot 34], aunque tambien con aportaciones de Apt 3] y Lloyd 37]. Los conceptos que utilizo han sido de nidos en el apendice anterior.

B.1 La relacion subsuncion


B.1.1 De nicion. Si W V entonces
(
W W

es la restriccion de a V , i.e.,

2W (x) = x(x) si xotro caso en

B.1.2 Nota. Notaremos como (s) el termino que se obtiene de aplicar a s la


sustitucion .

B.1.3 De nicion. La composicion de las sustituciones y la abreviaremos


. As (t)( ) = ((t) ) . Diremos que una sustitucion es idempotente si = . Notese que en este caso Dom( ) \ Rang( ) = ;.

existe una sustitucion tal que (s) = t. En este caso tambien diremos que s es mas general que t, (o bien que s es menos particular que t), y lo denotaremos t s. 107

B.1.4 De nicion. Decimos que el termino t es una instancia del termino s si

108

Apendice B. Uni cacion

La eleccion de la orientacion del s mbolo vienen justi cada por el hecho de que un termino puede ser considerado como el conjunto de todas sus instancias, y desde este punto de vista t es un subconjunto de s.
1

B.1.5 Proposicion. La relacion de nida en TERM del siguiente modo: t s () Existe una sustitucion tal que (s) = t
es un preorden en TERM , es decir, es re exiva y transitiva en TERM .

B.1.6 De nicion. Llamaremos subsuncion a la relacion en TERM de nida


en la proposicion anterior.

B.1.7 De nicion. De nimos en TERM la relacion del siguiente modo: s t () (s t) ^ (t s)


Si s t diremos que s y t son equivalentes, o bien que s es una variante de t (y viceversa).

B.1.8 De nicion. Se de ne en TERM la relacion < de la siguiente manera: s < t () s t y t 6 s


Llamaremos a esa relacion subsuncion estricta. La demostracion del siguiente teorema as como la de los demas resultados de este apendice pueden encontrarse en 28].

B.1.9 Teorema. No existe ninguna cadena descendente in nita de subsuncion estricta t1 > t2 > t3 > : : :, i.e., la relacion < esta bien fundamentada.
1 1

B.1.10 Ejemplo. Sea s el termino f (x; y; h(z)). Una cadena descendente de


1 2 1 1 2 3 2 2

subsuncion estricta comenzando en s podr a ser Si = fx=ag entonces s = (s ) = f (a; y; h(z)) Si = fy=bg entonces s = (s ) = f (a; b; h(z)) Si = fz=cg entonces s = (s ) = f (a; b; h(c)) No existe ningun termino estrictamente menor que s por lo que hemos obtenido l cadena descendente nita s > s > s > s . 1 Intuitivamente, si consideramos Conj (t) = ft : sustitucion g tenemos que s t () Conj (s) Conj (t)
3 4 3 3 4 1 2 3 4

B.1. La relacion subsuncion

109
2

B.1.11 De nicion. Una permutacion es una aplicacion : V ! V biyectiva . B.1.12 Teorema. Para cada permutacion existe una unica aplicacion 0 : TERM ! TERM
de nida por

(t)

0=

(t) si t es una variable 0 ; : : : ; (tn ) 0 ) si t = f (t : : : tn ) f ((t )


1 1

Haciendo un abuso de notacion escribiremos (t) en lugar de (t) 0

B.1.13 Lema. s t () Existe una permutacion tal que (t) = s B.1.14 Lema. La relacion es de equivalencia en TERM .
equivalencia:

B.1.15 Nota. Adoptaremos la siguiente notacion respecto de la relacion de


Para cada termino t, representaremos por t] su clase de equivalencia, i.e., t] = ft0 2 TERM : t0 tg Representaremos por T el conjunto cociente de TERM respecto de , i.e., T = f t] : t 2 TERM g

B.1.16 De nicion. Se de ne en T la relacion del siguiente modo: t] s] () t s B.1.17 Lema. La relacion es un orden parcial en T. B.1.18 Nota. El mayor elemento de T es el conjunto de las variables.
Esto se tiene porque dado un termino cualquiera t y una variable x siempre podemos encontrar la sustitucion = fx=tg, con lo que tendremos t x.
Una permutacion es una sustitucion, por lo que notaremos como (x) a la variable que resulta de aplicar la permutacion a la variable x.
2

110

Apendice B. Uni cacion

B.1.19 De nicion. Sea : TERM TERM ! V una biyeccion . De nimos a partir de la siguiente aplicacion t : TERM TERM ! TERM ( t (s; t) = f (s t t ; : : : ; snt tn) si s = f (s ; : : : ; sn) y t = f (t ; : : : ; tn)
3

(s; t)

en otro caso

A partir de ahora denotaremos t (s; t) como st t.

B.1.20 De nicion. Dada la biyeccion : TERM TERM ! V y su correspondiente t : TERM TERM ! TERM se de ne la siguiente aplicacion ~ t : SUST SUST ! SUST como sigue: ~ (x)t ( ; ) = (x) t (x) ~ Denotaremos por t la sustitucion t ( ; )
1 2 1 2 1 2 1 2

Obviamente, como cualquier otra sustitucion, t , se extiende de forma unica al conjunto de los terminos. Puesto que la operacion de nida en TERM es solo un preorden, el supremo de un conjunto no esta un vocamente determinado, as que solo podemos hablar de la existencia o no de un supremo.
1 2

B.1.21 Proposicion. El termino t t t es un supremo de t y t con la relacion susbsuncion.


1 2 1 2

B.1.22 Lema. Sean y dos biyecciones cualesquiera de TERM TERM en V , ; : TERM TERM ! V , entonces st t st t.
generalizacion".

B.1.23 Teorema. En virtud del lema anterior podemos a rmar que T es un semirret culo superior con un operador supremo t que llamaremos \la menor

Combinando los resultados anteriores se tiene el siguiente teorema.


comun, esto es, que exista un termino u tal que u s y u t, entonces existe un n mo de s y t que denotaremos s u t.

B.1.24 Teorema. Dados dos terminos cualesquiera s y t con una instancia B.1.25 Nota. Representaremos por T al conjunto T al que hemos a~adido n un menor elemento ?
3

Esa biyeccion existe por se ambos conjuntos in nitos numerables.

B.2. Uni cacion

111

B.1.26 Teorema. (T; ) es un ret culo completo. B.1.27 De nicion. En el conjunto de las sustituciones, SUST ,establecemos
la siguiente relacion:
0 0

() existe una sustitucion

00

tal que 0 00 =

Si

se dice que es menos particular que 0 .

es un preorden en SUST , i.e., es re exiva y transitiva en el conjunto de las sustituciones.

B.1.28 Lema. La relacion

B.1.29 Lema. Si L tiene s mbolos de funcion entonces 0 () 8t 2 TERM; (t) 0 (t)


.

B.1.30 Lema. En el conjunto de las sustituciones, SUST , se de ne la siguiente relacion: Si


0 0

decimos que y 0 son equivalentes


0

() (

0) ^ ( 0

) = 0

B.1.31 Lema.
sustituciones.

si y solo si existe una permutacion tal que

B.1.32 Lema. La relacion es de equivalencia en el conjunto SUST de las

B.1.33 Lema. Si L tiene s mbolos de funcion entonces 0 () 8t 2 TERM; (t) 0 (t)

B.2 Uni cacion


El concepto de uni cacion, fundamental dentro de la Programacion Logica, ha tenido una historia controvertida. Podemos a rmar que el primer algoritmo de uni cacion fue dado por Herbrand 24] en 1930 para resolver ecuaciones. Posteriormente fue Robinson 44] quien retomo los estudios de Herbrand dando la primera de nicion de uni cador de maxima generalidad como el uni cador obtenido mediante el algoritmo presentado en el mismo trabajo. Mas tarde

112

Apendice B. Uni cacion

fue el mismo Robinson en 1979 quien dio la siguiente de nicion de umg: es el umg $ Para todo uni cador , = . Una tercera de nicion, dada por Chang y Lee en 1973 13] y adoptada por Lloyd en su trabajo de 1984 36] fue aceptada como \o cial" durante algun tiempo y la encontramos en trabajos como los de Apt 3]: es el umg $ para todo uni cador existe una susutitucion tal que = .4 Mas tarde, en 1986 Sterling y Shapiro dan una de nicion basada en el orden parcial establecido entre los terminos. En esta memoria seguimos a Nipkow 40] en su trabajo de 1992.

B.2.1 De nicion. Sean t y t dos terminos.


1 2

1. Se dice que la sustitucion es un uni cador de t y t si (t ) = (t ) (.


1 2 1 2

2. Representaremos por U (t ; t )al conjunto de los uni cadores de t y t


1 2 1

3. Se dice que t y t son uni cables si U (t ; t )6= ;


1 2 1 2

4. es un uni cador de maxima generalidad de t y t si


1 2

Para toda 0 2 U (t ; t ), 0 , o dicho de otro modo ,existe un sustitucion 00 al que 00 = 0 . Se dice que un umg de dos atomos A yB es relevante si
1 2 5

2 U (t ; t )
1 2

Dom( ) Rang( ) V (A) V (B )


esto es, si toda variable que ocurra en algun enlace de ocurre en A o en B . Notese que puesto que es solo un preorden no podemos hablar del el supremo de un conjunto.
Lloyd 37] de ne la composicion de sustituciones de la siguiente manera: Dadas dos sustituciones = fu1=s1 ; : : : ; um =smg y = fv1 =t1 ; : : : ; vn =tn g, la sustitucion composicion es la sustitucion obtenida a partir de
4

fu1 =s1 ; : : : ; um=sm ; v1 =t1 ; : : : ; vn =tng


eliminando los enlaces que Sean de la forma ui =si y ui = si Sean de la forma vj =tj y vj 2 fu1; : : : ; umg Esta de nicion es equivalente a la que hemos dado. 5 Esta de nicion es equivalente a la de Chang y Lee 13].

B.3. Algoritmos de uni cacion


0 i.e., dados dos terminos su uni cador generalidad de t1 y t2 . Entonces de maxima qeneralidad es unico salvo equivalencias.

113

B.2.2 Lema. Sean t y t dos terminos y y 0 dos uni cadores de maxima


1 2

B.2.3 Nota. Representaremos por umg(t ; t ) al conjunto de uni cadores de


1 2 1 2

maxima generalidad de t y t y abreviaremos la expresion \uni cador de maxima generalidad" como umg.

B.2.4 Ejemplo. Sean t = x y t = y dos teminos. La sustitucion = fx=z; y=zg es un uni cador de x e y, pero segun la de nicion anterior no es un umg, ya que dado el uni cador = fx=yg (caso analogo con = fy=xg) no podemos encontrar ninguna sustitucion 00 tal que fx=z; y=zg 00 = fx=yg. ( fz=yg es fx=y; z=yg pero no ).
1 2 1 2 1 6

B.2.5 Nota. El concepto de uni cador y de umg se extiende de forma natural


a conjuntos de mas de dos terminos.
1 2

B.2.6 Lema. Sean s y s terminos tales que V (s ) \ V (s ) = ;. Entonces,


si es un umg de s1 y s2 entonces s1 (= s2) es un n mo de s1 y s2 .
1 2 1 1 2

B.2.7 Nota. El lema anterior es falso si V (s )\V (s ) 6= ;. As , si s = f (x; y) y s = f (y; x), un umg puede ser = fx=yg, pero (s ) = f (y; y) no es un
n mo de s y s . Este ultimo ser a, modulo permutacion, f (z ; z ).
1 2 1 2 2 1

B.3 Algoritmos de uni cacion


El problema de la uni cacion es mucho mas amplio de lo que aqu abordamos. Podemos pensar que encontrar solucion a la ecuacion 2+x =5 no es mas que encontrar la sustitucion = fx=3g. Este ejemplo pone de relieve que el problema de la Uni cacion subyace en cualquier problema que nos planteemos en Matematicas. Los algoritmos de uni cacion estan muy estudiados. Desde el algoritmo de Herbrand de 1930 hasta el algoritmo lineal presentado por Martelli y Montanari 38] en 1976 ha corrido mucha tinta, aunque la investigacion en el campo de la uni cacion no ha hecho mas que empezar.
He aqu un ejemplo de la controversia de la de nicion de umg. Existen de niciones para las que es en este caso umg.
6

114

Apendice B. Uni cacion

B.3.1 Algoritmo de Herbrand


B.3.1 De nicion. Sea S un conjunto de expresiones. El conjunto discordante de S , DS se de ne como el resultado del siguiente \algoritmo": Comparamos los s mbolos de L que aparecen en las expresiones de S empezando por la izquierda, hasta encontrar algun s mbolo distinto.
Si comparando posicion a posicion todos los s mbolos que encontramos son iguales, entonces DS = ; Si al llegar a una posicion determinada descubrimos s mbolos distintos, el conjunto DS tendra como elementos aquellas subexpresiones de las expresiones de S que contengan esos s mbolos.
7

B.3.2 Ejemplo. Sean los siguientes conjuntos de expresiones:


S = fp(f (x); a); p(g(x); a)g, DS = ff (x); g(x)g S = fp(f (x); a); p(f (y); a)g, DS = fx; yg S = fp(f (x); x); p(f (x); a)g, DS = fx; ag S = fp(f (x); x); p(f (x); x)g, DS = ;

B.3.3 Nota. Sea S = fei : i 2 I g un conjunto de expresiones y una sustitucion. Denotaremos como S al conjunto de expresiones siguiente: S = fei : i 2 I g. ALGORITMO DE UNIFICACION
Consideremos un contador k 1. Pongamos k = 0 y 0 = 2. Si S k es un conjunto unitario entonces paramos; k es un umg de S . En otro caso hallar el conjunto discordante Dk de S k . 3. Si existe v y t en Dk tal que v es una variable que no ocurre en t entonces hacemos k+1 = k fv=tg, aumentamos en uno el contador k, k = k + 1, y volvemos al paso 2. En otro caso paramos y concluimos que S no es uni cable.

La demostracion del siguiente teorema puede encontrarse en 37].


No hemos de nido \subexpresion" en esta memoria, como tampoco otros conceptos propios de la logica. Esta y otras de niciones auxiliares pueden encontrarse en 20].
7

B.3. Algoritmos de uni cacion

115

Teorema. B.3.4 (Teorema de Uni cacion) Sea S un conjunto de expresiones. Si S es uni cable el algoritmo de uni cacion presentado termina y da como salida un umg de S . Si S no es uni cable, el algoritmo termina y da como salida que S no es uni cable. B.3.5 Nota. El algoritmo que aqu presentamos es muy ine ciente, de tipo exponencial en el peor de los casos. Como ya hemos comentado, Martelli y Montanari 38] presentaron un algoritmo lineal en 1976. Como hemos apuntado, la teor a de uni cacion es muy extensa y esta muy rami cada. Para mas informacion pueden consultarse los trabajos de T. Nipkow 40] y Lassez, Maher y Marriot 34].

Indice
arbol complejo, 89 arbol principal, 89 atomo, 98 atomo seleccionado, 47 n mo, 96 atomo cerrado, 100 dominio de una sustitucion , 100 SLD-derivacion con exito, 39 SLD-derivacion no restringida , 38 alcance, 99 aplicacion continua, 28 aplicacion monotona, 28 aridad, 97 asignacion, 103 base de Herbrand, 21 cabeza de la clausula, 19 camino, 89 clausula de entrada, 37 clausula de programa de nido, 19 clausula aplicable, 88 clausula basica, 23 clausula conjuntiva, 106 clausula de Horn, 20 clausula de programa, 70 clausula disyuntiva, 106 clausula unidad, 19 clausula unidad negativa, 19 clausula unidad positiva, 19 clausula vac a, 2, 20 clausulas de entrada, 78 codominio de una sustitucion , 100 116

?recursion, 56

completacion de un programa, 72 composicion de sustituciones, 107 composicion, 56 condicion de seguridad, 76 conjunto de exito, 39 conjunto de fallo nito, 66 conjunto de R-exito, 50 conjunto dirigido, 28 conjunto discordante, 114 consecuencia logica, 104 constante, 97 cota inferior, 96 cota superior, 96 cuerpo de la clausula, 19 de nicion, 70 de nicion completda, 71 de nicion de un s mbplo de predicado, 20 dominio, 102 enlace, 101 enumeracion de UL , 58 equivalencia logica, 105 expresion, 99 formula, 98 formula abierta, 100 formula atomica, 98 formula cerrada, 100 favorable, 68 forma de Skolem, 25 forma normal conjuntiva, FNC, 106 forma normal disyuntiva, FND, 106 forma prenexa, 105 funciones basicas, 56

INDICE

117
preinterpretacion de Herbrand, 21 preorden, 95 procedimiento de SLD-refutacion, 52 programa de nido, 19 programa general, 70 programa normal, 70 programa sucesor, 58 pseudoderivacion, 88 rama con exito, 51 rama fallida, 51 rama in nita, 51 rango, 93 rango de una sustitucion, 100 recursion, 56 regla de busqueda, 52 regla de computacion, 47 regla de computacion segura, 85 regla de seleccion, 93 relacion, 95 relevante, 112 resolvente, 37 respuesta, 35, 72 respuesta computada, 39, 78, 91 respuesta correcta, 35, 72 respuesta R-computada, 47, 85 ret culo, 96 ret culo completo, 96 s mbolo proposicional, 97 semirret culo superior, 96 separacion de variables, 37 SLD- conjunto de fallo nito, 67 SLD-arbol, 51 SLD-arbol nitamente fallido de rango k, 76 SLD-derivacion, 37 SLD-derivacion fallida, 39 SLD-derivacion v a R, 47 SLD-refutacion, 37 SLD-refutacion v a R, 47 SLD-refutacion de rango k, 76 SLD-resolucion, 36

funciones de verdad, 103 funciones primitivas recursivas, 56 funciones recursivas, 57 funcion de Skolem, 25 formula consistente, 104 formula satisfacible, 104 formula valida, 104 HMC, Regla de Inferencia, 65 instancia, 107 instancia basica, 23 interpretacion, 102 interpretacion de Herbrand, 21 inviabilidad, 80 lenguaje de primer orden, 96 literal, 105 literal negativo, 105 literal positivo, 105 literal seleccionado, 85 literales complementarios, 105 matriz, 105 mayor punto jo, Mpf , 28 menor generalizacion, 110 menor modelo de Herbrand, 23 menor punto jo, mpf , 28 modelo, 104 objetivo de nido, 20 objetivo derivado, 37, 76 objetivo normal, 70 operador consecuencia inmediata, 32 orden parcial, 95 ordinal recursivo, 34 permutacion, 109 peso de un termino, 59 pre-SLDNF- derivacion, 91 pre-SLDNF-arbol, 89 pre-SLDNF-arbol inicial, 89 pre jo, 105 preinterpretacion, 102

118
SLD-arbol nitamente fallido, 67 SLD-arbol v a R, 52 SLDNF- derivacion v a R, 85 SLDNF- refutacion v a R, 85 SLDNF-arbol, 79, 91 SLDNF-derivacion, 78, 91 SLDNF-refutacion, 78 SLDNF-resolucion, 75 SLDNF-arbol nitamente fallido, 78 SLDNF-arbol v a R, 85 subobjetivo, 20 subsuncion, 108 subsuncion estricta, 108 suc, relacion binaria, 58 supremo, 96 sustitucion, 100 sustitucion idempotente, 107 sustitucion identidad, 100 sustitucion menos particular, 111 sustituciones equivalentes, 111 sustitucion basica, 23, 101 termino, 98 termino mas general, 107 termino menos particular, 107 Terminos equivalentes, 108 terminos uni cables, 112 teor a de la igualdad, 71 termino cerrado, 99 uni cador, 112 universo de Herbrand, 20 valores de verdad, 103 variable libre, 99 variable ligada, 99 variable sustituible, 102 variante, 108

INDICE

Referencias
1] Alonso, J.A. \Programacion Logica" Notas del curso 93-94. Univ. de Sevilla. Trabajo no publicado. 1994 2] Andreka, H. y I.Nemeti The Generalizated Completeness of Horn Predicate Logic as a Programming Language Acta Cybernetica, 4, 1 (1978) 3-10 3] Apt, K.R. Logic Programming. Handbook of Theoretical Computer Science Elsevier Science Publishers B.V., 1990 4] Apt, K.R. y M. Bezem Acyclic Programs New Generation Comput. 29(3) 1991, pp. 335-363. 5] Apt, K.R. y K. Doets A new de nition of SLDNF- resolution J. Logic Programming 1994, 18 pp. 177-190. 6] Apt, K.R. y M.H. van Emden Contributions to the Theory of Logic Programming J. ACM 29, 3 (July 1982) 841-862 7] Apt, K.R. y D. Pedreschi Proving Termination of General Prolog Programs en Proceedings of the International Conference on Theoretical Aspects of Computer Software, Lecture Notes in Computer Science 526, 265-289 T. Ito yA. Meyer (eds.) Springer-Verlag. Berl n 1991. 8] Blair H.A. The recursion-theoretic complexity of predicate logic as a programming language Inform and Control 54 (1-2) (1982) 25-47 9] Blair H.A. Decidability in the Herbrand Base Manuscript presented at the Workshop of Foundations of Deductive Databases and Logic Programming. Washington DC, 1986. 10] Clark, K.L. Negation as Failure in Logic and Data Bases Gallaire, H. and Minker, J. (eds), Plenum Press, New York, 1978, 293-322 119

120

REFERENCIAS

11] Clark, K.L. Predicate Logic as Computational Formalism Research Report DOC 79/59, Department of Computing, Imperial College, London, 1979 12] Colmerauer A. et als. Un Systeme de Communication HommeMachine en Francais Groupe de Recherche en Intelligence Arti cielle, Universite d'Aix-Marseille. 1973. 13] Chang, C.L. y R.C.T. Lee Symbolic Logic and Mechanical Theorem Proving Academic Press New York 1973. 14] Church, A. y S.C. Kleene Formal de nitions in the theory of ordinal numbers Fund. Math. 28 (1937) 11-21 15] Das, S.K. Deductive Databases and Logic Programming Addison-Wesley Publishing Company, 1992. 16] Davis M. The Prehistory and Early History of Automated Deduction en Automation of Reasoning. Classical Papers of Computational Logic 1957-1966 Ed. Jorgsiekmann and Graham Wrightson. Springer Verlag 1983 17] Davis M. Eliminating the irrelevant from mechanical proofs. Proc. Symp. Applied Math. XV (1963) 15- 30. 18] Davis, M. y H. Putnam A Computing Procedure for Quanti cation Theory J.ACM 7 (1960) 201-215 19] Delahaye,J.P. Outils logiques pour l'Intelligence Arti cielle Ed. Eyrolles, 1988. 20] Ebbinghaus H.D. et als. Mathematical Logic Springer-Verlag New York Inc. 1984. 21] Fernandez Margarit, A. \Algebra III" Notas del curso 91-92. Univ. de Sevilla. 22] Genesereth, M.R. y N.J. Nilsson Logical Foundations of Arti cial Intelligence Morgan Kaufmann Publishers, Inc. 1987 23] Gilmore, P.C. A Proof Method for Quanti cation Theory IBM J. Res. Develop. 4 (1960) 28-35 24] Herbrand, J.\Investigations in Proof Theory" en From Frege to Godel: A Source Book in Mathematical Logic 1879- 1931, van Heijenoort, J. (ed.), Harvard University Press, Cambridge, Mass., 1967, 525-581.

REFERENCIAS

121

25] Hill, R. LUSH-resolution and its completeness DCL Memo 78, Dept. of Arti cial Intelligence, Univ. of Edinburgh, 1974 26] Hogger, C.R. Essentials of Logic Programming Clarendon Press Oxford, 1990 27] Hrbacek, K. y T. Jech Introduction to set theory Marcel Dekker Inc., 1984. 28] Huet, G. Resolution d'equations dans les langages d'ordre 1; 2; : : : ; ! Tesis doctoral. Univ. Par s VII, 1976. 29] Jaffar, J., J.-L. Lassez y J.W. Lloyd Completeness of the Negation as Failure Rule, IJCAI-83, Karlsruhe 1986, 500-506. 30] Kowalski R.A. Predicate Logic as a Programming Language en Proceedings IFIP'74, North Holland, Amsterdam 1974, 569-574. 31] Kowalski, R.A. The Relation Between Logic Programming and Logic Speci cation in Mathematical Logic and Programming Languages Hoare, C.A.R. and J.C. Shepherdson (eds.) Prentice-Hall Englewood Cli s, N.J. 1985,11-27 32] Kowalski, R.A. y C.J. Hogger Logic Programming en Encyclopedia of Arti cial Intelligence, Vol 1, pags. 544- 558 John Wiley and Sons, 1990. 33] Lassez, J.L. y M.J.Maher Closures and Fairness in the Semantics of Programming Logic Theoretical Computer Science 29 (1984), 167-184 34] Lassez, J.L., M.J. Maher y A. MarriotUni cation Revisited en Minker ed. Foundations of Deductive Databases and Logic Programming MorganKaufmann, Los Alttos, CA. 1988 35] Loveland D.W. Automated theorem proving: A quarter{century review Contemporary Mathematics Vol. 29 American Mathematical Society 1985. 36] Lloyd J.W.Foundatios of Logic Programming Springer, Berlin, 1984 37] Lloyd J.W.Foundatios of Logic Programming Springer, Berlin, 2nd ed., 1987 38] Martelli, A. y U. Montanari Uni cation in Linear Time and Space: A Structured Presentation Nota Interna B76-16, Instituto di Elaborazione della Informazione, Pisa, 1976

122

REFERENCIAS

39] Martelli, M. y C.A. Tricomi A new SLD-Tree Inform. Process. Lett. 43(2) 57-62 (1992) 40] Nipkow T.Ecuational Reasoning Research Report July, 9, 1992 41] Odifreddi, P. Classical Recursion Theory Elsevier Science Publishers B.V., 1989. 42] Prawitz, D. An Improved Proof Procedure Theoria 26 (1960) 102-139 43] Reiter, R. On Closed World Data Bases in Logic and Data Bases Gallaire, H. and Minker, J. (eds), Plenum Press, New York, 1978, 55-76 44] Robinson, J.A. A Machine-oriented Logic Based on the Resolution Principle J. ACM 12, 1 (Jan, 1965), 23-41 45] Sebelik, J. y P.Stepaneck Horn Clause Programs for Recursive Functions in Logic Programming Clark, K.L. and Tarnlund S.A. (eds.) Academic Press New York, 1982, 324,340 46] Shepherdson, J.C. Undecidability of Horn Clause Logic and Pure Prolog unpublished manuscript, 1985. 47] Sonenberg, E.A. y R.W. Topor Computation in the Herbrand Universe unpublished manuscript, 1986. 48] Tarnlund, S.A Horn Clause Computability BIT 17,2 (1977), 215-226 49] Tarski, A. A Lattice-theoretical Fixpoint Theorem and its Applications Paci c J. Math. 5 (1955) 285-309 50] van Emden, M. H. y R.A. Kowalski The Semantics of Predicate Logic as a Programming Language J. ACM 23,4 (Oct, 1976) 733-742.

Você também pode gostar