An - dsic.upv.es

198

Transcript of An - dsic.upv.es

:

:

:

Germ�an Vidal Oriola

Doctor en Inform�atica

Mar��a Alpuente Frasnedo

An�alisis Sem�antico y Transformaci�on

de Programas L�ogico{Funcionales

Departamento de Sistemas Inform�aticos y Computaci�on

Universidad Polit�ecnica de Valencia

Memoria presentada para optar al t��tulo de

Dirigida por

Tribunal de lectura

Septiembre de 1996

Presidente: Isidro Ramos Salavert U.P. Valencia

Vocales: Moreno Falaschi U. Udine

Mario Rodr��guez Artalejo U.C. Madrid

Fernando Orejas Vald�es U.P. Catalunya

Secretario : Juan Jos�e Moreno Navarro U.P. Madrid

Resumen

an�alisis y

transformaci�on

ad-hoc

narrowing

El problema de la integraci�on de la programaci�on l�ogica y funcional est�a considera-

do como uno de los m�as importantes en el �area de investigaci�on sobre programaci�on

declarativa. Para que los lenguajes declarativos sean �utiles y puedan utilizarse en

aplicaciones reales, es necesario que el grado de e�ciencia de su ejecuci�on se aproxime

al de los lenguajes imperativos, tal y como se ha conseguido con el lenguaje Prolog.

Para ello, es imprescindible el desarrollo de herramientas potentes para el

de los programas, capaces de optimizar las implementaciones realiza-

das. En general, es deseable sustituir las aproximaciones por tratamientos m�as

sistem�aticos para los problemas de an�alisis y transformaci�on de programas. Puesto

que la sem�antica de los lenguajes l�ogico{funcionales ha sido objeto de numerosos es-

tudios y est�a matem�aticamente bien formalizada, surge el inter�es por el desarrollo

de m�etodos y t�ecnicas formales para la formulaci�on de optimizaciones, basadas en la

sem�antica, que preserven las propiedades computacionales del programa. Esta tesis se

centra en el desarrollo de tales t�ecnicas, adopt�andose una aproximaci�on formal basada

en la sem�antica (operacional) del lenguaje para desarrollar y analizar, en un contexto

uni�cado, las diferentes optimizaciones.

En la primera parte, desarrollamos un marco para el an�alisis est�atico de progra-

mas l�ogico{funcionales, basado en la idea de construir aproximaciones correctas de la

sem�antica operacional del programa. Formalizamos un esquema de an�alisis simple,

uniforme y exible, que permite estudiar distintos tipos de propiedades (relacionadas

con el conjunto de respuestas computadas por el programa) de manera correcta y

f�acilmente implementable. El esquema es independiente de la estrategia de

usada en la formulaci�on del mecanismo operacional del lenguaje, lo que contribuye a

dar generalidad al mismo.

Las t�ecnicas de evaluaci�on parcial son, de entre la gran variedad de t�ecnicas exis-

tentes para la transformaci�on de programas, las que mayor inter�es han despertado

en las dos �ultimas d�ecadas. Su utilidad no reside �unicamente en la posibilidad de

especializar programas, sino que sus aplicaciones se extienden tambi�en a la genera-

ci�on autom�atica de compiladores o a la optimizaci�on de c�odigo, por citar s�olo las

m�as importantes. En la segunda parte de esta tesis mostramos que, en el contexto

i

narrowing

de los lenguajes l�ogico{funcionales, la especializaci�on de programas se puede basar

directamente en el mecanismo operacional de que, debido a la propagaci�on

bidireccional de par�ametros realizada a trav�es del procedimiento de uni�caci�on, es

capaz de producir optimizaciones apreciables. Esta visi�on uni�cada de ejecuci�on y

especializaci�on nos permite explotar las contribuciones de ambos campos, funcional y

l�ogico, y desarrollar un esquema simple y potente para mejorar el programa original

respecto a su capacidad para computar respuestas. Tambi�en mostramos que, debido a

la componente funcional, son posibles otras optimizaciones (como la inclusi�on de pasos

de simpli�caci�on deterministas) con el bene�cio a~nadido de que, en nuestro esquema,

todas las optimizaciones quedan `compiladas' en el programa transformado. Formali-

zamos los conceptos b�asicos para la evaluaci�on parcial de programas l�ogico{funcionales

y demostramos la correcci�on y completitud de la transformaci�on. El esquema pre-

sentado en este trabajo constituye la primera aproximaci�on totalmente autom�atica,

correcta y �nita para la evaluaci�on parcial de programas l�ogico{funcionales.

ii

tesis doctoral

Agradecimientos

La realizaci�on de una tesis doctoral no puede considerarse, en modo alguno, fruto del

esfuerzo de un solo individuo. Son muchas las personas y entidades a las que el autor

desea expresar su sincero agradecimiento y, sin cuya colaboraci�on, la realizaci�on de

esta tesis no habr��a sido posible. Sin �animo de ser exhaustivo, quiero expresar aqu�� mi

gratitud a las siguientes personas:

A los compa~neros del grupo de Programaci�on L�ogica e Ingenier��a del Software

de la Universidad Polit�ecnica de Valencia, que no s�olo han colaborado con su

trabajo, sino que han contribu��do a hacer m�as grata mi vida en la universi-

dad. De entre ellos, me gustar��a destacar a los siguientes: Isidro Ramos, Mar��a

Jos�e Ram��rez, Javier Piris, Mar��a Jos�e Ramis, Salvador Lucas, Asunci�on Casa-

nova, Vicente Gisbert y, especialmente, a Javier Oliver, mas que un compa~nero

de trabajo, un amigo, y al que le debo en buena parte el haber conseguido

�nalizar esta tesis en las fechas previstas.

A Moreno Falaschi, un buen amigo con el que siempre ha sido un placer trabajar,

y al que le debo, no s�olo la posibilidad de haber realizado varias estancias en

distintas universidades italianas, sino el haber conseguido que me sintiese en

ellas como en mi propia casa.

Por �ultimo, y muy especialmente, a Mar��a Alpuente, sin cuyos conocimientos,

apoyo y dedicaci�on constante a lo largo de estos cuatro a~nos, nada de esto

habr��a sido posible. Sin lugar a dudas, suyo es el m�erito de haberme lanzado

a esta aventura llamada , abriendo las puertas a una nueva etapa

de mi vida que, si bien no ha sido especialmente f�acil, ha sido una de las m�as

interesantes.

Quiero agradecer tambi�en a aquellos organismos que, de una forma u otra, han

colaborado en el desarrollo de los trabajos contenidos en esta tesis:

La Universidad Polit�ecnica de Valencia y, concretamente, el Departamento de

Sistemas Inform�aticos y Computaci�on, en el que el autor desarrolla habitual-

mente sus actividades tanto docentes como de investigaci�on.

iii

Las universidades de Padova y Udine, as�� como el grupo de Programaci�on L�ogica

de Pisa, liderado por Giorgio Levi, en los que el autor ha realizado distintas

estancias de investigaci�on.

El Ministerio de Educaci�on y Ciencia y la Comisi�on Interministerial de Ciencia

y Tecnolog��a, que han �nanciado en gran medida los trabajos del autor.

Finalmente, un agradecimiento muy especial para mis padres, hermanos y amigos,

que me han soportado durante estos cuatro largos pero intensos a~nos.

iv

Indice General

I An�alisis Sem�antico 53

1 Introducci�on 1

2 Preliminares 11

3 Sem�antica Composicional 31

4 Narrowing Abstracto 55

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

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

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

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

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

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

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

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

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

: : : : : : : : : : :

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

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

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

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

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

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

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

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

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

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

1.1 An�alisis Sem�antico 3

1.2 Transformaci�on de Programas 4

1.3 Objetivo de la Tesis 5

1.4 Organizaci�on de la Memoria 6

2.1 Conceptos B�asicos 11

2.2 Narrowing Condicional 17

2.3 Estrategias de Narrowing 19

3.1 Composici�on Paralela Ecuacional 32

3.2 Composicionalidad de la Sem�antica 34

3.2.1 Composicionalidad del Conjunto de

Exitos 34

3.2.2 Narrowing Composicional 46

3.3 Observaciones 50

4.1 Interpretaci�on Abstracta 55

4.2 Sem�antica Operacional Abstracta 58

4.2.1 Dominios Abstractos 59

4.2.2 Narrowing Abstracto 63

4.3 Terminaci�on del An�alisis 68

4.3.1 Abstracci�on de Programas 68

4.3.2 Grafo de Prevenci�on de Bucles 73

4.4 An�alisis Composicional 76

v

vs

II Transformaci�on de Programas 103

5 Aplicaciones del An�alisis 85

6 Fundamentos de la EP de Programas 105

7 Un Marco General para la EP de Programas 141

Conclusiones y Trabajo Futuro 167

Bibliograf��a 169

Indice de Materias 187

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

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

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

: : : : : : : : : : :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

vi

4.5 Comparaci�on con Otras Aproximaciones 82

5.1 An�alisis de Insatisfacibilidad 86

5.2 Narrowing Guiado por Narrowing Abstracto 88

5.3 Satisfacci�on Perezosa de Restricciones Ecuacionales 91

5.4 An�alisis de Enlaces de Variables 99

6.1 Introducci�on 106

6.1.1 Antecedentes 107

6.1.2 Motivaci�on 109

6.1.3 Trabajos Relacionados 110

6.2 EP de Programas L�ogico{Funcionales 112

6.3 Correcci�on y Completitud de la EP 119

7.1 Introducci�on 142

7.2 Un Esquema Gen�erico para la EP 145

7.3 Terminaci�on 149

7.3.1 Terminaci�on Local 150

7.3.2 Terminaci�on Global 153

7.3.3 Especializaci�on Terminaci�on 159

7.4 Renombramiento e Independencia 161

7.5 Test KMP 164

Cap��tulo 1

Introducci�on

narrowing

narrowing

pattern matching

narrowing

narrowing

narrowing

narrowing narrowing narrowing

narrowing

El problema de la integraci�on de la programaci�on l�ogica y funcional est�a considerado

como uno de los m�as importantes en el �area de investigaci�on sobre programaci�on decla-

rativa. Muchas propuestas recientes para la integraci�on usan sistemas de reescritura

de t�erminos condicionales como programas y (alguna variante del) estrechamiento

( ) [Fay79, Sla74] como mecanismo operacional, soportando as�� uni�caci�on

y variables l�ogicas en un contexto funcional. El procedimiento de puede

verse como una extensi�on propia de la reescritura y puede ser implementado e�cien-

temente sustituyendo emparejamiento (ajuste o ) por uni�caci�on en

el procedimiento de reducci�on. El uso de como mecanismo operacional

para realizar las computaciones supone una extensi�on muy potente de los programas

l�ogicos tradicionales, y el modelo resultante tiene buenas oportunidades para explotar

el paralelismo impl��cito en el lenguaje.

En general, el procedimiento de tiene un grado de indeterminismo muy

alto, debido a la existencia de dos grados de libertad: uno en la elecci�on del subt�ermino

a reducir y el otro en la elecci�on de la regla. Pese a que el algoritmo de es

un m�etodo correcto y completo para obtener las soluciones a un sistema de ecuaciones,

su terminaci�on no est�a asegurada. Se han dise~nado muchas estrategias para reducir

la talla del espacio de b�usqueda que eliminan algunas derivaciones in�utiles como, por

ejemplo, \innermost" [Fri85], b�asico [Hul80, MH94],

selecci�on [BGM88], perezoso [Han94a, MR92, Red85], etc. Cada una de

estas estrategias sigue manteniendo, bajo determinadas condiciones, la completitud

del c�alculo. En [Alp91, AN89, BL86, DP88b, Mor89, Red85] se puede encontrar una

revisi�on, an�alisis y clasi�caci�on de �estas y otras propuestas para la integraci�on. La

colecci�on en [DL86] constituye una referencia est�andar en el campo. La panor�amica

m�as actualizada se presenta en [Han94b].

Para que los lenguajes declarativos sean �utiles y puedan utilizarse en aplicaciones

1

hardware

CAP��TULO 1. INTRODUCCI

ON2

reales, es necesario que el grado de e�ciencia de su ejecuci�on se aproxime al de los

lenguajes imperativos, tal y como se ha conseguido con el lenguaje Prolog. El perfec-

cionamiento de las t�ecnicas de compilaci�on y la explotaci�on del paralelismo inherente

a los programas, se presentan como las dos fuentes principales de mejora de rendi-

miento. B�asicamente, existen dos aproximaciones para la implementaci�on e�ciente de

un lenguaje l�ogico{funcional [Han94b]:

1. la compilaci�on a otro lenguaje de alto nivel para el que ya existen t�ecnicas

e�cientes de compilaci�on [JMM93, vEY87], y

2. la compilaci�on al lenguaje de una \m�aquina abstracta" (de bajo nivel) que

es ejecutable de forma e�ciente sobre el convencional [KLMR90a,

KLMR90b].

En ambas aproximaciones, es necesario el desarrollo de herramientas potentes de

an�alisis y transformaci�on de programas para los lenguajes l�ogico{funcionales. Por

un lado, los m�etodos de an�alisis son imprescindibles para el desarrollo de t�ecnicas

de compilaci�on avanzadas (que requieran un an�alisis global del programa). Por otro

lado, las t�ecnicas de transformaci�on de programas son �utiles, por ejemplo, para la

optimizaci�on de programas, el desarrollo de t�ecnicas de compilaci�on \abstracta" y la

generaci�on autom�atica de compiladores a partir de int�erpretes.

La habilidad para analizar un programa, razonando acerca de sus propiedades, es

una de las tareas m�as importantes en el �area de s��ntesis y manipulaci�on de progra-

mas. El an�alisis de ujo de datos, es decir, el proceso de recoger informaci�on sobre la

forma en que el programa usa las variables y las estructuras de datos (sin necesidad

de ejecutarlo), juega un papel fundamental en el dise~no de procesadores de programas

tales como depuradores, compiladores e int�erpretes. En el caso de los lenguajes decla-

rativos, la aproximaci�on al an�alisis de programas que goza de mayor reconocimiento

est�a basada en la teor��a de la interpretaci�on abstracta desarrollada por P. Cousot y

R. Cousot [CC77, CC79, CC92]. La idea b�asica consiste en usar descripciones apro-

ximadas y �nitas de los objetos computacionales, haciendo as�� tratable el problema

del an�alisis de ujo de datos. Todo esfuerzo de investigaci�on en este campo queda

justi�cado, por ejemplo, cuando se recapacita sobre la enorme proporci�on de c�odigo

dedicada en la mayor��a de compiladores modernos a la comprobaci�on y optimizaci�on

del c�odigo generado, puesto que cualquier mejora en el c�odigo intermedio contribuye

a producir un c�odigo m�aquina correcto (con id�entica sem�antica) y m�as r�apido.

La transformaci�on autom�atica de programas es un m�etodo para derivar progra-

mas correctos y e�cientes. En la literatura se han propuesto una gran variedad de

transformaciones para mejorar el c�odigo. Una de las mejor estudiadas, la evaluaci�on

parcial (EP) de programas, ofrece un marco uni�cado para la investigaci�on acerca de

procesadores de lenguajes, en particular, compiladores e int�erpretes [Jon88, JGS93].

top down bottom up

1.1 An�alisis Sem�antico

1.1. AN

ALISIS SEM

ANTICO 3

El objetivo de la EP se puede ver de la siguiente forma: dado un programa y algu-

na forma de restricci�on sobre su uso (i.e. informaci�on sobre algunos de los datos de

entrada), la EP del programa consiste en la construcci�on de un nuevo programa \re-

sidual" m�as e�ciente, pero que se comporta de forma equivalente al original cuando

se usa de acuerdo con la restricci�on impuesta [Jon88]. La compilaci�on y la generaci�on

autom�atica de compiladores a partir de int�erpretes son dos de sus principales apli-

caciones [Fut71]. La EP es, por tanto, una t�ecnica de transformaci�on de programas

que pone mayor �enfasis en los m�etodos puramente autom�aticos que las t�ecnicas de

transformaci�on de programas tradicionales. Una de las principales razones para el

inter�es en la EP es el deseo de conseguir una compilaci�on autom�atica y e�ciente por

medio de programas generales y f�acilmente parametrizables [JGS93].

La interacci�on entre ambas t�ecnicas (an�alisis y transformaci�on de programas) es

bastante usual. Es posible usar t�ecnicas de transformaci�on de programas, como paso

previo al an�alisis, con el objeto de generar un programa transformado sem�anticamente

equivalente al original pero que permite obtener mayor informaci�on durante la fase

de an�alisis (compilaci�on abstracta). As��mismo, es posible utilizar t�ecnicas de an�alisis

sem�antico con el objeto de extraer informaci�on �util para optimizar el proceso de

transformaci�on del programa [JGS93].

Una aproximaci�on interesante para el an�alisis de los lenguajes de alto nivel consiste

en considerar el an�alisis de un programa como un tipo de pseudo-evaluaci�on, es decir,

un proceso que imita la ejecuci�on de un programa. La teor��a de la Interpretaci�on

Abstracta [CC77, CC79] es una teor��a de aproximaci�on sem�antica, que se usa para

proporcionar est�aticamente (en tiempo �nito) respuestas correctas a cierto tipo de

cuestiones relevantes sobre el comportamiento de los programas en tiempo de ejecu-

ci�on. Los datos y operadores sem�anticos \concretos" son aproximados y reemplazados

por los correspondientes datos y operadores \abstractos". En este contexto, un an�ali-

sis se ve como una computaci�on abstracta de�nida por los operadores abstractos sobre

descripciones de datos en lugar de sobre los datos mismos. Diferentes estilos de de�ni-

ci�on sem�antica conducen a diferentes aproximaciones al an�alisis de programas. En el

caso de los programas l�ogicos, existen dos aproximaciones principales: an�alisis descen-

dente ( ) y an�alisis ascendente ( ) [CC92, MS89]. La aproximaci�on

descendente propaga la informaci�on en el mismo sentido que la regla de resoluci�on,

mientras que la aproximaci�on ascendente propaga la informaci�on como en la compu-

taci�on del menor punto �jo del operador de consecuencias en un paso. Una diferencia

importante entre ambas aproximaciones est�a en la independencia o no del an�alisis

respecto al objetivo, siendo independiente en el caso ascendente y dependiente en

0

+

P P

P

groundness

CAP��TULO 1. INTRODUCCI

ON

1.2 Transformaci�on de Programas

4

el descendente. Los an�alisis ascendentes permiten estudiar propiedades del conjunto

de �exitos del programa y son, generalmente, f�aciles de implementar. Por otro lado,

los an�alisis descendentes permiten estudiar propiedades tanto del conjunto de �exitos

como de las respuestas parciales, pueden ser m�as precisos y su implementaci�on suele

ser m�as compleja.

Est�a demostrado que es posible implementar los lenguajes l�ogico{funcionales de

manera e�ciente, adaptando las t�ecnicas de implementaci�on de los lenguajes de pro-

gramaci�on l�ogica y funcional pura, si se toma como base una sem�antica operacional

adecuada. Sin embargo, las t�ecnicas avanzadas de compilaci�on, que dependen del

an�alisis global del programa, requieren el desarrollo de nuevos m�etodos de an�ali-

sis para programas l�ogico{funcionales [Han94b]. Sin pretender ser exhaustivos, al-

gunos de los principales trabajos en este campo se han centrado en los siguientes

puntos: an�alisis de la insatisfacibilidad ecuacional [AFM95, BE�93], an�alisis de

modos [BPM93, Han94c, HZ94], an�alisis de la [Boy93, HL96], an�alisis

de la demanda [MKM 93], an�alisis para la identi�caci�on del paralelismo impl��cito

[SR92, SR93], an�alisis para la detecci�on de computaciones deterministas [BPM93],

etc.

La transformaci�on autom�atica de programas es un m�etodo para derivar programas

correctos y e�cientes. Por transformaci�on de programas entendemos el problema de,

dado un programa , generar un programa que resuelve el mismo problema y es

sem�anticamente equivalente a , pero goza de un mejor comportamiento respecto

a cierto criterio de evaluaci�on [BC93]. La EP es una t�ecnica de transformaci�on de

programas que consiste en la especializaci�on de programas respecto a ciertos datos de

entrada, conocidos en tiempo de compilaci�on [Fut71]. El programa resultante puede

ser ejecutado m�as e�cientemente ya que, usando el conjunto de datos (parcialmente)

conocidos, es posible evitar algunas computaciones en tiempo de ejecuci�on que se

realizar�an, una �unica vez, durante el proceso de compilaci�on. En general, las t�ecnicas

de EP deben incluir alg�un criterio de parada para garantizar la terminaci�on del proceso

[MG94].

La EP ha sido aplicada intensivamente en el campo de la programaci�on funcional

(ver [JGS93, SS88] para una lista extensa de referencias). Comenzando por el tra-

bajo de Komorowski [Kom82], la EP tambi�en ha atraido un inter�es considerable en

el campo de la programaci�on l�ogica, donde se la conoce generalmente como deduc-

ci�on parcial. Las transformaciones de plegado y desplegado, de�nidas por Burstall y

Darlington en [BD77] para programas funcionales, son explotadas en mayor o menor

medida por las distintas t�ecnicas de EP. El desplegado consiste en el reemplazamiento

narrowing

narrowing

1.3 Objetivo de la Tesis

1.3. OBJETIVO DE LA TESIS 5

de una llamada a funci�on por su respectiva de�nici�on (aplicando la correspondiente

sustituci�on). El plegado es la transformaci�on inversa, es decir, el reemplazamiento de

cierto fragmento de c�odigo por la correspondiente llamada a funci�on. Para programas

funcionales, los pasos de plegado y desplegado s�olo involucran emparejamiento. La

aproximaci�on basada en la transformaci�on de plegado/desplegado fue adaptada a la

programaci�on l�ogica por Tamaki y Sato [TS84], reemplazando emparejamiento por

uni�caci�on en las reglas de transformaci�on. El desplegado de un programa l�ogico

consiste, por tanto, en aplicar un paso de resoluci�on a un subobjetivo en el cuerpo de

una cl�ausula de todas las formas posibles. Gracias al mecanismo de uni�caci�on, la EP

de programas l�ogicos es tambi�en capaz de propagar informaci�on sint�actica sobre los

datos de entrada, tal como la estructura de los t�erminos, y no s�olo valores constantes,

haciendo as�� la EP de los programas l�ogicos m�as potente y efectiva que la EP de

los programas funcionales. En [LS91] se presentan los fundamentos de la deducci�on

parcial en un marco formal. Para programas l�ogicos de�nidos, Lloyd y Shepherdson

han demostrado que la deducci�on parcial es siempre correcta, pero no necesariamente

completa. La completitud se puede establecer usando alguna condici�on que garan-

tice que todas las llamadas que pueden ocurrir durante la ejecuci�on del programa

transformado est�an cubiertas por alguna cl�ausula del mismo.

No existen en la literatura muchos trabajos relacionados con la especializaci�on

de programas l�ogico{funcionales. Hemos encontrado, sin embargo, dos excepciones

notables. En [LS75], Levi y Sirovich de�nen un procedimiento de EP para el lenguaje

funcional TEL, usando un mecanismo de ejecuci�on simb�olica basado en uni�caci�on

que puede llegar a entenderse como una forma de perezoso. En [DP88a],

Darlington y Pull muestran c�omo la uni�caci�on permite integrar los pasos de des-

plegado e instanciaci�on (introducidos en el marco de transformaci�on de programas

de�nido en [BD77]), obteniendo as�� la habilidad de para tratar con va-

riables l�ogicas. Tambi�en se esboza un evaluador parcial para el lenguaje funcional

HOPE (extendido con uni�caci�on). Sin embargo, en ninguno de estos trabajos se han

abordado cuestiones de control, terminaci�on o equivalencia sem�antica. Otro ejemplo

del uso de uni�caci�on en la t�ecnica de desplegado se puede encontrar en [DR93], donde

se utiliza para formular una aproximaci�on a la s��ntesis de programas funcionales.

Para que una aproximaci�on al an�alisis y transformaci�on de programas resulte simple

y, a la vez, bien fundamentada, �esta debe basarse en la sem�antica formal del lengua-

je. Dado que la sem�antica de los lenguajes l�ogico{funcionales ha sido ampliamente

estudiada, surge el inter�es por el desarrollo de t�ecnicas de an�alisis y transformaci�on

basadas en la sem�antica. Esta tesis se enmarca en este �ambito y su objetivo se centra

CAP��TULO 1. INTRODUCCI

ON

1.4 Organizaci�on de la Memoria

narrowing

groundness

narrowing

narrowing

narrowing narrowing narrowing

narrowing

narrowing

narrowing

narrowing

6

en los siguientes puntos:

Desarrollar un marco gen�erico para el an�alisis est�atico de programas l�ogico{

funcionales. El esquema debe ser independiente de la estrategia de ,

con el �n de poderse utilizar para distintos lenguajes. As��mismo, el an�alisis

debe ser de prop�osito general, para poder estudiar distintas caracter��sticas (e.g.

insatisfacibilidad, , respuestas parciales, enlaces de variables, etc.), y

f�acilmente implementable sobre los sistemas existentes.

Establecer fundamentos para las t�ecnicas de evaluaci�on parcial de programas

l�ogico{funcionales. Estas t�ecnicas han demostrado su e�cacia en la optimiza-

ci�on de los lenguajes l�ogicos y funcionales puros, y pueden aportar tambi�en

resultados interesantes en el campo de la integraci�on de ambos paradigmas. Las

t�ecnicas de transformaci�on de programas deben estar basadas en la sem�antica

del lenguaje, preservar la sem�antica del programa original y asegurar la termi-

naci�on del proceso sin la intervenci�on del usuario.

Este documento se organiza como sigue.

En el Cap��tulo 2, hemos agrupado los principales conceptos t�ecnicos que se utili-

zan en el resto de la memoria. Empezamos presentando el lenguaje de los sistemas de

reescritura de t�erminos condicionales. Se introduce tambi�en un c�alculo de

condicional gen�erico, que admite como par�ametro distintas estrategias de .

A continuaci�on, describimos como instancias de dicho c�alculo algunas de las relaciones

de m�as representativas: condicional b�asico, condicio-

nal \innermost" y perezoso (adem�as, obviamente, del propio c�alculo de

condicional original). Adelantamos aqu�� que muchos de los resultados en

este trabajo se presentan para la relaci�on de gen�erico con estrategia, con

la idea de dar mayor generalidad a los resultados.

La composicionalidad es una propiedad deseable que se ha reconocido como funda-

mental en la sem�antica de los lenguajes de programaci�on, al permitir explotar distintas

extensiones y optimizaciones para el lenguaje [GL91]. Concretamente, la composicio-

nalidad AND establece la posibilidad de computar el signi�cado de un objetivo a

partir del de los elementos individuales que lo integran. Esta propiedad es imprescin-

dible, por tanto, para el desarrollo de t�ecnicas de an�alisis y transformaci�on e�cientes

basadas en la sem�antica del lenguaje. En el Cap��tulo 3, se presentan algunas pro-

piedades de composicionalidad de la sem�antica basada en . Mostramos un

primer resultado que sirve para cualquier estrategia, y se basa en una noci�on sem�anti-

ca de composici�on paralela de respuestas. A continuaci�on demostramos que, para

1.4. ORGANIZACI

ON DE LA MEMORIA

narrowing

narrowing

narrowing

narrowing

narrowing

narrowing

narrowing

narrower

narrowing

narrowing

7

aquellas estrategias de que sean \independientes del entorno", se cumple

un resultado de composicionalidad para la correspondiente sem�antica que hace uso

de un operador meramente sint�actico de composici�on paralela. Intuitivamente, una

estrategia de se considera independiente del entorno, cuando las sustitucio-

nes computadas en la resoluci�on de una ecuaci�on del objetivo, s�olo pueden introducir

nuevas ocurrencias explotables en la propia ecuaci�on o en sus descendientes (nunca

en el resto de ecuaciones). Las estrategias b�asica, \innermost" y perezosa satisfa-

cen esta condici�on. Tambi�en mostramos c�omo obtener una versi�on composicional del

c�alculo de condicional que puede servir, por ejemplo, como base para una

implementaci�on paralela del lenguaje.

En el Cap��tulo 4, desarrollamos un marco para el an�alisis de programas que hace

uso de una relaci�on de aproximado, formalizada en el marco de la teor��a de

la interpretaci�on abstracta. La relaci�on de abstracto permite obtener una

aproximaci�on, correcta y �nita, del conjunto de �exitos (respuestas computadas) de

un programa l�ogico-funcional. El esquema se parametriza mediante la estrategia de

usada y la funci�on de aproximaci�on que construye los programas abstrac-

tos a partir de los concretos. Demostramos la correcci�on y terminaci�on del an�alisis

independientemente de la estrategia de empleada, siempre que �esta sea

independiente del entorno y el programa abstracto no permita computaciones in�ni-

tas. Presentamos un m�etodo general para aproximar el programa que garantiza la

terminaci�on del an�alisis, y se presentan algunas instancias de dicho m�etodo. Por otro

lado, y siguiendo unas l��neas similares a las del Cap��tulo 3, demostramos la compo-

sicionalidad del c�alculo abstracto (para el mismo tipo de estrategias) y presentamos

una caracterizaci�on composicional del mismo.

En el Cap��tulo 5, investigamos varias aplicaciones de la t�ecnica de an�alisis forma-

lizada en el cap��tulo anterior. Concretamente, mostramos c�omo el conjunto de �exitos

abstracto recogido por el an�alisis permite guiar las computaciones de un

concreto. De esta forma, se obtiene un espacio de derivaciones de que

terminan m�as a menudo que las del c�alculo original, sin p�erdida de completitud. A

continuaci�on, mostramos c�omo incorporar, en el marco de un lenguaje con restriccio-

nes ecuacionales, distintas optimizaciones en el mecanismo de comprobaci�on de las

restricciones. Por �ultimo, formalizamos un an�alisis simple que nos permite, a partir

de la sem�antica abstracta de un objetivo, extraer informaci�on precisa acerca de los

enlaces de sus variables en las derivaciones de �exito.

En el Cap��tulo 6, revisamos algunas de las propuestas para la evaluaci�on par-

cial de programas l�ogicos y funcionales, y formulamos los conceptos b�asicos de una

propuesta integrada. As��, de�nimos una extensi�on apropiada (usando ) de

los conceptos de \resultante", \evaluaci�on parcial", \cierre" e \independencia", usa-

dos en la formalizaci�on de la evaluaci�on (deducci�on) parcial de los programas l�ogicos

Resumen de Aportaciones

CAP��TULO 1. INTRODUCCI

ON

Composicionalidad de la sem�antica

An�alisis est�atico

narrowing

narrowing

narrowing narrowing narro-

wing

strong completeness

narro-

wing

observable

narrowing

8

tradicionales. Establecemos una serie de resultados t�ecnicos sobre la transformaci�on

de�nida y demostramos, bajo las condiciones de cierre e independencia introducidas,

la correcci�on y completitud de nuestra propuesta.

En el Cap��tulo 7, se aborda la construcci�on de un m�etodo autom�atico para la eva-

luaci�on parcial de programas l�ogico{funcionales, basado en los conceptos introducidos

en el cap��tulo anterior. El esquema resultante es param�etrico respecto a la estrategia

de usada, la regla de desplegado adoptada y un operador de abstracci�on.

Presentamos a continuaci�on una instancia del m�etodo, en la que �jamos una regla de

desplegado y un operador de abstracci�on que garantizan la terminaci�on del proceso de

manera autom�atica. Ilustramos la efectividad del m�etodo de�nido mediante algunos

ejemplos representativos. Finalmente, comentamos las principales l��neas de trabajo

futuro.

Terminamos esta introducci�on con un breve resumen de las principales aportaciones

de esta tesis. Indicamos tambi�en las publicaciones m�as relevantes a las que ha dado

lugar cada parte del trabajo.

. En primer lugar, se muestra que, bajo la

condici�on de independencia del entorno, es posible establecer la propiedad de

composicionalidad AND de una sem�antica basada en condicional.

Este resultado establece, en particular, la composicionalidad de las estrategias

de condicional b�asico, condicional \innermost" y

perezoso. En segundo lugar, se demuestra la propiedad de completitud

fuerte ( ) de dichas estrategias, como una consecuencia de la

composicionalidad. Por �ultimo, y para aquellas relaciones con la propiedad de

composicionalidad AND, se muestra c�omo se puede de�nir un c�alculo de

composicional, sem�anticamente equivalente al original, que puede servir

como base para una implementaci�on paralela del lenguaje. (El n�ucleo de estos

trabajos ha sido publicado en [AFV94, AFV96a].)

. Se de�ne un an�alisis est�atico de programas l�ogico-funcionales

que permite obtener una aproximaci�on �nita del comportamiento operacional

del programa, entendido en t�erminos de un basado en el conjunto de

las respuestas computadas. El an�alisis se de�ne de manera param�etrica respecto

a la estrategia de y una versi�on \abstracta" del programa (que debe

garantizar la terminaci�on del an�alisis). Se presenta un m�etodo general para ob-

tener una aproximaci�on correcta del programa, basado en el uso del concepto de

\grafo de prevenci�on de bucles", cuya informaci�on permite eliminar del progra-

ma aquellos t�erminos que pueden provocar derivaciones in�nitas. Este m�etodo

1.4. ORGANIZACI

ON DE LA MEMORIA

narrowing

narrowing narrowing narrowing

narrowingOptimizaciones del narrowing

Resoluci�on perezosa

Transformaci�on de programas

9

asegura, adem�as, la terminaci�on del an�alisis. Tambi�en presentamos algunas po-

sibles instancias del mismo. Por �ultimo, se muestra la correcci�on del an�alisis

resultante para las estrategias de independientes del entorno, e.g.

condicional b�asico, condicional \innermost" y

perezoso. (Parte de este trabajo ha sido publicado en [AFV94, AFV96a].)

. Se formaliza una relaci�on de re�nado

que permite eliminar, en base a la informaci�on del an�alisis, algunas derivacio-

nes redundantes. De esta forma, se consigue asegurar la terminaci�on en un

mayor n�umero de casos. (Parte de este trabajo fue presentado en [AFRV93a,

AFRV93b].)

. Extendemos los resultados de composicionalidad a la se-

m�antica abstracta, lo que nos permite de�nir an�alisis que incorporan a la vez

composicionalidad e incrementalidad. Estos resultados se aplican a la cons-

trucci�on de un mecanismo de resoluci�on perezosa incremental para lenguajes

l�ogicos con restricciones ecuacionales. (Parte de este trabajo fue presentado en

[AFV93].)

. Se de�nen los fundamentos de las t�ecnicas de

evaluaci�on parcial en el marco de los lenguajes l�ogico{funcionales y se establece,

bajo las condiciones de cierre e independencia, la correcci�on y completitud de la

transformaci�on. As��mismo, formulamos un m�etodo gen�erico y autom�atico para

la especializaci�on de programas, y presentamos una instancia del mismo que

garantiza la terminaci�on del proceso. (Parte de este trabajo ha sido publicado

en [AFV95, AFV96b, AFJV96a].)

T � [

[

2 [

T�erminos

Cap��tulo 2

Preliminares

2.1 Conceptos B�asicos

narrowing

narrowing

narrowing

b�asicos

V

f=n n � V �

V

true

s t s; t � V

true

depth

depth t t depth t

En este cap��tulo revisamos los conceptos fundamentales de la programaci�on l�ogico-

funcional que se necesitan en la tesis. Tras introducir una serie de nociones prelimina-

res en la Secci�on 2.1, se introduce, en la Secci�on 2.2, el algoritmo de condi-

cional, el mecanismo de ejecuci�on est�andar b�asico para programas l�ogico-funcionales.

En la Secci�on 2.3, se introduce un procedimiento de gen�erico, que se para-

metriza usando distintas estrategias de reducci�on, y se presentan varios re�namientos

del formalizados como instancias del mismo. Las cuestiones m�as espec���cas,

referentes al an�alisis sem�antico o a la transformaci�on de programas ser�an introducidas,

posteriormente, al principio del cap��tulo correspondiente. Para un mayor detalle sobre

los conceptos introducidos en este cap��tulo, se puede consultar [DJ90, H�ol89, Klo92].

Denotamos por un conjunto in�nito (numerable) de variables y por � un conjunto

de s��mbolos de funci�on , cada uno con una aridad asociada. (� ) y (�)

denotan, respectivamente, el conjunto de t�erminos y t�erminos (sin variables)

construidos sobre � y �, respectivamente. Asumimos que el alfabeto � puede

contener algunos s��mbolos primitivos, incluyendo al menos el constructor y un

s��mbolo de funci�on binario = para representar la igualdad, escrito en notaci�on in�ja,

que nos permite interpretar las ecuaciones = como t�erminos, con (� ).

El t�ermino se considera tambi�en una ecuaci�on.

Los t�erminos se pueden ver como �arboles etiquetados de la forma habitual. Usa-

mos la funci�on est�andar para denotar la m�axima profundidad de un t�ermi-

no. As��, ( ) = 1 si es una constante o una variable, y ( ) = 1 +

11

1 1

1

j

j

0 0

0 0

n n

V

Vu

uu

n i

f g

� f j 2 g

� , )

pre�jo

no variables

CAP��TULO 2. PRELIMINARES

Ecuaciones, Sustituciones y Uni�cadores Sint�acticos

max depth t ; : : : ; depth t t f t ; : : : ; t n >

t

t

u v w uw v

O t t O t

t O t

t O t O t O t t

u t t u

t t s t

u s

g e ; : : : ; e O g i:u u O e ; i ; : : : ; n

V ar o

o

Eqn

Eqn

fail

fail

true

Eqn Eqn;

E E E E

E E E E

Eqn true

fail Eqn

12

( ( ) ( ) ) si es de la forma ( ), 0. Las ocurren-

cias de un t�ermino se representan por secuencias (posiblemente vac��as) de n�umeros

naturales que sirven para indicar los subt�erminos de . Las ocurrencias est�an orde-

nadas por el orden : si existe tal que = . Denotamos por � la

secuencia vac��a. ( ) denota el conjunto de ocurrencias de un t�ermino .

( ) denota

el conjunto de ocurrencias de un t�ermino , mientras que ( ) denota

el conjunto de ocurrencias variables de (i.e. ( ) = ( )

( )). denota el

subt�ermino a la ocurrencia de , mientras que [ ] denota el s��mbolo de funci�on que

etiqueta el subt�ermino . [ ] denota el t�ermino cuyo subt�ermino a la ocurrencia

ha sido reemplazado por . Estas nociones se pueden extender a secuencias de ecua-

ciones de forma natural. Por ejemplo, el conjunto de ocurrencias de una secuencia de

ecuaciones ( ) se de�ne como: ( ) = ( ) = 1 .

La identidad entre objetos sint�acticos se denota usando el s��mbolo . ( )

denota el conjunto de variables (distintas) que aparecen en el objeto sint�actico .

Usamos la aproximaci�on de [Mah90] para describir el ret��culo de los conjuntos (�ni-

tos) de ecuaciones. Denotamos por el dominio formado por los conjuntos �nitos

de ecuaciones sobre t�erminos, posiblemente cuanti�cados existencialmente. Los ele-

mentos de se interpretan como conjunciones (cuanti�cadas) de ecuaciones y se

tratan m�odulo equivalencia l�ogica. Denotamos por cualquier conjunto insatisfa-

cible de ecuaciones, es decir, implica a cualquier otro conjunto de ecuaciones. De

forma an�aloga, el conjunto vac��o de ecuaciones, denotado por , viene implicado

por todos los elementos de . Denotamos el ret��culo de ecuaciones por ( ),

donde:

es decir, es una generalizaci�on de sii implica l�ogicamente a .

De esta forma, es un ret��culo ordenado por cuyo menor elemento es y

cuyo mayor elemento es . N�otese que, al considerar los elementos de m�odulo

equivalencia l�ogica, el preorden se extiende como un orden parcial sobre el ret��culo.

Es importante destacar que, cuando tratamos con la sem�antica operacional con-

creta, no necesitamos usar variables cuanti�cadas existencialmente, es decir, todas las

ecuaciones se pueden considerar como no cuanti�cadas. En la sem�antica abstracta,

nuestro algoritmo reemplaza algunos de los t�erminos del programa por un s��mbolo

especial que, desde el punto de vista l�ogico, equivale a una variable cuanti�cada exis-

tencialmente. Por tanto, ser�a s�olo cuando discutamos la relaci�on entre la sem�antica

operacional concreta y su contrapartida abstracta cuando ser�a necesario considerar

conjuntos de ecuaciones cuanti�cadas.

j

b

b

b

b

b

b

2.1. CONCEPTOS B

ASICOS

1 1 1

1 1 1 1

1 1 1 1

1 1 1

1 1

1 1

?

1

1

m n n i

i i

j

n n n n

n n n n

W

n n n

n n

n n

n

n i i

9 9 f g

9 f g f g 9 f g

[

f g f g

� f g f g

f g [ [

� � 9 �

� )

f g

f g )

f g 6�

h f gi

f g

h i

h i h i

forma resuelta

sustituci�on vac��a

uni�cador

uni�cador m�as general

generalizaci�on m�as espec���ca

fail

y : : : y : x t ; : : : ; x t x

t y

t

solve E

E

x: x f y ; z y z y y: x f y ; z y

� V

Sub

x =t ; : : : ; x =t � x t ; : : : ; x t

E x t ; : : : ; x t sub E x =t ; : : : ; x =t

V �

� W V �

� Dom � W

Ran � � �

x =t ; : : : ; x =t Ran � V ar t : : : V ar t

� � : � �

� � � �

� �

Sub; Sub

x =t ; : : : ; x =t

E x t ; : : : ; x t E

� E E � E

unif E mgu E

E fail

mgu E E

s t

s t mgu s t fail

t; � ; : : : ; �

t ; : : : ; t i ; : : : ; n t t �

t; msg

S t; msg S t;

13

Decimos que un conjunto de ecuaciones est�a en si es o si

tiene la forma = = , donde cada es una variable

distinta que no ocurre en ninguno de los t�erminos , y cada ocurre en alguno

de los t�erminos . Todo conjunto de ecuaciones tiene al menos una forma resuelta

equivalente (l�ogicamente). Denotamos por ( ) una funci�on no determinista que

obtiene una de tales formas resueltas de . Por ejemplo, una forma resuelta de

= ( ) = es = , mientras que = ( ) = est�a en forma

resuelta.

Restringimos nuestro inter�es a las sustituciones idempotentes sobre (� ), y

denotamos dicho dominio por . Existe un isomor�smo natural entre sustituciones

y ecuaciones no cuanti�cadas. La representaci�on ecuacional de una sustituci�on

es el conjunto de ecuaciones = = = . De

forma an�aloga, la sustituci�on asociada a un conjunto de ecuaciones en forma resuelta

= = se denota por ( ) = . La funci�on

identidad sobre se conoce como y la denotamos por .

Dada una sustituci�on y un conjunto de variables , denotamos por

la sustituci�on obtenida de restringiendo su dominio ( ) a las variables de .

Denotamos por ( ) las variables que aparecen en el rango de , i.e. si =

, entonces ( ) = ( ) ( ). Consideramos el

preorden habitual entre sustituciones: sii . Es importante

destacar la equivalencia entre este preorden y la implicaci�on l�ogica: sii

(i.e. ) [Pal90]. De la misma forma que en el caso anterior, podemos considerar

el ret��culo ( ), en el que los elementos de se consideran m�odulo equivalencia

l�ogica y la relaci�on es, por tanto, un orden parcial sobre las clases de equivalencia

de sustituciones.

Una sustituci�on se denomina un del conjunto de

ecuaciones sii = = . Usando el orden entre ecuaciones,

es un uni�cador de sii . Denotamos el conjunto de uni�cadores de

por ( ), mientras que ( ) denota el del conjunto de

ecuaciones no cuanti�cado . Abusando de la notaci�on, usaremos para denotar el

fallo en la computaci�on del ( ) (i.e. el hecho de que es insatisfacible). Mientras

que para cualquier conjunto de ecuaciones no cuanti�cado existe un uni�cador m�as

general [LMM88], esto no es cierto en general para el caso de conjuntos de ecuaciones

cuanti�cados [Mah90]. Escribimos = para denotar la propiedad de que los t�erminos

y uni�can sint�acticamente (i.e. ( = ) ).

Decimos que el par es una generalizaci�on de un conjunto no vac��o

de t�erminos si, para todo = 1 , se cumple = . Decimos que

el par � es la ( , \most speci�c generalization"

[LMM88]) de un conjunto de t�erminos , y lo denotamos � = ( ) si 1) �

1

2

1

1

1

2

1 1

n i

n

n n

uu

i i i i i

0 0

0

R

j

R

R

R

R

R

Programas y Objetivos

CAP��TULO 2. PRELIMINARES

h i

E

( �

(

R R

! ( 2 [ 62

[ �

!

R R

R

R �

! ! ( 2 R

2

! ! !

!

R !

programa objetivo

objetivo

ecuacional

conjuntos

secuencias

sistema de reescritura de t�erminos condicional

variables extra

reescribe

Es decir, trabajamos con SRTC's de tipo 1 en la terminolog��a de [MH94].

Si no se indica lo contrario, suponemos que los programas no contienen variables extra.

S t ; S

t t

e e ; : : : ; e n e; e ; i ; : : : ; n

Goal

g g

Eqn Goal

Eqn

Goal

Goal;

;

� � C �; � � V � V

V ar � V ar C V ar � C

e ; : : : ; e n C �

� �

;

; Srtc;

s t

s t � � s t ; : : : ; s t

u O s � s �� t s ��

i ; : : : ; n q s � q t � q

14

es una generalizaci�on de , y 2) para toda generalizaci�on � de se cumple que

es m�as general que .

De�nimos ahora el concepto de y l�ogico-funcional. Informalmente,

presentamos un programa l�ogico-funcional mediante un conjunto de cl�ausulas de Horn

ecuacionales o, de forma equivalente, mediante un sistema de reescritura de t�erminos

condicional.

Una teor��a de Horn ecuacional consiste de un conjunto �nito de cl�ausulas de la

forma , 0, donde = 1 , son ecuaciones. Un

es una cl�ausula de Horn ecuacional sin cabeza o, equivalentemente, una

secuencia de ecuaciones. Denotamos por el conjunto de objetivos ecuacionales

que, en lo que sigue, denotamos simplemente por .

Es importante clari�car la relaci�on existente entre los dominios y . La

diferencia est�a en que los elementos de son de ecuaciones (posiblemente

cuanti�cados existencialmente) mientras que los elementos de son de

ecuaciones (sin cuanti�car). Esta distinci�on facilita la manipulaci�on sint�actica de los

objetivos, pero no la tendremos en cuenta cuando no haya necesidad. Denotamos por

( ) el dominio de los objetivos ecuacionales ordenado por el orden implicativo

.

Un (SRTC en lo sucesivo) es un

par (� ), donde es un conjunto �nito de (esquemas de) reglas de reescritura (o

reglas de reducci�on) de la forma ( ), donde (� ), y

( ) ( ) ( ) . La condici�on es una secuencia (posiblemente vac��a)

de ecuaciones , 0. Cuando existen variables en que no aparecen en ,

�estas reciben el nombre de . Cuando una regla de reescritura no posee

condici�on, escribimos simplemente ( ). Cuando las condiciones de todas las

reglas de son vac��as, decimos que (� ) es un sistema de reescritura de t�erminos

incondicional (SRT en lo sucesivo). Escribiremos a menudo simplemente en lugar

de (� ) para denotar un SRTC. Denotamos por ( ) el dominio de los sistemas

de reescritura condicionales, ordenado por la relaci�on de inclusi�on de conjuntos.

Un t�ermino se (condicionalmente) a un t�ermino , y lo denotamos

por , si existe una regla ( = = ) , una

ocurrencia ( ), una sustituci�on tal que = , = [ ] y, para todo

= 1 , existe un t�ermino tal que y , donde denota

el cierre re exivo y transitivo de la relaci�on . Cuando no haya lugar a confusi�on,

omitiremos el sub��ndice de la relaci�on de reescritura .

U

0

+1

i

n

n

n

n

n

n

i

uu

u

0 1

1 2 1 2

1 2

1

1

0

2.1. CONCEPTOS B

ASICOS

R

R R

R

R

R

R

R

R � R

R

R

0

j

0

R

0 0

R

R

R

R

R

j

!

#

2 R

! ! R

! ! #

! ! R

E R

(

62 [ [ [ �

E

R

R 2

! ( 2 R

C F C

F

!

E

! [ f! g

! ;

! ! ( 2 R 2

# 2

! �

!

R !

!

!

� � 2 � f g

s t s t

s s �

x� x Dom �

s s : : :

s s t s t t t

t t t t t

s t e ; : : : ; e

s V V ar t V ar e : : : V ar e V ar s

f

� � C f �

f

t t � � C u O t

� t ��; t t �� s� s � s s C

n

n

t t u O t

forma normal

normalizada

noetheriano

con uente

can�onico

irreducible

de�nido

constructores

can�onico por niveles

con uente por niveles

decrecientes

propiedad de subt�ermino

15

Un t�ermino est�a en si no existe ning�un t�ermino tal que .

Denotamos por la forma normal de . Una sustituci�on se dice si

est�a en forma normal para todo ( ). Un SRTC se dice

cuando no existe una secuencia in�nita de t�erminos de la forma ;

se dice si para todo t�ermino tal que y , entonces

(i.e. existe un t�ermino tal que y ). Un SRTC noetheriano y

con uente se denomina o completo.

Una teor��a de Horn ecuacional se puede ver como un SRTC cuando, para

cada una de sus cl�ausulas = , se cumplen las siguientes condiciones:

y ( ) ( ) ( ) ( ). En este caso, las reglas son

las cabezas de las cl�ausulas (impl��citamente orientadas de izquierda a derecha) y las

condiciones son los respectivos cuerpos. Asumimos que estas condiciones se cumplen

para todas las teor��as ecuacionales que se consideran en este trabajo y, por tanto,

hablaremos indistintamente de una teor��a de Horn ecuacional o de su presentaci�on

equivalente como un SRTC .

Dado un SRTC , un s��mbolo de funci�on � se dice sii no existe

ninguna regla ( ) tal que ocurra como s��mbolo m�as externo de .

En caso contrario, se denomina un s��mbolo de funci�on . En los sistemas en

los que se considera la anterior distinci�on, la signatura � se encuentra dividida de la

forma � = , donde es el conjunto de s��mbolos de funci�on irreducibles (a veces

llamados ) y es el conjunto de s��mbolos de funci�on de�nidos.

Un tipo importante de teor��as de Horn ecuacionales son aqu�ellas que pueden ser

representadas mediante un SRTC [GM86, MH94]. Sea la

relaci�on de reescritura condicional asociada a la teor��a de Horn ecuacional . Entonces

es equivalente a , donde:

1. = ; y

2. sii existe una regla ( ) , una ocurrencia ( ) y una

sustituci�on tal que = = [ ] y para todo ( = ) .

La relaci�on se dice [GM86] si, para todo 0, la relaci�on

es con uente. Existen condiciones sint�acticas para asegurar la propiedad de

con uencia por niveles [GM86]. Obviamente, la propiedad de con uencia por niveles

implica con uencia. Decimos que es can�onico por niveles si es con uente por

niveles y noetheriano. Esto es equivalente a decir que es can�onico, para todo

0.

Otra clase importante de sistemas de reescritura son los llamados .

Decimos que un SRTC es decreciente si existe una extensi�on bien fundada de la

relaci�on de reescritura con las siguientes propiedades:

1. cumple la , i.e. para todo ( ) � , y

E

E

E

E

E E

0 0

0

E E

0

E

E

E

CAP��TULO 2. PRELIMINARES

Uni�cadores Sem�anticos ( -uni�cadores)

! ( 2 R �

2 � �

E

E

E [

E j

E E

E E

E

2 E j

E

E

� E

8 2

E

� 9

E U E

E

E E

E

2 E

U E

E

E

E

E

� � C � �� ��

s t C �� s� �� t�

� V

E �

s t E s� t� s� t�

� E

W V

� � W x� x� x W W

V � � �

� W � � W : � � W

E

E E

S E

� E � � V ar E

� S

� E

E

soluciones

-igualdad

-uni�cable

soluci�on

-instancia

pro-

blema de -uni�caci�on

completo

narrowing

16

2. si ( ) y es una sustituci�on, entonces y, para todo

= , y .

Cerramos esta primera secci�on de conceptos b�asicos introduciendo qu�e consideramos

como las de un objetivo con respecto a un programa.

Cada teor��a de Horn ecuacional genera una relaci�on de congruencia m�as peque~na

= , llamada , sobre el conjunto de t�erminos (� ) (la menor teor��a

ecuacional que contiene todas las consecuencias l�ogicas de bajo la relaci�on = y

obedece los axiomas de la igualdad para ). se puede ver como una presentaci�on

o axiomatizaci�on de = . Abusando de la notaci�on, en ocasiones hablaremos de la

teor��a ecuacional para denotar la teor��a = axiomatizada por . Dado un conjunto

de ecuaciones , decimos que es sii existe una sustituci�on tal que, para

toda ecuaci�on ( = ) , se cumple = , i.e. = ( = ). La sustituci�on

se denomina un -uni�cador de (por abuso de notaci�on, a menudo se denomina

simplemente ). El proceso de -uni�caci�on es s�olo semidecidible.

Dado un conjunto de variables , la -igualdad se extiende a sustituciones

de la forma est�andar: = [ ] sii = , . se omitir�a cuando sea

igual a . Decimos que es una de (y, por tanto, que es m�as general

que ) bajo , y lo denotamos por [ ], sii = [ ].

Un conjunto de ecuaciones junto con una teor��a ecuacional forman un

. El conjunto ( ) de todos los -uni�cadores de es re-

cursivamente enumerable [GR89, H�ol89, Sie89]. Para problemas de -uni�caci�on, la

noci�on de uni�cador m�as general se extiende a conjuntos completos y minimales de

-uni�cadores. Un conjunto de -uni�cadores de un conjunto de ecuaciones se

dice sii todo -uni�cador de se puede factorizar como = [ ( )],

donde . Un conjunto completo de -uni�cadores de un sistema de ecuaciones

puede ser in�nito. No siempre existe un conjunto completo y minimal ( ) de -

uni�cadores de . Un procedimiento de -uni�caci�on se considera completo si genera

un conjunto completo de -uni�cadores para todo sistema de entrada. M�as a�un, la

-uni�caci�on es un problema computacionalmente complejo, y los m�etodos generales

demasiado ine�cientes para ser considerados como base del mecanismo computacio-

nal de un lenguaje de programaci�on. Por ello, la mayor parte de las aproximaciones

adoptan alguna restricci�on sobre los programas, de modo que se pueda utilizar alg�un

procedimiento e�ciente de -uni�caci�on. Este procedimiento se basa, en la mayor par-

te de los casos, en (alguna variante de) la relaci�on de [Fay79, Lan75, Sla74].

3

; ; ;

; ;

Ejemplo 1

narrowing

1

[ ] [ ]

3

( ) ( )

R

!

2

!

R

R

!

!

f g

0

j

0

!

0 0 0

f g f g

n

u

u

u;� �;� u;��

x=dec z z=s y

2.2 Narrowing Condicional

2.2. NARROWING CONDICIONAL

f t ; : : : ; t � � �

t

t

u t u O t

� �

� mgu t �

t t � �

t t t t t t

inc x s x

dec s y y

inc dec z

inc dec z s dec z s y

z=s y

dec z

En este ejemplo, y en el resto del trabajo, se utilizar�a la convenci�on de subrayar los subt�erminos

considerados para realizar el correspondiente paso de .

narrowing

narrowing

narrowing

narrowing

Dado el programa no condicional :

se puede construir la siguiente secuencia de pasos de narrowing para el t�ermino

:

con sustituci�on asociada . N�otese que esta secuencia de reducciones no pue-

de obtenerse usando reescritura, ya que la expresi�on no empareja con (no es

instancia de) la parte izquierda de ninguna regla.

17

En el punto anterior hemos de�nido las nociones de programa, objetivo y soluci�on.

Veamos ahora cu�al es el mecanismo de computaci�on asociado al lenguaje que nos

permite obtener las soluciones para un programa y un objetivo dados.

Consideramos inicialmente un programa no condicional . Si queremos evaluar

una funci�on cuyos argumentos son b�asicos, basta emparejar la llamada a funci�on

( ) con la parte izquierda de alguna regla ( ) del programa, realizando

una secuencia de pasos de reescritura. Por otro lado, si tenemos una llamada a

funci�on cuyos argumentos contienen variables, entonces generalmente es necesario

instanciar estas variables a los t�erminos apropiados para poder aplicar un paso de

reescritura. Esto se puede llevar a cabo usando uni�caci�on en lugar de emparejamiento

en el paso de reescritura, y recibe el nombre de [Fay79, Lan75, Sla74].

Informalmente, reducir por una expresi�on consiste en aplicarle la menor

sustituci�on tal que la expresi�on resultante se pueda reducir, y entonces reducirla

[Hul80]. El procedimiento de no s�olo subsume la reescritura, sino tambi�en

la resoluci�on SLD de los programas l�ogicos. Formalmente, decimos que un t�ermino

se reduce por a un t�ermino si:

1. es una ocurrencia no variable de (i.e.

( ));

2. ( ) es una variante nueva (i.e. renombrada o estandarizada aparte) de

una regla de ;

3. la sustituci�on es el de y ; y

4. = ( [ ] ) .

En este caso, escribimos , o simplemente , si queda

claro por el contexto. Veamos un ejemplo.

( ) ( )

( ( ))

( ( ))

( ( )) ( ( )) ( )

( )

( )

R

;

n1

4

[ ]

5

u;r;�

j

� 0

0

R

Rj

j

; ;

;

;

;

;

; ;

;

;

;

;

4

1 1

+

+

5

� ( )

+� ( )

u

� u

n � � n

V ar g

V ar g

CAP��TULO 2. PRELIMINARES

� � �

R

2 ^ � ! ( R ^ f g

R R

! ( R

9 9

! 2

f g R

R ! >

R

> R

R

O R

R

O f j >g

>

R

R

E

De�nici�on 2.2.1 (narrowing condicional )

De�nici�on 2.2.2 (conjunto de �exitos )

Goal; Sub; Goal Sub Goal

u O g r � � C << � mgu g �

g C; g � �

r << r r

t

� � C

� t� �� g g

� ; : : : ; � : g : : : g � � : : : �

n n � �

x x true x V

s t true � mgu s t

x x true

true; : : : ; true g

g

g

g g

g � g ;

g

g

Escribiremos cuando sea necesario distinguir la ocurrencia y la regla usadas.

Omitiremos el sub��ndice cuando el programa se pueda determinar por el contexto.

narrowing

Dado un SRTC , de�nimos la re-

laci�on de narrowing condicional como la menor relaci�on que satisface:

donde denota que es una variante nueva de una regla de , tal que no

contiene variables usadas previamente en la computaci�on (estandarizada aparte).

redex ex red narrowing

derivaci�on de narrowing

narrowing

derivaci�on de �exito

conjunto de �exitos

Dado un programa y un objetivo

ecuacional , de�nimos la sem�antica operacional (o conjunto de �exitos) de con

respecto a como sigue :

donde las derivaciones se realizan usando las reglas del programa extendido

. Las sustituciones se denominan

para en .

narrowing completo

18

Para el caso general de programas condicionales y objetivos ecuacionales, podemos

formalizar el procedimiento de condicional usando un sistema de transici�on

etiquetado [Plo81] ( ) cuya relaci�on de transici�on

formaliza los pasos de computaci�on.

( ) ( ) = ( = )

( [ ] )

Un t�ermino se denomina un ( presi�on ucible) de , si existe

una variante nueva ( ) de una regla de reescritura en y una sustituci�on

tales que . Una se de�ne como: sii

y = . Decimos que dicha derivaci�on tiene

longitud . Si = 0, entonces . Para tratar la uni�caci�on sint�actica como

un paso de , a~nadimos al SRTC la regla ( = ), . As��,

( = ) sii = ( = ). Denotamos por la extensi�on de un

SRTC con la regla ( = ). Usaremos como notaci�on gen�erica para

una secuencia de la forma . Una para en es una

derivaci�on de la forma que usa las reglas de . En la siguiente de�nici�on

formalizamos la sem�antica operacional ( ) de un objetivo ecuacional

con respecto a un programa .

( ) =

sustituciones de respuesta computada

Un algoritmo de se dice si genera un conjunto completo de

-uni�cadores para cualquier sistema de ecuaciones de entrada. Formalmente, (un

6

;

6

E

E

E j >

E �

E

g� g

� � V ar g :

� � V ar g

don't know

don't care

2.3 Estrategias de Narrowing

2.3. ESTRATEGIAS DE NARROWING

narrowing

narrowing

narrowing

redexes narrowing

narrowing

narrowing

narrowing redexes

narrowing don't

know

narrowing

redex

estrategia de narrowing

don't know don't care

narrowing

narrowing

Preservamos la terminolog��a en ingl�es para denotar los dos tipos est�andar de indeterminismo:

indeterminismo , cuando todas las opciones deben ser consideradas, e indeterminismo

, cuando basta con seleccionar una de las opciones e ignorar el resto.

19

procedimiento de) es completo para una clase de programas si se cumple

la siguiente condici�on:

si = entonces existe una derivaci�on

tal que [ ( )]

El sub��ndice puede eliminarse de la expresi�on [ ( )] cuando s�olo con-

sideremos completitud con respecto a sustituciones normalizadas [MH94]. Se ha

demostrado que el procedimiento de condicional es un algoritmo de -

uni�caci�on completo para teor��as ecuacionales que satisfacen diferentes restricciones

[Han94b, H�ol89, MH94]. Por ejemplo, lo es para programas can�onicos y tambi�en para

programas con uentes, si nos restringimos s�olo a sustituciones normalizadas.

Ya que el procedimiento de ordinario genera un enorme espacio de

b�usqueda, se han desarrollado varias estrategias para controlar la selecci�on de los

, mejorando as�� la e�ciencia de al eliminar derivaciones innecesarias,

pero sin perder la completitud del c�alculo. En la pr�oxima secci�on presentamos algunos

de los re�namientos que cobran especial inter�es en este trabajo.

La implementaci�on e�ciente del es una tarea ciertamente dif��cil pero muy

importante, en especial para �areas estrechamente relacionadas como son la progra-

maci�on algebr�aica, la programaci�on l�ogica con restricciones (CLP), o la demostraci�on

autom�atica de teoremas. Afortunadamente, algunos avances recientes han demostrado

que, con restricciones y re�namientos adecuados, puede ser implementado

tan e�cientemente como {y, para algunos problemas, incluso m�as e�cientemente que{

la resoluci�on SLD de los programas l�ogicos tradicionales [CF92, Han92].

Un componente muy importante para conseguir una implementaci�on e�ciente de

es el utilizar una estrategia de selecci�on de adecuada, ya que el

ordinario (De�nici�on 2.2.1) tiene un alto grado de indeterminismo

.

M�as concretamente, la ine�ciencia del es el resultado de la combinaci�on

de los dos grados de libertad del c�alculo: 1) la elecci�on del , y 2) la elecci�on de

la regla de reescritura. Una consiste, entonces, en sustituir

algunas elecciones por elecciones [CF92] (concretamente, las que

se relacionan con 1).

Presentamos a continuaci�on un c�alculo de gen�erico con estrategia, a

partir del cual se pueden de�nir como instancias distintos re�namientos del

;

'

[ ]

7

8

7

8

u;r

Rule

j

0

0

;

;

;

;

;

'

'

'

'

'

'

u

r ' u r

'

'

CAP��TULO 2. PRELIMINARES

!

h i � !

� �

h i

h> i

E

R

2 ^ � ! ( R ^ f g

^ ^

h i h i

De�nici�on 2.3.1 (narrowing gen�erico con estrategia )

Denotamos con el conjunto de las reglas de programa.

Escribiremos cuando sea necesario distinguir la ocurrencia y la regla usadas.

g �

g

g�

State Goal Sub

' Goal }IN

g; � O g restrict Sub Rule Sub

'

restrict

� g

State;

State State

State

g

g; �

; � �

g

u ' g r � � C << � mgu g � �

� restrict �; r g C; g � �

g; � g ; ��

' restrict

narrowing

esqueleto entorno

narrowing

redexes

narrowing

estrategia de reducci�on

redexes

fuente

Dado un SRTC ,

de�nimos la relaci�on de narrowing (condicional) gen�erico con estrategia como la

menor relaci�on que satisface :

donde denota una estrategia de narrowing cualquiera, y denota la funci�on

(dependiente de la estrategia) que restringe la sustituci�on computada, teniendo en

cuenta la regla de programa utilizada, antes de aplicarla al objetivo derivado.

20

(y, por supuesto, el propio procedimiento de ordinario). Formulamos el

c�alculo de acuerdo a la partici�on de los objetivos ecuacionales en y ,

como en la formulaci�on del b�asico de [H�ol89]. La parte esqueleto es una

secuencia de ecuaciones y la parte entorno es una sustituci�on . Las sustituciones

se van componiendo en la parte entorno, pero no siempre se aplican (completamente)

a la parte esqueleto. La idea consiste en mantener en la parte esqueleto todos los

del objetivo . Las computaciones se realizan sobre un dominio de estados

= .

La de�nici�on del gen�erico con estrategia es param�etrica con respecto

a la funci�on : ( ), que asigna a cada estado

un subconjunto de

( ), y a la funci�on : ,

que restringe las sustituciones que se aplican al objetivo derivado en cada paso. La

motivaci�on para la funci�on es permitir la explotaci�on de un subconjunto de los

del objetivo, en lugar de explotarlos todos. Por otro lado, la funci�on

se encarga de controlar c�omo transferir, dependiendo de la estrategia, t�erminos de la

parte entorno a la parte esqueleto . De esta forma, se puede reducir el espacio de

b�usqueda manteniendo, bajo diferentes condiciones, la completitud del c�alculo.

El c�alculo se de�ne como un sistema de transici�on ( ) cuya relaci�on de

transici�on formaliza los pasos de computaci�on. Dicha relaci�on

puede verse como un grafo dirigido, cuyos nodos son estados pertenecientes al dominio

. El estado inicial es el nodo y los arcos representan reducciones entre

estados. As��, una secuencia de reducciones puede verse como un camino en el grafo

comenzando en el nodo fuente. Para resolver un objetivo , el algoritmo comienza

con el estado inicial , e intenta derivar nuevos estados hasta alcanzar un estado

terminal de la forma . Cada sustituci�on de respuesta computada en un estado

terminal es un -uni�cador de .

( ) ( ) = ( ( ) = )

= ( ) = ( [ ] )

R

R

R

9

10

+

��

;

;

;

; ;

9

� ( )

+

10

R

R

j

R R

R

'

'

'

'

V ar g

'

'

'

'

h i

O R

R

O f j h i h> ig

h i h> i

R

O O O

2.3. ESTRATEGIAS DE NARROWING

De�nici�on 2.3.2 (conjunto de �exitos gen�erico )

restrict

g; � ' g

' g O g

restrict �; r � �

g

mgu

g

g '

g � g; � ; � ;

g; � ; �

'

De forma similar a la De�nici�on 2.2.2, omitiremos el sub��ndice cuando el programa est�e �jado

por el contexto.

Usamos una notaci�on com�un ( ) para denotar, de forma gen�erica, la extensi�on del programa

con las reglas de la igualdad propias de cada estrategia.

La funci�on debe asegurar que todas las ocurrencias seleccionables de un

estado (seg�un la estrategia ) se encuentran en la parte esqueleto .

narrowing

narrowing

narrowing

Dado un programa y un

objetivo ecuacional , formulamos la sem�antica operacional (o conjunto de �exitos) de

con respecto a como sigue :

en la que las derivaciones se realizan usando las reglas del programa

extendido .

narrowing

narrowing

narrowing

narrowing

narrowing

redexes

redexes

narrowing narrowing

narrowing

narrowing

redexes innermost narro-

wing narrowing

21

Informalmente, el c�alculo de condicional, presentado en la De�nici�on

2.2.1, puede verse como una instancia de esta relaci�on de gen�erico con

estrategia, cuando la estrategia de reducci�on se de�ne como ( ) =

( ) y la funci�on

de restricci�on es ( ) = . N�otese que, en este caso, las sustituciones de

la parte entorno ya se encuentran aplicadas en el esqueleto del objetivo derivado.

As��, la sustituci�on vuelve a aplicarse (por segunda vez) sobre la parte esqueleto en

el momento de calcular el nuevo . Esto, sin embargo, no plantea ning�un problema

ya que s�olo trabajamos con sustituciones idempotentes.

De�nimos a continuaci�on la sem�antica operacional (conjunto de �exitos) inducida

por la relaci�on de gen�erico con estrategia.

usando la estrategia

( ) =

En el resto del trabajo, denotaremos la relaci�on de ordinario por ,

o, simplemente, . De forma similar, la estrategia de ordinario es-

tar�a denotada por , mientras que la sem�antica operacional por ordinario

se denotar�a como , o, simplemente, .

El n�umero de re�namientos del procedimiento de que se han propuesto

en la literatura es enorme. En [Han94b], se citan hasta 18 tipos distintos de estra-

tegias de , la mayor parte de las cuales se pueden agrupar en tres clases,

dependiendo de la estrategia con que se seleccionan los del objetivo:

Sin ninguna estrategia, se deben explotar todos los del objetivo en cada

paso (e.g. ordinario [Sla74], condicional ordinario [Hus85,

Kap87]), o con alguna ligera restricci�on (e.g. b�asico [Hul80, NRS89,

R�et87], condicional b�asico [H�ol89, MH94]).

Dar prioridad a los m�as internos ( ) del objetivo (e.g.

condicional \innermost" [Fri85], condicional \innermost" b�asico

[H�ol89]).

+

'

'

R R

;

; ;

E

O O

R R[ f ! g

��

Narrowing B�asico

CAP��TULO 2. PRELIMINARES

'

' g O g

restrict �; r �:

x x true

'

g � restrict �; r �

g� g

De�nici�on 2.3.3 (narrowing condicional b�asico )

redexes outermost na-

rrowing narrowing narrowing

narrowing narrowing

narrowing

narrowing narrowing

narrowing narrowing

narrowing narrowing

b�asicas

ocurrencia b�asica

narrowing

Narrowing

narrowing

La relaci�on de narrowing

(condicional) b�asico (o, simplemente, ) se de�ne como una instancia de la

relaci�on de narrowing gen�erico, donde la estrategia adoptada es:

y la funci�on de restricci�on se de�ne como:

La sem�antica operacional asociada se denota por o, simplemente, por . Las

computaciones se realizan sobre el programa extendido .

redexes

22

Dar prioridad a los m�as externos ( ) del objetivo (e.g.

\outermost" [Ech88], \outer" [You89], perezoso

[Red85], \demand-driven" [MR92], \needed" [AEH94]).

Queremos se~nalar claramente que no todos los c�alculos de con estra-

tegia mencionados se pueden ver como instancia de nuestra de�nici�on gen�erica; pero

s�� aqu�ellos que resultan relevantes para los resultados que se desarrollar�an en esta

tesis, y que podemos entender como representantes sencillos de cada una de las estra-

tegias expuestas. En los tres apartados siguientes presentamos, como instancias de la

relaci�on de gen�erico con estrategia, las estrategias de condicional

b�asico, condicional \innermost" y condicional perezoso.

El (condicional) b�asico es una forma restringida del (condicional)

en el que s�olo se consideran para ser reducidos los t�erminos que ocupan posiciones

[Hul80, MH94]. Informalmente, una ocurrencia b�asica es una ocurrencia no

variable del objetivo inicial o una ocurrencia del objetivo correspondiente a un t�ermino

no variable que proviene de la parte derecha o del cuerpo de una regla aplicada

en un paso previo. La idea subyacente al concepto de es evitar

pasos de sobre subt�erminos que hayan sido introducidos por instanciaci�on.

condicional b�asico es un algoritmo completo de -uni�caci�on para teor��as

de Horn ecuacionales can�onicas por niveles [MH94].

A continuaci�on presentamos la relaci�on de condicional b�asico como

instancia del c�alculo de la De�nici�on 2.3.1.

( ) =

( )

( ) =

= =

De esta forma, la funci�on selecciona �unicamente b�asicos. Debido a que

para todo objetivo y para toda sustituci�on computada , ( ) = , todas

las ocurrencias b�asicas de se encuentran en (y coinciden con sus ocurrencias no

variables), mientras que las no b�asicas se encuentran �unicamente en el codominio de

la sustituci�on .

R

11

n i1

11

R O

E

� 2 F 2 C [

R

F

C C

Narrowing \Innermost"

2.3. ESTRATEGIAS DE NARROWING

g g

g

t

t f t ; : : : ; t f i ; : : : ; n t � V

' g

g

Proposici�on 2.3.4 (completitud del narrowing b�asico )

Dado un SRTC can�onico por niveles y un objetivo ecuacional , es un

conjunto completo de -uni�cadores de .

narrowing

innermost

eager

basado en constructores

completamente de�nido

Ya que los g�eneros no son relevantes para los objetivos de este trabajo, los omitimos por sim-

plicidad y s�olo consideramos signaturas con un g�enero. La extensi�on a signaturas heterog�eneas es

inmediata [Pad88].

23

La siguiente proposici�on establece la completitud del c�alculo.

[MH94]

( )

Presentamos ahora una estrategia de en la que los pasos de computaci�on se

realizan s�olo sobre las ocurrencias m�as internas ( ) del objetivo ecuacional.

Esta estrategia se corresponde con la estrategia de evaluaci�on de Prolog y con la

evaluaci�on impaciente ( ) de los lenguajes funcionales. La mayor parte de los

conceptos presentados en este punto son una adaptaci�on de [Fri85].

Un t�ermino \innermost" es una operaci�on aplicada a t�erminos constructores,

i.e. ( ), donde y, para todo = 1 , ( ). Un

SRTC se dice (CB, \constructor based") si la parte izquierda

de cada regla es un t�ermino \innermost". Esto implica que no pueden haber anida-

mientos en las partes izquierdas de las cabezas de las cl�ausulas ni axiomas entre los

constructores. Esta es una clase razonable de programas desde el punto de vista de

la programaci�on funcional. Muchas teor��as ecuacionales que ocurren en la pr�actica

siguen esta disciplina, e.g. en la especi�caci�on de los tipos abstractos de datos.

Un s��mbolo de funci�on se dice completamente de�nido si no ocurre en ning�un

t�ermino b�asico en forma normal, es decir, todos los s��mbolos de funci�on son reduci-

bles sobre todos los posibles t�erminos b�asicos (del g�enero apropiado ). Un SRTC

se dice (CD, \completely de�ned") si todos los s��mbolos

de funci�on de�nidos (i.e. pertenecientes a ) est�an completamente de�nidos. En

un SRTC completamente de�nido, el conjunto de t�erminos b�asicos en forma normal

coincide con el conjunto de t�erminos irreducibles (o constructores) ( ) sobre . En

teor��as con un s�olo g�enero, es extra~no encontrar programas completamente de�nidos;

sin embargo, es usual cuando se usan tipos y cada funci�on se encuentra de�nida so-

bre todos los constructores pertenecientes al tipo de sus argumentos. Ejemplos de

lenguajes l�ogico-funcionales que siguen la disciplina CB-CD son, por ejemplo, SLOG

[Fri85] y LPG [BE86, BE94].

En una estrategia \innermost", la funci�on debe asignar a cada objetivo una

de las ocurrencias m�as internas (\innermost") de , seg�un el orden de pre�jo. Sin

p�erdida de generalidad, de las posibles ocurrencias m�as internas seleccionamos aqu�ella

que aparezca m�as a la izquierda (\leftmost innermost"). Formalmente, de�nimos el

;

; ;

4

4

4

4

j

R R

R

u

'

'

n n i

0 1 2 0 1 0 2

+

1 1

J

J

J

J

J

J

JJ

J

J

CAP��TULO 2. PRELIMINARES

f 2 j g

, 9 2 9 ^ ^

f g 2 ^ 8 2 6 )

O O

R R[ f ! g

� f g 2

C

R

2 O �

De�nici�on 2.3.5 (narrowing condicional \innermost" )

Proposici�on 2.3.6 (completitud del narrowing \innermost" )

Inn g g

Inn g u O g g :

Inn g

u w p ; p ; p IN ; i; j > : u p :i:p w p :j:p i < j:

u w u

w

'

' g u u Inn g w Inn g : u w u w

restrict �; r �:

x x true

restrict

� � x =t ; : : : ; x =t t

� i ; : : : ; n

g �

g V ar g Dom �

� g � � V ar g

V ar g Dom �

g�

La relaci�on de na-

rrowing (condicional) \innermost" (o, simplemente, ) se de�ne como una

instancia de la relaci�on de narrowing gen�erico con estrategia, donde la estrategia

es:

si

y la funci�on de restricci�on se de�ne como:

La sem�antica operacional asociada se denota por o, simplemente, por . Las

computaciones se realizan sobre el programa extendido .

narrowing

redexes

sustituci�on constructora

narrowing

Sea un SRTC can�onico CB-CD, un objetivo ecuacional y una soluci�on b�asica

constructora para el objetivo tal que . Entonces, existe una

sustituci�on de respuesta computada tal que .

24

conjunto de ocurrencias m�as internas ( ) de un objetivo como:

( ) =

( ) es un t�ermino \innermost"

Adem�as, de�nimos un orden entre las ocurrencias de ( ) de la forma:

0 = =

Intuitivamente, implica que la ocurrencia se~nala un t�ermino que aparece m�as

a la izquierda del t�ermino se~nalado por .

( ) = ( ) ( ) ( = )

( ) =

= =

En el caso del con estrategia \innermost", las sustituciones computadas

no contienen s��mbolos de funci�on de�nidos [Fri85] y, por tanto, no es necesario aplicar

las sustituciones computadas en cada paso a la parte esqueleto (ya que no pueden

introducir nuevos ). Consecuentemente, la funci�on se de�ne en la

forma obvia para entregar la sustituci�on vac��a.

Decimos que es una , si y

( ), = 1 . La siguiente proposici�on establece la completitud del procedi-

miento de condicional \innermost" para programas can�onicos que sigan la

disciplina CB-CD.

[Fri85]

( ) ( )

( ) [ ( )]

La condici�on ( ) ( ) en la premisa de la proposici�on anterior garan-

tiza que sea b�asico. El siguiente ejemplo revela que esta condici�on no puede ser

eliminada, lo cual se ignora, por ejemplo, en [Han94b, H�ol89].

J

Ejemplo 2 R

!

!

f g

f g

Narrowing Perezoso

2.3. ESTRATEGIAS DE NARROWING

f ; y y

g

� x=

f x; g y g y

x= ; y=

� V ar g Dom �

'

t

t

Consideremos el siguiente programa can�onico CB-CD :

La sustituci�on b�asica constructora es una soluci�on de la ecuaci�on

. Sin embargo, narrowing condicional \innermost" no es capaz de

computar una respuesta m�as general (de hecho, s�olo computa la respuesta ).

En este caso, la sustituci�on no satisface la condici�on .

regla de re exi�on

narrowing

narrowing narrowing

lazy evaluation

narrowing

25

(0 )

(0) 0

= 0

( ( )) = ( )

0 0

( ) ( )

Resulta f�acil extender esta estrategia a teor��as con funciones que no est�an comple-

tamente de�nidas, a~nadiendo simplemente la llamada , que permite

ignorar una llamada a funci�on m�as interna cuando �esta no puede ser reducida [H�ol89].

Por simplicidad, asumimos que todas las funciones est�an completamente de�nidas y,

por tanto, \innermost" es su�ciente para computar todas las soluciones.

Este tipo de estrategia, con algunos re�namientos, es la base de lenguajes l�ogico-

funcionales como ALF [Han90], eager-Babel [KLMR90a] o SLOG [Fri85]. Como ya

hemos comentado, algunas de las restricciones sobre los programas (e.g. estar comple-

temente de�nidos), se pueden eliminar realizando ligeras variaciones en la estrategia

del c�alculo. Sin embargo, la exigencia de que las reglas del programa sean ter-

minantes, no puede ser eliminada sin p�erdida de completitud. Esto puede ser un

inconveniente cuando se quieren explotar t�ecnicas t��picas de la programaci�on fun-

cional como, por ejemplo, las que trabajan con estructuras de datos in�nitas o con

funciones parcialmente de�nidas. En el siguiente punto, presentamos una estrategia

de perezoso que preserva la completitud del para programas no

terminantes.

La estrategia de evaluaci�on perezosa ( ) en los lenguajes funcionales

consiste, b�asicamente, en no evaluar los argumentos de una funci�on a menos que su

evaluaci�on sea necesaria (i.e. que sus argumentos sean \demandados") para computar

el resultado. Las estrategias perezosas poseen varias propiedades importantes. En

primer lugar, permiten trabajar con estructuras de datos in�nitas, ya que los t�erminos

no necesitan ser siempre completamente evaluados. Por otra parte, dado un t�ermino

, si existe alguna estrategia de evaluaci�on que permite computar la forma normal de

de manera �nita, la estrategia perezosa tambi�en termina computando dicho valor.

Dado que el concepto de posici�on \demandada" tiene varias interpretaciones posibles,

la adaptaci�on de esta estrategia a los lenguajes l�ogico-funcionales ha dado lugar a

distintas estrategias perezosas de (ver, por ejemplo, [AEH94, DG89, Ech88,

MKLR90, MR92, Red85, You89]). En nuestro caso, vamos a de�nir una estrategia de

n n n n

n

n

n n

n n

StrEq

StrEq

1 1 1 1

+

1 1 1

1 2 2

1 1

1 1 1

2

CAP��TULO 2. PRELIMINARES

� ! 8 2 C

� ! ( � � 8 2 C

R R[

R

R

! ( 2 R

R

R

! (

! (

f g �

De�nici�on 2.3.7 (linealidad por la izquierda)

De�nici�on 2.3.8 (no ambig�uedad)

c c true c=

c x ; : : : ; x c y ; : : : ; y true x y ; : : : ; x y c=n

t t

t

� � C �

f t ; : : : ; t � C

f s ; : : : ; s � C ;

f t ; : : : ; t f s ; : : : ; s

� mgu f t ; : : : ; t f s ; : : : ; s � �

� �

narrowing

narrowing

narrowing

igualdad estricta

narrowing

linealidad

por la izquierda no ambig�uedad

narrowing

Un programa cumple la pro-

piedad de si, para toda regla , no

contiene ocurrencias repetidas de una misma variable.

Un programa CB es si, para

todo par de reglas de de�niendo el mismo s��mbolo de funci�on:

se cumple, al menos, una de las siguientes condiciones:

1. No superposici�on: y no uni�can.

2. Fusi�on de partes derechas: y

.

26

perezoso guiado por la demanda en el estilo de [Red85], y por tanto similar

al mecanismo operacional del lenguaje l�ogico-funcional Babel [MR92].

Debido a la presencia de funciones no terminantes, los resultados de completitud

para perezoso se establecen con respecto a una interpretaci�on no est�andar

de la igualdad: la identidad entre objetos �nitos. Los lenguajes l�ogico-funcionales

con una sem�antica operacional basada en perezoso, de�nen la validez de

una ecuaci�on como una entre los t�erminos. La igualdad estricta

considera dos t�erminos iguales s�olo si �estos se reducen a un mismo t�ermino b�asico

y formado �unicamente por s��mbolos constructores. La sem�antica de la relaci�on se

puede de�nir mediante el siguiente conjunto con uente de reglas de programa:

0

( ) ( )

N�otese que la igualdad estricta no posee la propiedad re exiva para todos los

t�erminos . La igualdad estricta es la �unica de�nici�on adecuada de la igualdad para el

caso de programas no terminantes. Cuando trabajamos con la relaci�on de

perezoso, consideramos que todos los s��mbolos de la igualdad en los objetivos (y en las

condiciones de las reglas) son . As��mismo, consideramos ahora que la extensi�on de un

programa para tratar la igualdad sint�actica es el programa extendido ( )

que, por abuso, denotaremos tambi�en como .

Existen una serie de condiciones (decidibles) que garantizan la con uencia en el

caso de programas CB, incluso en ausencia de la propiedad de terminaci�on:

y [GHR92, MR92]. A continuaci�on, formulamos un

procedimiento de perezoso que es completo, en alg�un sentido bien de�nido,

para programas que satisfacen esta doble condici�on.

linealidad por la izquierda ( )

no ambig�uo

( )

( )

( ) ( )

= ( ( ) = ( ) )

0 0

0

fail

fail

LU LU

LU

LU

LU

LU

LU

LU

LU

1 1

1 2

1 1 1

1 1

1 1 1 1 1

1 1

1

1

n n

n n n

n n

n u n u: n u:n n

u

u

n u m

n u

n

2.3. ESTRATEGIAS DE NARROWING

f g

[

h i

!

!

f # g[ ! f # # g[

2 C �

f # g [ ! f g f g 62

f # g [ ! f g f g

f # g[ ! f g 2 C

6� �

!

#

De�nici�on 2.3.9 (problema de uni�caci�on lineal)

De�nici�on 2.3.10 (con�guraci�on )

De�nici�on 2.3.11 (relaci�on de uni�caci�on )

� mgu f t ; : : : ; t f s ; : : : ; s

C C �

f d ; : : : ; d ; f t ; : : : ; t f d ; : : : ; d

f t ; : : : ; t f d ; : : : ; d

c f

f

U; �

U �

c d ; : : : ; d c t ; : : : ; t U; � d t ; : : : ; d t U; �

c=n n

x t U; � U x=t ; � x=t t V

d x U; � U x=d ; � x=d

c d ; : : : ; d c t ; : : : ; t U; � ; � c=n; c =m

c c n;m

mgu

c d ; : : : ; d

f t ; : : : ; t u

3. Incompatibilidad de guardas: y

es su�cientemente inconsistente.

problema

de uni�caci�on lineal

Un problema de uni�caci�on

lineal es un par de t�erminos , donde y

no comparten variables, y es un t�ermino lineal e \inner-

most".

Una con�guraci�on es un par , don-

de es un conjunto y es una sustituci�on.

De�nimos la relaci�on de uni-

�caci�on como la menor relaci�on que satisface:

1. ,

donde , .

2. , donde .

3. .

4. , donde ,

, y .

27

= ( ( ) = ( ) )

( )

En [GHR92] se de�ne un m�etodo constructivo para comprobar la condici�on (su�-

ciente) de no ambig�uedad de la De�nici�on 2.3.8.

Cuando trabajamos con programas CB lineales por la izquierda, la uni�caci�on

entre las partes izquierdas de las reglas y los t�erminos del objetivo poseen siempre

una serie de caracter��sticas comunes que, en general, denominaremos como

.

( ) ( ) ( )

( ) ( )

Los problemas de uni�caci�on lineal se pueden resolver mediante cualquier versi�on

del algoritmo de uni�caci�on (ver, por ejemplo, [LMM88]). Siguiendo [MR92], distin-

guimos el caso en el que la uni�caci�on no tiene �exito debido a un con icto entre un

constructor y un s��mbolo de funci�on , ya que tal situaci�on se puede considerar como

una demanda de mayor evaluaci�on de . El siguiente algoritmo es una reformulaci�on

del algoritmo de uni�caci�on para el caso de los problemas de uni�caci�on lineales de

[MR92]. N�otese que, debido a la linealidad por la izquierda, la comprobaci�on conocida

como \occur-check" no es necesaria.

( )

( ( ) ( ) ) ( )

0

( ) ( )

( ) ( )

( ( ) ( ) ) ( )

0

Es f�acil observar que las computaciones pueden terminar de tres formas

distintas: computando el de los t�erminos de entrada, devolviendo (en el caso

de que los t�erminos no uni�quen) o devolviendo un conjunto de pares ( )

( ), en el que cada ocurrencia indica una posici�on demandada. La siguiente

de�nici�on formaliza dicho comportamiento.

9 !

0 0

;

; ;

LU LU

12

13

fail

U;�

U;�

i

I

I

I

I

I

I

II

don't care

0 0 0 0

j

2

0 0

j

j

j

R R

LU

LU

LU

LU

LU

LU

LU

LU

1 1

12

1 1 1

1 1

1

13

=1

=1

+

� ( )

+

8

>

>

>

>

>

>

<

>

>

>

>

>

>

:

S

8

>

<

>

:

SS

CAP��TULO 2. PRELIMINARES

n n

n n n

m

u

k

'

n

m

k

k

ku

u P

m

k

ku

ku

k k k k

V ar r

'

g r

Success

Fail

Demand

Success

Demand

Fail

StrEq

!

� h i

f # # g ! 6!

;

; f g

f j # 2 g

2 f g

f g h i

h i

; h i ;

� ! ( R

O O

R R[

[

De�nici�on 2.3.12 (comportamiento de )

De�nici�on 2.3.13 (narrowing condicional perezoso )

f d ; : : : ; d ; f t ; : : : ; t

d t ; : : : ; d t ; � U; �

; � U

; U

; P

P u c d ; : : : ; d g t ; : : : ; t U

'

g e ; : : : ; e

' g ' g; i; k ; i ; : : : ; n

' g; u; k � g u

u � ; g ; �

' g; u:u ; k � ; g ; P

� ; g ;

r � � C <<

restrict �; r �

� �

Por ( ) indicamos que no es posible probar una transici�on a partir del estado

( ).

La ocurrencia que marca la ecuaci�on considerada puede seleccionarse de forma indeterminista

sin p�erdida de completitud [LLR93].

28

� ( ) ( )

( ) ( )

(�)

(�) =

( ) =

( ) =

( )

= ( ( ) ( ))

Informalmente, una estrategia perezosa debe seleccionar, en cada paso de com-

putaci�on, la ocurrencia de un t�ermino externo, excepto cuando hayan subt�erminos

demandados por el algoritmo de uni�caci�on lineal. La siguiente de�nici�on formaliza

el c�alculo de perezoso.

( )

( ) = ( ) 1

( ) = [�] [ ]

( ) = ( )

( ) ( ) = ( )

( ) = ( )

( )

( ) =

= ( )

Tal y como se expone en [MR92], la sustituci�on computada en cada paso de

perezoso puede verse como la uni�on de dos sustituciones representando,

respectivamente, las restricciones de a las variables del objetivo y a las variables de

Sea un problema de uni�caci�on lineal. Dada la

computaci�on :

de�nimos la funci�on como sigue:

si

si

en cualquier otro caso, donde

es el conjunto de posiciones demandadas.

narrowing

La relaci�on de narro-

wing (condicional) perezoso (o, simplemente, ) se de�ne como una instancia

de la relaci�on de narrowing gen�erico con estrategia, donde la estrategia se de�ne

de manera inductiva como sigue: dado un objetivo ,

con

si entonces

si

si

si

donde . La funci�on de restricci�on se de�ne como sigue:

(i.e. restringida a las variables de la regla empleada en el paso de computaci�on). La

sem�antica operacional asociada se denota por o, simplemente, por . Las com-

putaciones se realizan usando las reglas del programa extendido .

na-

rrowing

j

;

� ( )

I

I

I

I

g

r

r

V ar g

h i

R

#� # #2 C

R [ f g �

2.3. ESTRATEGIAS DE NARROWING

� restrict

r

restrict

g; � �

'

g

� s t

g s� t� t� �

� g � � V ar g

Proposici�on 2.3.14 (completitud del narrowing perezoso )

redexes

redexes

narrowing

Sea un programa CB, lineal por la izquierda y no ambig�uo, un objetivo ecuacional

y una sustituci�on b�asica (sobre constructores) tal que, para toda ecuaci�on en

, se cumple , donde . Entonces, existe una sustituci�on de

respuesta computada para usando tal que .

29

la regla empleada. Es interesante destacar que, debido a la linealidad por la izquierda

y a la disciplina de constructores (CB) de los programas, la sustituci�on no contiene

nunca s��mbolos de funci�on de�nidos [MR92] (y, por tanto, los nuevos intro-

ducidos vendr�an necesariamente de la parte ). Por ello, la funci�on s�olo

necesita entregar la sustituci�on para ser aplicada y s�olo afecta a las variables de

la regla (nunca propaga al \contexto"). Es decir, debido a la de�nici�on del

gen�erico con estrategia y de la funci�on , se cumple que, para todo

estado , la sustituci�on s�olo puede contener t�erminos constructores. Esto

se corresponde con la �losof��a de la divisi�on de los estados en esqueleto y entorno, de

forma que todas las ocurrencias explotables se encuentran siempre en la parte esque-

leto y, de esta forma, la funci�on no necesita disponer tampoco de la informaci�on

almacenada en la parte de entorno para calcular las ocurrencias explotables.

La siguiente proposici�on establece la completitud del c�alculo.

[MR92]

=

( ) ( ) ( ) ( )

[ ( )]

� �

1 2

1 2

1 2 1 2

S �

S S

S � S S

Cap��tulo 3

C C

C C

f C C f C ; C

Sem�antica Composicional

narrowing

narrowing

narrowing

narrowing

La composicionalidad es una propiedad que ha sido reconocida como fundamental

en la sem�antica de los lenguajes de programaci�on [Sco82, Sto77]. Dado un operador

de composici�on , decimos que una sem�antica es composicional cuando el signi�cado

(sem�antica) de una construcci�on compuesta ( ) se puede de�nir a partir de los

signi�cados de sus componentes ( ) y ( ), es decir, existe una funci�on adecuada

tal que ( ) = ( ( ) ( )). En el caso de los programas l�ogicos [GL91],

se han investigado ampliamente las propiedades de los dos operadores de composici�on

m�as importantes, concretamente, la composici�on conjuntiva (AND) {composici�on de

�atomos del objetivo o del cuerpo de una cl�ausula{ y la composici�on disyuntiva (OR)

{composici�on de (conjuntos de) cl�ausulas{.

Existe una fuerte relaci�on entre las propiedades de composicionalidad y el pa-

ralelismo (impl��cito) de los lenguajes de programaci�on. En particular, la propiedad

de composicionalidad AND puede servir de base te�orica para desarrollar modelos de

ejecuci�on paralela [HR95] (dependientes, en principio), mientras que la propiedad de

composicionalidad OR permite, por ejemplo, el desarrollo de m�etodos de an�alisis mo-

dulares, as�� como la de�nici�on de modelos de ejecuci�on para explotar el paralelismo

OR del lenguaje [CDG93]. Como ya hemos comentado, existen instancias de la rela-

ci�on de que pueden ser implementadas m�as e�cientemente que la resoluci�on

SLD de los programas l�ogicos (como es el caso del \innermost" con nor-

malizaci�on) [Han91, Han92] gracias a la componente funcional y, adem�as, el modelo

de computaci�on resultante ofrece buenas oportunidades para explotar el paralelismo

inherente de los programas. Por ejemplo, en [DL90] se describe un tipo de paralelis-

mo OR en el que, para cada ocurrencia del objetivo y cada regla del programa, se

explotan de manera concurrente los pasos de alternativos de acuerdo con

una cierta funci�on heur��stica. En [AFRV94], se presentan una serie de propiedades de

composicionalidad OR para la relaci�on de condicional b�asico, que permiten

31

2 2� ;�

1 1 2 2

b b

8

<

:

[

*

* [

*

*

f * g f g

;

1 2

1 2 1 2

1 2

� �

1 2

� �

� � mgu � � :

� � fail

3.1 Composici�on Paralela Ecuacional

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

narrowing

narrowing

composici�on paralela

32

introducir modularidad en la sem�antica del programa y en el proceso de an�alisis. En

este cap��tulo, presentamos los principales resultados de nuestras investigaciones sobre

la propiedad de composicionalidad AND para programas l�ogico-funcionales.

En la Secci�on 3.1, introducimos una versi�on \sem�antica" del operador de com-

posici�on paralela de sustituciones [HR89, Jac89, Pal90], empleado en los modelos de

paralelismo conjuntivo de los programas l�ogicos. Usando este nuevo operador, de-

mostramos un primer resultado de composicionalidad para las soluciones al problema

de la uni�caci�on sem�antica de un conjunto de ecuaciones. Sin embargo, el operador

sem�antico de composici�on paralela es, en general, indecidible. Por ello, en la Secci�on

3.2.1, mostramos c�omo se puede mantener (bajo ciertas restricciones) la composi-

cionalidad de la sem�antica usando un operador de composici�on paralela puramente

\sint�actico". En segundo lugar, establecemos las condiciones bajo las que la relaci�on

de gen�erico con estrategia posee la propiedad de completitud fuerte. Por

�ultimo, en la Secci�on 3.2.2 mostramos c�omo de�nir, dada una estrategia de

secuencial, una versi�on composicional del c�alculo en la que se permite la explotaci�on

paralela de las distintas ecuaciones del objetivo. As��mismo, demostramos la equiva-

lencia operacional (respecto a las respuestas computadas) entre el c�alculo secuencial

y su correspondiente versi�on composicional.

En primer lugar, recordamos la noci�on de de sustituciones, de-

notada por [HR89, Jac89, Pal90]. Informalmente, la composici�on paralela es la

operaci�on de uni�caci�on generalizada a sustituciones.

La composici�on paralela se corresponde con una de las operaciones b�asicas usadas

en el modelo de paralelismo conjuntivo (AND) de los programas l�ogicos [HR89, Jac89,

Pal90]. Concretamente, cuando dos subobjetivos (del mismo objetivo) se explotan en

paralelo, las sustituciones computadas (independientemente) deben ser combinadas

para obtener el resultado �nal. Esta \combinaci�on" se puede realizar como sigue.

Dadas dos sustituciones idempotentes y , de�nimos:

= ( )

La composici�on paralela de sustituciones es idempotente, conmutativa, asociativa y

tiene como elemento neutro . El operador se extiende a conjuntos de sustituciones

de la forma:

� � =

si es diferente de

en otro caso.

La composici�on paralela fue propuesta en [Pal90] como base para una caracteri-

zaci�on composicional de la sem�antica de los programas l�ogicos en cl�ausulas de Horn.

� ;�

1 1 2 2

b b

[

b b

b

b

Demostraci

on

E

E

E E

E

E

E

E

E

E

2 2

E

E E E E

E E E

E E

E

E E

E E

E E

3.1. COMPOSICI

ON PARALELA ECUACIONAL

De�nici�on 3.1.1

Ejemplo 3

De�nici�on 3.1.2

Proposici�on 3.1.3

1 2

1 2 1 2

1 2 1 2

1 2 1 2

1 2

1 2

� �

1 2

1 2

1 2 1 2

1 1 2 2 1 2

1 2 1 1 2

2 1 2

1 2 1 1 2 2

1 2 1 2

1 1

2 2

*

2 * � !

* U [

*

*

E f g

f g f g f g 2 *

f g f g * ;

*

2

* *

E [

E

[

U U U *

� 2 U [ 2 U 2 U

2 * � *

� 2 * 9 2 9 2

2 U [ 2 U [

2 U ) 2 U

2 U ) 2 U

� ; � Sub Sub Sub }Sub

� � � � :

fail

f ; f g X g X ; g c ; g c X g X

� X=g Z � X=c Z X=c ; Z= � �

� X=f � X=g Z � �

; }Sub

� � :

E E E

E

E E E E E E

E E E

# E E # E # E

# # #

� � ; �

� � � � E E

� � � E

� � � E

composici�on paralela ecuacional

Sean . De�nimos el operador

como sigue:

Sea .

1. Si y , entonces .

2. Si y , entonces .

Dados , de�nimos:

Sean , y conjuntos de ecuaciones. Sean ,

y . Entonces .

33

Podemos generalizar la noci�on de composici�on paralela para considerar la uni�caci�on

bajo teor��as de Horn ecuacionales. En la siguiente de�nici�on formalizamos la noci�on

de , denotada por .

:

= ( )

Es inmediato demostrar que el operador es conmutativo, asociativo y tiene

como elemento nulo . Veamos un ejemplo que ilustra el comportamiento del

operador sem�antico de composici�on paralela .

= (0) = 0 ( ( )) = ( ) (0) = (0) ( ( )) = ( )

= ( ) = ( ) (0) 0

= (0) = ( ) =

El operador se puede extender a conjuntos de sustituciones como sigue.

� �

� � =

Dado un problema de -uni�caci�on = , una caracterizaci�on composicio-

nal del conjunto de todos los -uni�cadores de puede darse como sigue.

=

� = ( ) � = ( ) ( ) = � �

.

( ) Dada la sustituci�on ( ), entonces ( ) = � y ( ) =

� . Por tanto, � � .

( ) Dada la sustituci�on � � , por la De�nici�on 3.1.2, � �

tales que ( ). Entonces, ( ) ya que:

( ) ( ), y

( ) ( ).

'

'

b b

d

E

E

E

R

R

1 2

1 2 1 2 1 2 1 2

*

*

E

U E

U

*

O

R O

*

*

Lema 3.2.1

Lema 3.2.2

3.2 Composicionalidad de la Sem�antica

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

E

� E

� E

'

g

g

# #

# # # mgu # # # mgu # # :

g �

mgu g� mgu mgu g �

3.2.1 Composicionalidad del Conjunto de

Exitos

�nitarias

tipo de uni�ca-

ci�on

narrowing

narrowing

narrowing

conjunto de �exitos

Sean y sustituciones idempotentes, entonces:

Sea una secuencia de ecuaciones y una sustituci�on idempotente.

Entonces, .

34

Se puede observar que es mucho m�as complejo evaluar que la operaci�on sint�acti-

ca . Sin embargo, la composici�on paralela ecuacional se puede rede�nir en t�erminos

de uni�cadores \m�as generales" en el caso de teor��as , para las que las so-

luciones a un problema de -uni�caci�on se pueden representar siempre por un

conjunto completo y minimal ( ) de -uni�cadores (maximalmente generales),

que es �unico bajo equivalencia [Sie89]. Las teor��as ecuacionales cuyo

es �nitario, juegan un papel importante en la programaci�on l�ogica con igualdad

[JLM84]. En general, el tipo de uni�caci�on de una teor��a ecuacional es indecidible.

Por otro lado, para una teor��a �nitaria el requerimiento de minimalidad es a menudo

demasiado fuerte, ya que un algoritmo que genere un superconjunto de ( ) puede

ser mucho m�as e�ciente que uno minimal (y por tanto, a veces, preferible).

En la siguiente secci�on mostramos que, bajo determinadas restricciones, es posible

seguir trabajando con el operador (sint�actico) de composici�on paralela .

En esta secci�on, establecemos una serie de propiedades de composicionalidad para la

sem�antica del conjunto de �exitos correspondiente a un c�alculo de con

estrategia . A continuaci�on, mostramos c�omo utilizar estas propiedades para de�nir

un c�alculo de en el que las computaciones para cada ecuaci�on del objetivo

se realizan de manera independiente (paralela), \reconciliando" a continuaci�on las

sustituciones obtenidas para formar la sustituci�on global. Este modelo de computa-

ci�on paralela para fue mencionado por primera vez por Uday Reddy en

[Red85].

Siguiendo las de�niciones est�andar, lo que \observamos" acerca de un objetivo en

un programa es su ( ). Estamos interesados, por tanto,

en demostrar bajo qu�e condiciones dicho conjunto de �exitos se puede construir de

manera composicional, usando el operador sint�actico . Los siguiente lemas t�ecnicos

son necesarios para demostrar la mencionada propiedad de composicionalidad.

[LMM88, Pal90]

= ( ) = ( )

( ) = ( ( ) )

b

d d

b

d

� ( ) � ( )

0 0

0 0 1 1

j j

*

*

j

*

*

j j

*

*

*

;

;

;

;

;

;

;

;

; ;

; ; ;

Demostraci

on

Demostraci

on

V ar g V ar g

'

'

u

r '

'

u r

'

'

u u

'

'

'

'

'

' ' ' n n

De�nici�on 3.2.3

Proposici�on 3.2.4

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

^ ^

R

2 ^ � ! ( R ^ f g

^ ^ * 6�

h i h * i

h i

f g f g

* 6�

R

R

R

h i h i h i

mgu g� mgu g � mgu mgu g mgu � mgu mgu g �

mgu

'

u ' g r � � C << � mgu g �

� restrict �; r � � fail

g; � C; g � � ; � �

mgu

g; � g

mgu g � � mgu g �

� � fail

� �

g

g

g #

g ; # g ; # : : : g ; #

narrowing

Dado un programa y una estrategia de narrowing , de�nimos

la relaci�on de narrowing como la menor relaci�on que satisface:

narrowing

Dado un programa y un objetivo ecuacional , los conjuntos

de respuestas computadas por y , para en , coinciden.

35

.

( ) = ( ) = ( ( ) ( )) = ( ( ) ).

En la siguiente de�nici�on se introduce, �unicamente por motivos t�ecnicos (puesto

que simpli�car�a las pruebas), una nueva relaci�on de denotada por . En

la nueva relaci�on, el de cada paso se calcula sin tener en cuenta la sustituci�on

actual del estado, y se reemplaza la composici�on de sustituciones est�andar por el

operador de composici�on paralela.

( ) ( ) = ( = )

= ( )

( [ ] )

Intuitivamente, los estados generados por la relaci�on contendr�an un conjunto

de ecuaciones (posiblemente) m�as general que en el caso de la relaci�on , debido

a la no aplicaci�on de la sustituci�on actual del estado para computar el nuevo .

Esta diferencia, sin embargo, no afecta al conjunto de ocurrencias explotables de un

estado; si todas las ocurrencias explotables del estado se encuentran en , las

ocurrencias explotables del estado derivado se pueden obtener tanto a partir de la

sustituci�on ( = ) como de la sustituci�on ( = ). Por otra parte,

si las ecuaciones pueden ser m�as generales, la relaci�on podr��a considerar m�as

ocurrencias para ser explotadas que la relaci�on . La condici�on se

encarga de evitar este problema, prohibiendo aquellos pasos de derivaci�on en los que

la sustituci�on no es `compatible' con la sustituci�on actual . De hecho, respecto a

la parte entorno, ambas relaciones generan las mismas sustituciones para los estados

derivados.

La siguiente proposici�on demuestra la equivalencia entre la relaci�on de

gen�erico con estrategia y la nueva relaci�on . Informalmente, este resultado es una

consecuencia del Lema 3.2.1 y del hecho de que todas las ocurrencias explotables de

un estado se encuentren en la parte esqueleto del objetivo.

. Vamos a probar un resultado m�as general: dado un programa ,

un objetivo y una sustituci�on , entonces existe la derivaci�on:

d

; ; ;

; ; ;

; ;

;

;

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

h i � h i h i h i

)

h i h i h i

h i h i

� �

h i h i

2 � ! ( R f g

� � 2 \

;

f g

f g

f g

f g

f g

* f g

*

f g

h i h i

*

0 0 0 0 1 1

0 0 1 1

0 0 1 1

1 1

1 1 1

1 1

1

1 1 1

1

1

1 1 1

1 1 1

1 1 1 1 1 1 1

1 1 1 1 1

1 1 1

1 1

1

1

1 1

1 1

1 1 1 1 1 1 1 1 1

1 1 1 1 1 1

* * *

� �

* *

� �

� �

� �j

� �

� � �

� �j

� �j

� �j

� � � � �

� �j

� � �

� �j

� �j

�j

� �

*

� �

� � � � � � � � �

� � � � � �

' ' '

n n

i i i i i i i i

' ' n n ' n n

' '

n n

i i i i i i i i

n n ' n n

n nu

n

r ' n n u r n n

i i n

n n n

n

n n

n nu

n

n nu

n

n nu

n n n n n

n nu

n n n

n nu

n

n nu

n

n

nu

n n

'

n n

n n n n

n n n n n n n n n n

n n n n n n n n n n r

g ; # h ; � h ; � : : : h ; �

# � g # h � ' g ' h i ; : : : ; n

g ; # : : : g ; # g ; # :

n

n n >

h ; � : : : h ; �

# � g # h � ' g ' h i ; : : : ; n

g ; # g ; #

u ' g r � � C << � mgu g # �

� restrict �; r g C; g � � # # �

' g ' h i ; : : : ; n u ' h V ar �

V ar # g #

g

# # �

# mgu g # �

# mgu g � #

# mgu h � � g # h �

� mgu h � � # �

� mgu mgu h � �

� mgu h �

� �

� mgu h �

h ; � h ; �

� � � # � #

g # h � g # g # � h � �

h # � # � h # h � # � �

36

si y s�olo si existe la derivaci�on:

donde = , = y ( ) ( ), para todo = 1 .

( ) Consideremos la derivaci�on:

Realizamos la prueba por inducci�on sobre el n�umero de pasos en la derivaci�on. Para

= 0 el resultado es trivial. Consideremos, pues, el caso inductivo 1. Por la

hip�otesis de inducci�on, existe la derivaci�on:

donde = , = y ( ) ( ), para todo = 1 1.

Consideremos ahora el �ultimo paso de la derivaci�on:

y supongamos ( ), ( ) , = ( = )

y = ( ). Entonces, = ( [ ] ) y = .

Dado que ( ) ( ), = 1 1, entonces ( ). Dado que ( )

( ) = y, por de�nici�on, todas las ocurrencias reducibles de se

encuentran en , entonces:

=

= ( = )

= ( = )

= ( = ) (ya que = )

= ( = ) (ya que = )

= ( ( = ) ) (por el Lema 3.2.2)

= ( = ) (por el Lema 3.2.1)

=

=

donde = ( = ). Sabemos, por tanto, que existe la transici�on:

tal que = = = . Demostramos ahora que se siguen cumpliendo

las condiciones impuestas sobre la parte esqueleto.

Puesto que = , entonces = = =

(ya que = ) = = (ya que = ). Sea =

d

; ; ;

; ;

;

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

1 1

1 1

1 1 1 1

1 1

0 0 1 1

0 0 1 1

1 1

1 1

1 1

1

1 1 1

1 1 1

1 1 1 1 1 1 1

1 1 1 1 1

1 1 1

1 1

1

1 1 1

0 0

(

h i h i h i

h i h i

� �

h i h i

2 � ! ( R f g

* 6�

f g

f g

f g

f g

f g

* f g

*

f g 6� 2

� � � � >

� �

� �

� � � �

� �

* *

� �

*

� �

� �

*

� �j

� �

� �j

� �j

� �j

� � � � �

� �j

� � �

� �j

� �j

�j

� �

' n n n n n n

n n n u r n n u n

n n n n u n n n n u n u n n u r n

n n n n

n n

' '

n n

'

n n

' ' n n

i i i i i i i i

n n

'

n n

n nu

r ' n n u r n n

n n

n nu

n

n nu

n

n nu

n n n n n

n nu

n n n

n nu

n

n nu

n

n

nu

n n

n n n n n n

n n

restrict �; r g # h � # � �

� g # C; g � � # C; g � #

C# ; g # �# C� ; h � �� C; h � � C; h � � �

h � ' g ' h

� �

' g ' h

h ; � : : : h ; � h ; � :

n

n n >

g ; # : : : g ; #

# � g # h � ' g ' h i ; : : : ; n

h ; � h ; �

u ' h r � � C << � mgu h �

� restrict �; r h C; h � � � � � fail

# # �

# mgu g # �

# mgu g � #

# mgu h � � g # h �

� mgu h � � # �

� mgu mgu h � �

� mgu h �

� �

� mgu g # � fail u ' g

g # h � ' g ' h

# � � g h

37

( ). Ahora, ya que = , = y las sustituciones y

son idempotentes, se cumple que = ( [ ] ) = ( [ ] ) =

( [ ] ) = ( [ ] ) = ( [ ] ) = ( [ ] ) =

. Por �ultimo, dado que ( ) ( ), las nuevas ocurrencias explotables

son recogidas tanto por la sustituci�on como por la sustituci�on , con lo que trivial-

mente se cumple ( ) ( ).

( ) Consideremos la derivaci�on:

Realizamos la prueba por inducci�on sobre el n�umero de pasos en la derivaci�on. Para

= 0 el resultado es trivial. Consideremos, pues, el caso inductivo 1. Por la

hip�otesis de inducci�on, existe la derivaci�on:

donde = , = y ( ) ( ), para todo = 1 1.

Consideremos ahora el �ultimo paso de la derivaci�on:

y supongamos ( ), ( ) , = ( = ) y

= ( ). Entonces, = ( [ ] ) y = .

Al igual que en el caso anterior, se veri�ca la equivalencia:

=

= ( = )

= ( = )

= ( = ) (ya que = )

= ( = ) (ya que = )

= ( ( = ) ) (por el Lema 3.2.2)

= ( = ) (por el Lema 3.2.1)

=

=

y entonces se cumple = ( = ) y ( ).

La prueba de las condiciones = y ( ) ( ) es perfectamente an�aloga

a la del caso anterior.

Para terminar, la proposici�on se sigue del resultado demostrado, para los valores

y .

N�otese que, para las estrategias b�asica e \innermost", los estados en ambas deri-

vaciones son id�enticos, ya que las sustituciones no son en ning�un caso aplicadas a la

*

*

� 0 0

0

'

'

'

'

'

'

'

'

;

;

;

;

;

;

;

;

*

h i h i

R

!

!

1 2

1

2

2

2 2

1 2

1

2 2

Independencia del Entorno

'

g ; g ; � g ; g � ; ��

g

' g � ' g :

g ; g

g

g g

f x c x

g

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

De�nici�on 3.2.5 (estrategia independiente del entorno)

Ejemplo 4

narrowing

narrowing

narrowing

Una estrategia de na-

rrowing es si para toda derivaci�on de la forma:

en la que no se ha explotado ninguna ocurrencia correspondiente a , se cumple:

Por abuso de notaci�on, en ocasiones diremos que la propia relaci�on es indepen-

diente del entorno.

narrowing

narro-

wing

redexes

Sea el programa:

38

parte esqueleto. En la estrategia perezosa, sin embargo, los estados contienen (posi-

blemente) un conjunto de ecuaciones distinto, pero esta diferencia s�olo puede afectar

a los t�erminos constructores (ambos conjuntos de ecuaciones contendr�an las mismas

funciones de�nidas). En el resto del trabajo no distinguiremos entre las relaciones

y , ya que ambas tienen la habilidad para computar las mismas soluciones, deno-

tando ambas relaciones como cuando no haya lugar a confusi�on. El uso de una u

otra relaci�on vendr�a indicado �unicamente por el operador de composici�on empleado:

la composici�on est�andar en el caso de la relaci�on y la composici�on paralela en el

caso de la relaci�on .

En este apartado, introducimos las condiciones que garantizan que la relaci�on de

gen�erico con estrategia es composicional con respecto al operador con-

juntivo, i.e. con respecto a la uni�on o concatenaci�on de secuencias de ecuaciones,

usando el operador sint�actico de composici�on paralela de respuestas. En primer

lugar, introducimos una condici�on sobre las estrategias de que limita las

posibles instancias de la relaci�on de gen�erico.

independiente del entorno

( ) ( )

( ) ( )

Informalmente, una estrategia de se dice independiente del entorno si,

dado un objetivo compuesto ( ), las sustituciones computadas por pasos de

sobre ecuaciones pertenecientes a pueden restringir las ocurrencias explotables

de , pero nunca pueden dar lugar a nuevos en . Esta noci�on es similar,

aunque m�as d�ebil, a la de estrategia \b�asica". Trivialmente, si una estrategia es b�asi-

ca, entonces es independiente del entorno. Sin embargo, lo contrario no es cierto. Por

ejemplo, la estrategia perezosa es independiente del entorno (como se demostrar�a en

el Lema 3.2.9) pero, contrariamente a lo que se a�rma en [You89], no es una estrategia

b�asica. El siguiente ejemplo ilustra este punto.

( ) ( )

(0) 0

;

1 2 1 2

I

I

I

I

I

;

;

;

;

;

;

;

0

j

0

0

*

j

*

h f gi h f gi

1 2

1 2

1 2

2 2

1 2

u

r ' r r u

'

r

'

u

r '

'

r r u

( ( ) = 0 ) ( ) ( ) 0 (0 = 0 ) (0) 0 (0) 0

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

g y ; true ; x=g y ; y =g y ; y = ; true ; x=g ; y= ; y =g ; y =

h i h f gi

h f gi

h f gi

h> f gi

2 ^ � ! ( R ^ f g

^ ^

h i h i

2 ^ � ! ( R ^ f g

^ ^ * 6�

h i h * i

y un objetivo. La siguiente derivaci�on perezosa:

no es una derivaci�on b�asica. Concretamente, el paso:

no es un paso b�asico, ya que el redex ha sido introducido por instanciaci�on.

narrowing

g f g y c

f g y c ; � c g y c ; x=g y

g y ; true ; x=g y ; y =g y ; y =

; true ; x=g ; y= ; y =g ; y =

; x=g ; y= ; y =g ; y =

g y

' g � ' g

u ' g r � � C << � mgu g � �

� restrict �; r g C� ; g ��

g; � g ; ��

� C �

u ' g r � � C << � mgu g �

� restrict �; r � � fail

g; � C� ; g �� ; � �

g g

39

( ( ( )) = (0))

( ( )) = (0) ( ( )) = (0) ( )

( ( ) = 0 ) ( ) ( ) 0

(0 = 0 ) (0) 0 (0) 0

(0) 0 (0) 0

( )

Cuando trabajamos con estrategias independientes del entorno, la condici�on

( ) ( ) permite formular el gen�erico con estrategia, introduci-

do en la De�nici�on 2.3.1, en la forma:

( ) ( ) = ( ( ) = )

= ( ) = ( [ ] )

donde la sustituci�on s�olo se aplica a la condici�on y a la parte derecha de la regla

empleada en el paso de derivaci�on. De forma an�aloga, para estrategias independientes

del entorno la relaci�on , introducida en la De�nici�on 3.2.3, se puede reformular

como sigue:

( ) ( ) = ( = )

= ( )

( [ ] )

En lo que sigue, haremos uso de estas equivalencias cuando sea conveniente.

El motivo de la restricci�on a estrategias independientes del entorno se puede en-

tender de forma precisa en la demostraci�on del siguiente teorema. A continuaci�on,

veremos tambi�en un ejemplo que ilustra la necesidad de esta propiedad para el resul-

tado de composicionalidad.

Hacemos notar que no vamos a considerar en la demostraci�on del teorema el

problema de los distintos renombramientos de las reglas del programa en las compu-

taciones paralelas para y , que pueden causar con ictos entre las variables de

las respuestas computadas para los subobjetivos paralelos. Para soluciones cl�asicas a

este problema ver, por ejemplo, [dBP90, Sar91].

; n

1 n

'

1 2

Teorema 3.2.6

Demostraci

on

;

; ;

; ;

; ; ;

; ; ;

; ;

; ;

;

;

; ; ;

0

0 0

0 0 0

*

0

0 0

j

0

0

0 0

0 0

0

0 0

0

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

Denotamos por una derivaci�on de longitud .

n

'

n

'

n

'

'

'

' ' n n '

' ' n n ' n

n

nu

n u r

' ' m m

' ' k k

n m k n m k

n n m k m k

m k

m m ' k

k

n n m k m k

m m m ' m

m m u r k m k

m k n

n m k

n u r r n r u r m r u k k

' ' m m ' m

1 2

1

1 2

1

1

1 2

2

2

1 2 1 2

1 2

1 2

1 2

1 2 1 1 1

1 2 1 1

1 11 11 1 1

2 21 21 2 2 11 21

1 2 1 2

1 2 1 2

1 2

1 1

1

1 1 2

1

2 1 2 1 2

1 2 1 2

1 1 1

1

1

1

1

1 1

1

1 1 2 1 2

1 2

1 2

1 2

1

2

1 10 10 1 1

1

1

Sea una estrategia de narrowing independiente del entorno. Dados

dos objetivos ecuacionales y , se cumple que :

sii

y

y

narrowing

h i h i

h i h i h i h i

* 6�

) h i � h * i h * i h * i �

h i � h * i h * i h * * i � h * i

� ! ( R 2

f g 6�

h i � h * i h * i

h i � h * i h * i � �

* 6� � � �

2 2 2

2 2

h * i h * i * 6�

* * 6� * * * 6�

2 h * i h * * i � h * i

* * * *

* * * *

(

h i � h * i h * i h * * i �

'

g g

g ; g ; � g ; ��

g ; � g ; �� g ; � g ; �� ;

� � � fail; n n n g g ; g :

g ; g

g g

g ; g ; � h ; � # : : : h ; � # g ; � � ; # �

n

n n >

g ; g ; � h ; � # : : : h ; � # g ; � # � g ; � �

r � � C << u ' h

� mgu h � fail g C; h � �

g ; � g ; � # : : : g ; � #

g ; � g ; � # : : : g ; � # ; # # � ;

# # # fail n m k h g ; g

u ' h h g ; g u ' g u ' g

u ' g u ' g

g ; � # g ; � � � � # fail

g g ; g n n n n m n k

� # � fail # # # # # � fail

u ' g g ; � # g ; � # � g ; � �

� # � g C; g � � � # # � #

# # � # � �

h g ; g '

g C; h � � C� ; h �� C� ; g �� ; g g ; g

g ; � g ; � # : : : g ; � # g ; � # �

40

( )

= = + = ( )

.

En la prueba, consideramos los objetivos ecuacionales m�odulo reordenamiento de

ecuaciones. Esto nos permite suponer, a lo largo de la demostraci�on, que la ocurren-

cia de un t�ermino en el objetivo compuesto ( ) se corresponde con la ocurrencia

del mismo t�ermino en el objetivo �o . Asimismo, realizamos la prueba usando la

variante de la relaci�on de gen�erico (denotada simplemente como ).

( ) Sea ( ) ( ).

Demostramos el lema por inducci�on sobre la longitud de la derivaci�on.

El caso base ( = 1) es inmediato. Consideramos, pues, el caso inductivo ( 1). Si

existe la derivaci�on:

( ) ,

entonces existe una regla ( ) y una ocurrencia ( ) tales

que = ( = ) y = ( [ ] ) .

Por la hip�otesis de inducci�on, existen las derivaciones:

y

( )

tales que = , 1 = ( 1) + ( 1) y = ( ).

Ya que ( ) y = ( ), entonces ( ) o bien ( ). Sea

( ) (el caso ( ) es perfectamente an�alogo). Ahora, es su�ciente

con demostrar que , con = y

= ( ), ya que = + es obvio para = y = 1.

Ya que y = , entonces . Ahora,

ya que ( ), entonces ,

donde = y = ( [ ] ) . Entonces, = ( ) =

= = (por la conmutatividad y asociatividad de ).

Finalmente, puesto que = ( ) y es independiente del entorno, entonces

= ( [ ] ) = ( [ ] ) = ( [ ] ) = ( ), m�odulo reor-

denamiento de ecuaciones.

( ) Consideremos las derivaciones:

Ejemplo 5

; ;

;

;

;

;

; ;

;

;

0

0

0

j

0

0

0

0 0 0

� 0 �

0

0

0

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

' ' k k

m m ' m

m mu

m u

n

'

n m

n m

n m ' n

m m

n m '

m m m m

' '

'

'

1

1

2 20 20 2 2

2

2 10 20

1 1

1

1

1 1

1

1

1 2

1

1 1 2

1 1

2

1 1 2 1 2

1 2 1 2 1 2

1 1 2

1 2 1 1 1 2 1

2 1 2

1 2

1 2 1

2

1 2

1 2 2

1

2

2 2

2 2

2 2

1

2

h * i

h i � h * i h * i � h * i � �

� �

h * i h * * i � !

( R 2 f g

h i h * * i

h * * i h * * i

* * * 6� * * 6�

* h * * i h *

* * i * * * *

* *

h i h > i h> i

h i h> i

h i h> i

h > i h i �

h > i h i

2

g ; � �

g ; � g ; � # : : : g ; � # g ; � � ; # # �

m k n; n m; k

n

n n >

g ; � # g ; � # � r �

� C << u ' g � mgu g �

g C; g �

g ; g ; � h ; � # � ;

h g ; g

h ; � # � h ; � � � :

� � � # � � fail # � � fail

h ; � # � g ; �

# � � � # � # � � #

� � � �

g g ; g n n n n m

n k

g ; g

g ; g ; � ; g � ; � ; ��

g ; � ; �

g ; � ; � :

; g � ; � g ; � � �

; g � ; � g ; �

u ' g � ' g

� g

g

Consideremos la siguiente derivaci�on de �exito para el objetivo :

junto con las derivaciones independientes:

Resulta f�acil comprobar que, en general, los estados computados independientemente

contendr�an en la parte entorno una sustituci�on m�as general que en el caso secuencial.

Este es el caso de los estados y , donde . Para obtener el

resultado de composicionalidad deseado, es necesario que cualquier paso de narrowing

que se pueda realizar sobre , se pueda realizar tambi�en sobre . Por

tanto, toda ocurrencia debe pertenecer tambi�en a . Es decir, la

sustituci�on (obtenida al explotar las ecuaciones de ) no debe introducir nuevos

redexes en . En general, s�� puede ocurrir lo contrario, es decir, s�� pueden aparecer

41

y

( ),

con ( + 1) + = 1, 0.

Realizamos la prueba por inducci�on sobre la suma de las longitudes de las deriva-

ciones.

El caso base ( = 1) es inmediato. Consideramos, pues, el caso inductivo ( 1).

Ya que , entonces existe una regla (

) y una ocurrencia ( ) tales que = ( = ) y

= ( [ ] ).

Por la hip�otesis de inducci�on, existe una derivaci�on:

( ) ( )

con = ( ). Entonces, es su�ciente con probar la transici�on:

( ) ( )

Ya que = ( ) = ( ) , entonces (por la

conmutatividad y asociatividad de ) y, por tanto, ( )

( ) . Ahora, ya que = , tenemos que ( ) = (

) = . De forma an�aloga al caso anterior, se cumple trivialmente que

= ( ) bajo reordenamiento de ecuaciones, y que = + , con = + 1

y = .

Ilustramos ahora, mediante un ejemplo, la relaci�on entre la restricci�on a estrategias

independientes del entorno y la propiedad de composicionalidad AND.

( )

( ) ( )

( )

( )

( ) ( )

;

1 2

� �

J

J

I

*

R

!

!

!

!

!

h i h f gi

f g 6� f g

Demostraci

on

Demostraci

on

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

Ejemplo 6

Lema 3.2.7

Lema 3.2.8

Lema 3.2.9

g ; g

twist s

twist s

twist one y

one s

one s y one y

g twist x ; x twist

twist x ; x twist ; � ; one y twist ; x=one y :

'

' one y twist : ; : : ' x twist :

'

restrict �; r

� r �

'

restrict �; r � r �

'

nuevos redexes en las derivaciones independientes que no se correspondan con los de la

derivaci�on secuencial para . Esto, sin embargo, no es ning�un problema ya que

el operador de composici�on paralela se encarga de eliminar dichas computaciones

inconsistentes.

narrowing

Sea el siguiente programa:

y consideremos el objetivo . Entonces, existe la

siguiente derivaci�on por narrowing (ordinario):

La estrategia no es independiente del entorno, ya que:

narrowing

narrowing narrowing

La estrategia de narrowing condicional b�asico es independiente del

entorno.

La estrategia de narrowing condicional \innermost" es independiente

del entorno.

La estrategia de narrowing condicional perezoso es independiente del

entorno.

42

( )

El siguiente ejemplo muestra que la relaci�on de ordinario no es inde-

pendiente del entorno (ni siquiera en el caso incondicional).

(0) (0)

( (0)) 0

( ( )) 0

(0) (0)

( ( )) ( )

( ( ) = 0 = (0))

( ( ) = 0 = (0)) (0 = 0 ( ) = (0)) ( )

( ( ) = (0)) = 1 1 1 2 1 2 = ( = (0))

A continuaci�on mostramos que las estrategias de condicional b�asico,

condicional \innermost" y perezoso s�� son independientes del

entorno.

. El resultado es trivial, ya que la sustituci�on computada nunca se

aplica en la parte esqueleto de los estados. Concretamente, la fuci�on ( ) =

para toda regla y sustituci�on .

. De forma an�aloga al caso b�asico, el resultado se sigue del hecho

de que la sustituci�on computada nunca se aplica en la parte esqueleto de los estados

(i.e. ( ) = para toda regla y sustituci�on ).

;

;

I

I

I

I

I

I I

�J

r

ur

V ar r

r

r

' ' '

0

j j

� 0 0

0

0

R R R

RR

R

Composicionalidad AND

Corolario 3.2.10

Ejemplo 7

Demostraci

on

Demostraci

on

1 2

1

2

1� ( )

2 2

1 2

1

2

2 2

2 2

1 2

1 2 1 2

1 2

h i h i

f g

h i h i

R

O O * O

� � >

O O O

*

*

R

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

restrict

g ; g ; � g ; g � ; ��

� mgu g � � � restrict �; r � r

restrict

� r

g � g

g ; g ; � g ; g � ; ��

g � g

' g � ' g

g ; g '

g ; g g g :

� �

g g

g twist x ; x twist

narrowing

Sea un programa, dos objetivos ecuacionales y una

estrategia independiente del entorno. Entonces,

narrowing narrowing

narrowing

narrowing

Sea el programa del Ejemplo 6, y consideremos de nuevo el objetivo

. Entonces, existe la siguiente derivaci�on por

43

. Ahora, la funci�on s�� puede devolver una sustituci�on que

podr��a introducir nuevas ocurrencias explotables. Consideremos la transici�on:

( ) ( )

donde = ( = ) y = ( ) = (siendo la regla

empleada en la reducci�on). Puesto que, por la de�nici�on de la funci�on , la

sustituci�on s�olo puede afectar a las variables de la regla , entonces se cumple que

= . Por tanto, para toda derivaci�on:

( ) ( )

se cumple que = y, por tanto, trivialmente se cumple la condici�on de indepen-

dencia del entorno ( ) ( ).

Establecida la independiencia del entorno de una estrategia, resulta sencillo demos-

trar la composicionalidad AND de la correspondiente relaci�on de como

consecuencia del Teorema 3.2.6.

( ) = ( ) ( )

. La prueba es un caso particular del Teorema 3.2.6 para y

.

El resultado enunciado en el Corolario 3.2.10 se aplica directamente a las sem�anti-

cas , y puesto que, por los Lemas 3.2.7, 3.2.8 y 3.2.9, dichas estrategias

son independientes del entorno. Queda establecida, de esta forma, la composiciona-

lidad AND de las estrategias de condicional b�asico, condicional

\innermost" y perezoso con respecto al operador de composici�on paralela.

Como hemos comentado, estos resultados de composicionalidad dependen de forma

esencial del hecho de estar tratando con una estrategia independiente del entorno.

Veamos un ejemplo que muestra la no composicionalidad del ordinario

usando el operador (sint�actico) de composici�on paralela .

( ( ) = 0 = (0))

;

;

;

;

;

;

; ;

; ;

u ;r u ;r

u ;r u ;r

[

1 1

] [

2 2

]

[

2 2

] [

1 1

]

Completitud Fuerte

n

i

'

' r ' r r

r r

'

r

'

r r

r r

r r

0

0 0 0

0 0

0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

1

1 2

1

1 2

1 2

1

2

1 2

1 1 2

1

2

1

1 2 1

2 1 2

1 2 1 2

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

De�nici�on 3.2.11 (funci�on de selecci�on )

Lema 3.2.12

h i h i

h f gi

h f gi

h f gi

h> f gi

f g

� ff g f gg

2 f g

D S

h i h i D

S

R

h i h * i h * * i

2 2 �

h i h * i h * * i

* * * *

twist x ; x twist ; � twist x ; x s ; �

; one y s ; x=one y

; s s ; x=one ; y=

; true ; x=one ; y=

; x=one ; y=

� x=one

g x twist x=twist ; x=s

g g

g e ; : : : ; e n >

i ; : : : ; n e g true

g; � g ; �

g

'

g ; g

g ; g ; � g ; g � ; � � g ; g � � ; � � �

u ' g u ' g ; g � ' g �

g ; g ; � g ; g � ; � � g ; g � � ; � � �

g ; g � � g ; g � � � � � � � �

narrowing (ordinario):

con sustituci�on de respuesta computada . Sin embargo, ya que el

objetivo s�olo computa las sustituciones ,

la soluci�on no puede ser obtenida por la composici�on (sint�actica) de las sustituciones

de respuesta computadas para y independientemente.

narrowing

strong completeness

narrowing

dont't

care funci�on de selecci�on

Una es

una aplicaci�on que asigna a todo objetivo , , un n�umero na-

tural denotando una ecuaci�on de distinta de .

Decimos que una derivaci�on de narrowing una funci�on de selecci�on ,

si el redex seleccionado en cada paso de pertenece a la ecuaci�on

.

narrowing

Sea un programa y una estrategia independiente del entorno. Dado

el objetivo ecuacional , entonces toda derivaci�on de la forma:

donde y , se puede reordenar de la forma:

tal que y .

44

( ( ) = 0 = (0)) ( ( ) = 0 = (0))

(0 = 0 ( ) = (0)) ( )

(0 = 0 (0) = (0)) (0) 0

(0 = 0 ) (0) 0

(0) 0

= (0)

( = (0)) (0) (0)

Antes de �nalizar este apartado vamos a demostrar que, si una estrategia de

posee la propiedad de composicionalidad AND, entonces el resultado de completitud

de dicha estrategia se puede enunciar como completitud fuerte ( ).

La completitud fuerte signi�ca completitud independientemente de la funci�on de se-

lecci�on de ecuaciones empleada [H�ol89, OMI95], i.e. no se pierde completitud cuando

se restringen las aplicaciones de la regla de a una sola ecuaci�on en cada

paso (las ecuaciones del objetivo se pueden seleccionar de forma indeterminista

). Introducimos, en primer lugar, la noci�on de .

[OMI95] funci�on de selecci�on

( ) 0

1

respeta

( )

Necesitamos, en primer lugar, el siguiente lema previo en el que se establece la

conmutatividad de los pasos de para estrategias independentes del entorno.

( )

( ) ( ) ( )

( ) (( ) ) ( )

( ) ( ) ( )

( ) = ( ) =

; ;

;

;

;

;

; ;

0 0 0

j

j

0 0

j

� 0 �

0

u ;r u ;r

u ;r

u ;r

u ;r

u ;r

Demostraci

on

Demostraci

on

Teorema 3.2.13 (completitud fuerte)

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

[

1 1

] [

2 2

]

1

21

2

[

1 1

]

1

[

2 2

]

1 2

2

[

2 2

]

2

[

1 1

]

1 2

1 2 1 2

' r ' r r

r

ur '

ur r ' u

u

' r r u

' r r r u r u

ru

' r r u

' r r r u r u

r r r u r u r r r u r u

' '

h i h * i h * * i

2 2 � ! ( R

f g � ! ( R

f g

h i h * i

h * * i

f g

h i h * i

h * * i

* * * *

*

R S

D � h i h> i D � h i h> i S

D

D S

1 2

1 2

1 2

1

2

1 2

1 1 2 2 1 1 1 1

1 1 1 2 2 2 2

2 2 2

1

1 1 1

2

2 2 2

1 2 1 1 1 2

2 1 1 1 2 2

2 2 2 2

1 2 2 1 2 2

1 2 1 1 2 2

2 1 1 1 2 2 1 2 1 1 2 2

narrowing

narrowing

Sea un programa, una funci�on de se-

lecci�on y una estrategia independiente del entorno. Entonces, para toda derivaci�on

, existe una derivaci�on que respeta .

narrowing

g ; g

g g

g ; g ; � g ; g � ; � � g ; g � � ; � � �

u ' g u ' g � r � � C <<

� mgu g � � restrict �; r r � � C <<

� mgu g � � � restrict �; r g C ; g � g

C ; g � '

g ; g ; � C � ; g � � ; g ; � �

C � ; C � ; g � � ; g � � ; � � � :

g g � � mgu g �

g ; g ; � C � ; g ; g � � ; � �

C � ;C � ; g � � ; g � � ; � � � :

C � ; C � ; g � � ; g � � C � ;C � ; g � � ; g � �

� � � � � �

'

g; � ; � g; � ; �

45

. En la prueba, consideramos los objetivos ecuacionales m�odulo re-

ordenamiento de ecuaciones. Esto nos permite suponer a lo largo de la demostraci�on

que la ocurrencia de un t�ermino en el objetivo compuesto ( ) se corresponde con

la ocurrencia del mismo t�ermino en el objetivo �o .

Consideremos la derivaci�on:

( ) ( ) ( )

donde ( ) y ( ). Entonces existen ( ) ,

= ( = ), = ( ) y ( ) ,

= ( = ), = ( ) tales que = ( [ ] ) y =

( [ ] ). Dado que es una estrategia independiente del entorno, es posible

escribir la anterior derivaci�on de la forma:

( ) ( [ ] )

( [ ] [ ] )

Por tanto, = y = ( = ) y, por la de�nici�on de la relaci�on de

, existe la derivaci�on:

( ) ( [ ] )

( [ ] [ ] )

Ahora, ( [ ] [ ] ) = ( [ ] [ ] ) bajo

reordenamiento de ecuaciones, y = , por la conmutatividad del

operador .

El siguiente teorema establece la completitud fuerte de una estrategia de

composicional bajo las mismas condiciones exigidas para garantizar la completitud de

�esta.

. La prueba es inmediata a partir del Lema 3.2.12 ya que, aplicando

repetidamente pasos de conmutaci�on, es posible reordenar cualquier derivaci�on en

una nueva derivaci�on que respete .

En el siguiente punto, explotamos la composicionalidad de la sem�antica para in-

corporar paralelismo en el c�alculo de .

2

'

[ ]

7�!

u;r

� � J I

j

0 0

0 0

'

'

'

u

r ' e u r

' e

' '

'

2

1

1

1 2

2

2 1 2

1 2

1 2

1 2

3.2.2 Narrowing Composicional

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

De�nici�on 3.2.14 (narrowing composicional con estrategia )

Escribiremos cuando sea necesario distinguir la ocurrencia y la regla usadas.

7�!

R

7�!

h i 7�! h i

2 ^ � ! ( R ^ f g

^ ^

h i 7�! h i

h i 7�! h i ^ h i 7�! h i ^ * 6�

h i 7�! h * i

7�! 7�! 7�! 7�!

true; � true; �

u ' e r � � C << � mgu e � �

� restrict �; r g C; e � �

e; � g ; ��

g ; � g ; �� g ; � g ; �� � � fail

g ; g ; � g ; g ; � � �

true

narrowing

narrowing

narrowing

Dado un programa , de�nimos la relaci�on de narrowing composicional con estrategia

como la menor relaci�on que satisface :

narrowing

narrowing

narrowing

46

En este apartado, formalizamos una caracterizaci�on composicional de la sem�antica

operacional de los programas l�ogico-funcionales, siguiendo un estilo similar al pre-

sentado en [Pal90] para programas l�ogicos. La idea b�asica consiste en permitir que

distintas ecuaciones del objetivo sean reducidas independientemente, \combinando"

a continuaci�on las sustituciones obtenidas. Este modelo de paralelo fue

planteado por primera vez en [Red85].

Sin embargo, el modelo de computaci�on resultante no es siempre equivalente al

modelo secuencial, i.e. no calcula el mismo conjunto de respuestas computadas. Para

ello, un requisito indispensable es que la relaci�on de que se emplea como

base del c�alculo paralelo posea la propiedad de composicionalidad AND. Veamos,

primero, c�omo extender la relaci�on de gen�erico con estrategia para permitir

la reducci�on paralela de las ecuaciones del objetivo.

(1)

(2)

( ) ( ) = ( = )

= ( ) = ( [ ] )

(3)

( ) ( ) ( )

Informalmente, en la computaci�on del modelo formalizado por este sistema de

transici�on, todas las ecuaciones en el objetivo ecuacional pueden ser reducidas al

mismo tiempo. Entonces, las sustituciones resultantes de dichas computaciones locales

se combinan por medio del operador de composici�on paralela para obtener el resultado

global (de cada paso). La regla (1) se introduce simplemente para permitir que el

c�alculo ignore aquellas ecuaciones del objetivo que ya han sido reducidas a .

De forma an�aloga a la de�nici�on de la relaci�on de gen�erico con estra-

tegia, el c�alculo composicional se puede instanciar para las distintas relaciones de

que hemos presentado en la Secci�on 2.3. De esta forma, las relaciones

, , y denotan, respectivamente, las versiones composicionales de

las relaciones de condicional ordinario, b�asico, \innermost" y perezoso. A

R

R

j

0 0

0 0 0 0

*

Demostraci

on

'

'

V ar g

'

'

'

'

'

n

'

n

'

n

'

'

'

� ( )

+

1 2

1

1

1 2

2

2 1 2

1 2

1 2

1 2

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

Ejemplo 8

De�nici�on 3.2.15 (conjunto de �exitos composicional )

Lema 3.2.16

R

h i 7�! h f gi

h i 7�! h f gi

h i 7�! h f gi

f g * f g f g 6�

h f gi 7�! h f gi

h f gi 7�! h f gi

h f gi 7�! h f gi

h f gi 7�! h> f gi

f g

C

R

R

C f j h i 7�! h> ig

h i 7�! h> i

R

C

O

7�!

h i 7�! h * i h i 7�! h * i * 6�

h i 7�! h * i *

7�!

7�!

g w one y twist y

w one y ; twist y ; � w one x ; ; y=s ; x=

w one y ; � w one x ; y=s x ;

twist y ; � ; y=s

y=s x y=s y=s ; x= fail

w one x ; ; y=s ; x= w s ; true ; y=s ; x=

w one x ; y=s ; x= w s ; y=s ; x=

; y=s ; x= true; y=s ; x=

w s ; true ; y=s ; x= ; y=s ; x= ;w=s

� y=s ; w=s

g

g '

g � g; � ; � ;

g; � ; �

g g

g ; � g ; � � ; g ; � g ; � � � � fail

g ; g ; � g ; � � ; g g ; g � � � :

narrowing

Consideremos de nuevo el programa del Ejemplo 6. Dado el objetivo

, , existe la siguiente derivaci�on por narrowing compo-

sicional b�asico:

ya que

y

ya que y

con sustituci�on de respuesta computada .

Dado un programa

y un objetivo ecuacional , formulamos la sem�antica operacional (o conjunto de

�exitos) composicional de con respecto a usando la estrategia como sigue:

en la que las derivaciones se realizan usando las reglas del programa

extendido .

Dados dos objetivos ecuacionales y , se cumple que:

si y

entonces con y

narrowing

47

continuaci�on, ilustramos el comportamiento del c�alculo tomando como instancia la

relaci�on de composicional b�asico.

( = ( ) ( ) = 0)

( = ( ) ( ) = 0) ( = ( ) 0 = 0) (0) 0

( = ( ) = ( ) ( )

( ) = 0 0 = 0 (0)

( ) (0) = (0) 0 )

( = ( ) 0 = 0) (0) 0 ( = (0) ) (0) 0

( = ( ) (0) 0 = (0) (0) 0

0 = 0 (0) 0 (0) 0 )

( = (0) ) (0) 0 (0) 0 (0)

= (0) (0)

El modelo de computaci�on formalizado en la De�nici�on 3.2.14 puede ser tomado

como base para un modelo de computaci�on AND-paralelo (dependiente) de programas

l�ogico-funcionales. A continuaci�on, se de�ne la sem�antica operacional del conjunto de

�exitos asociada al nuevo c�alculo.

( ) =

Establecemos a continuaci�on la equivalencia entre la sem�antica composicional

y la sem�antica est�andar . Como era de esperar, dicha equivalencia s�olo se cumple

para estrategias independientes del entorno, ya que la regla (3) de la relaci�on

requiere la propiedad de composicionalidad AND para no perder la completitud. Ne-

cesitamos, en primer lugar, el siguiente lema.

( ) = ( ) =

. Realizamos la prueba usando una variante de la relaci�on

de composicional (denotada simplemente como ), en el estilo de la

; ;

i

i

i

m m

Teorema 3.2.17

Demostraci

on

1

1

1 1

1

2

1

2 2

2

1 2

1

1 +1

1

1

1

2

+1

1 2

1 2

1 2

0

0

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

'

'

n

'

'

n

'

'

n

'

k k m

m

'

i i i i i

i

iu

i

k

'

i i i i i

i

iu

i

km

'

i i

i iu

i

i

i

j

j

'

' '

' ' m

m ' '

n m n

Dado un programa , una estrategia independiente del entorno

y un objetivo , se cumple .

*

� 0 0 0 0 0 0

� 00 00 0 00 00 0

0 00 0 00 0 00

0 0 0 0 0

0

j

0 0 0 00

00 0 00 00

00

j

00 00 00

0 0

j

0 00 0 00

0 00 0 00 0 00 0 0 00 00

0

0 0 0 0

R R

7�!

7�!

h i 7�! h * i 7�! h * * i � h * i

h i 7�! h * i 7�! h * * i � h * i

h i 7�! h * i

*

h * i 7�! h * * i

! ( 2 f g 6�

* * h *

i 7�! h * * i

! ( 2 f g 6�

* *

h * i 7�! h * * i � h * i

2

f g 6�

* 6�

* * * * * * * *

* h * i 7�! h * * i �

h * i *

R

O C

� h i h> i

6� h i 7�! 7�!

h> i

n

n

n >

g ; � h ; � # g ; � # � g ; � �

g ; � h ; � # g ; � # � g ; � �

g ; g ; � h; � #

h h ; h # # # h e ; : : : ; e h e ; : : : ; e

h e ; : : : ; e

h ; � # g ; � # �

� � C u ' e � mgu e � fail

i ; : : : ; k � � : : : � h ; �

# g ; � # �

� � C u ' e � mgu e � fail i k ; : : : ;m

� � : : : �

h; � # g ; � # � g ; � �

u ' e i ; : : : ;m

� mgu e � fail i ; : : : ;m

� � i ; : : : ; k � � j k ; : : : ;m � � � fail

# # # � # � # # � � # � # �

� � h; � # g ; � # �

g ; � � g g ; g � � �

'

g g g

g ; � : : : ; �#

# fail g ; � : : :

; �� # �

m

48

relaci�on introducida en la De�nici�on 3.2.3. La equivalencia entre la relaci�on y

la relaci�on se puede demostrar de forma inmediata de manera similar al Lema

3.2.4. Demostramos el lema por inducci�on sobre la longitud de las derivaciones.

= 1. El resultado se sigue trivialmente haciendo uso de la regla (3) del c�alculo

composicional.

Consideremos el caso inductivo 1. Dadas las derivaciones:

y

,

por la hip�otesis de inducci�on, existe la derivaci�on ( ) , con

= ( ) y = . Sean = ( ) y = ( ) tales que

= ( ).

Dado que entonces, por las reglas del c�alculo

composicional, existen ( ), ( ) y = ( = ) ,

= 1 , tales que = . De manera an�aloga, ya que

entonces, por las reglas del c�alculo composicional, existen

( ), ( ) y = ( = ) , = + 1 , tales

que = .

Ahora, es su�ciente con demostrar el paso .

Para ello, consideramos las mismas ocurrencias ( ), = 1 , para las que

deben existir las sustituciones = ( = ) , = 1 . Puesto

que = , = 1 y = , = + 1 , entonces = . Ya

que = , entonces = = = ( ) ( ) =

. Por tanto, es posible probar la transici�on

con = ( ) y = , tal y como era requerido.

Podemos demostrar ahora la equivalencia entre la sem�antica secuencial y su versi�on

composicional.

( ) = ( )

.

( ) Demostramos que, para toda derivaci�on de �exito tal

que , existe una derivaci�on de �exito composicional

tal que = . Realizamos la prueba por inducci�on sobre la longitud

de la primera derivaci�on. Por simplicidad, asumimos que el renombramiento de las

cl�ausulas elegido en la derivaci�on secuencial coincide con el elegido para la derivaci�on

composicional.

1 1 1 1

1

1

1

1

;

; ;

;

;

; ;

; ;

; ;

;

;

; ;

m m

i k i k

m m

i k

n

n

n

n

i

i

n

n

n

n

i

i

3.2. COMPOSICIONALIDAD DE LA SEM

ANTICA

0 00 0 00

0 0

00 00 0 00

0

0 00 00 0 0 00 00

0 00

0 00 0 00

0 0

0

j

0

0

� �

0 0 0 0

� � � �

j�

0

0

� �

0 1 0

0 1 1 1

0 1 1

0 1 1

0 1 1 0

0 1 1 1 1

0

0 0 0 0

0

0

0

0

0

0 0

0

0

0 1 0 1 1

1 1 1 1

1

0 1 1 1 1

0

1 1

0 0

0 1

1 1 1 1 1

1

1 1 1 1

'

'

' '

' m m

' '

n m n '

'

' '

i

' '

k

m

i k

m

' '

n

' '

n i nk

n

'

'

' n n

n n ik

m

' ' n n n

' '

m

m

m

n m n

k '

i i i i i i

i iu

i

i

' i i

i ' i i i u

i

i i i k k

i ' i i

'

m m m k m k

' '

n n ' n n n

' '

m

m

m

n m

n n k n n ' n n

i i i i i

i i iu

n i

i

' i i

i n ' i i i u

i

n i i n i n k

h i h> i

h i 7�! h> i

h i h i

h> i 6�

h i 7�! 7�!

h> i h i h i

h i 7�! h i

h i h> i

h i h> i * 6�

h i 7�! 7�!

h> i h i 7�! 7�! h> i

h> i 7�! h> i

h i � h i 7�!

7�! h> i * *

h i 7�! 7�! h i 6�

h i h i

� h i 7�! h i

� ! ( 2

f g 6�

h i 7�! h i � h i * *

6� h i h i

(

h i h i * *

h i 7�! 7�!

h i 7�! h i 6�

h i h i �

� h i 7�! h i

� ! ( 2

f g 6�

h i 7�! h i � h i

m g ; � ; �# g

g ; � ; �� � #

m > g ; � g ; �#

: : : ; �# # fail

g e g ; �# : : :

; �� # � g ; � g ; �# g e

g ; � g ; �� � #

g g ; g g g

g ; � : : : ; �#

g ; � : : : ; �# # # # # fail m > i m > k

g ; � : : :

; �� g ; � : : : ; �� # � # �

; � ; �

i k g ; � g ; g ; �

: : : ; �� � � � # # #

g ; � : : : g ; � � fail

g ; � : : : g ; #

g g # � n

n g e ; : : : ; e k g ; � g ; �

r � � C u ' e

� mgu e � fail � restrict � ; r i ; : : : ; k

e ; � C ; e � � ; � c ; � g c ; : : : ; c � � : : : �

� fail e ; � c ; �

'

g ; � g ; # g c ; : : : ; c g # � : : : � �

n > g ; � : : :

g ; � g ; � � fail

g ; � : : : g ; # g g g g #

� g e ; : : : ; e k g ; � g ; �

r � � C u

' e � mgu e � � fail � restrict � ; r i ; : : : ; k

e ; � C ; e � � ; � � c ; � � g c ; : : : ; c

49

Sea = 1. Si , entonces consta de una sola ecuaci�on y, por la

regla (2) del c�alculo composicional, , con = .

Consideramos ahora el caso inductivo. Si 1 entonces

, con . Consideramos 2 casos:

(i) Sea = . Por la hip�otesis de inducci�on, existe

tal que = . Ya que y = , entonces

por la regla (2) de la De�nici�on 3.2.14, con = .

(ii) Sea = ( ), donde y son secuencias de ecuaciones no vac��as. Enton-

ces, por el Teorema 3.2.6, existen las derivaciones y

tales que = , , y .

Por la hip�otesis de inducci�on, existen las derivaciones

y tales que = y = . Final-

mente, por el Lema 3.2.16 (consideramos tantos pasos como

sean necesarios para que = ), existe la derivaci�on ( )

tal que = = = .

( ) Vamos a demostrar un resultado m�as general. Concretamente, demostramos que

para cada derivaci�on composicional tal que ,

existe una derivaci�on secuencial correspondiente tal que

= y = . Demostramos el resultado por inducci�on sobre la longitud de

la primera derivaci�on. Asumimos la misma consideraci�on respecto al renombramiento

de las cl�ausulas que en el caso anterior.

Sea = 1 y asumimos = ( ), 1. Si entonces,

por las reglas de la De�nici�on 3.2.14, existen ( ), ( ),

= ( = ) y = ( ), = 1 , tales que

( [ ] ) y = ( ), = ,

. Por la De�nici�on 2.3.1, existen las derivaciones . Dado

que es independiente del entorno, por el Teorema 3.2.6 ( ), existe la derivaci�on

, con = ( ) = y = = .

Consideremos ahora el caso inductivo. Si 1, entonces

, con y, por la hip�otesis de inducci�on, existe

( ) tal que = y =

. Asumimos que = ( ), 1. Si

entonces, por las reglas de la De�nici�on 3.2.14, existen ( ),

( ), = ( = ) y = ( ), = 1 ,

tales que ( [ ] ) , = ( )

3

E R

;

;

1

1

�J

n

n

n

n n n

1 1

1 1

1 1 1

3

1 2

1 2 1 2

� �

0 � 0

R

R

R R R

R R R

3.3 Observaciones

Demostraci

on

Demostraci

on

n n k

i n ' i n i

m

m

' m

m m k n m n

k n

'

'

' ' '

* * 6�

h i h i (

h i h i * *

E

R

C E

O

R

C C * C

C C C

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL

Corolario 3.2.18 (completitud)

Corolario 3.2.19

Aqu�� denota la teor��a de Horn ecuacional axiomatizada por .

� � � : : : � fail

e ; � c ; � �

g ; # g ; # g c ; : : : ; c g # � � : : :

� �

g

' g

g g

g ; g '

g ; g g g :

narrowing

narrowing

narrowing narrowing

Dado un programa , un objetivo y una estra-

tegia independiente del entorno , es un conjunto completo de -uni�cadores

de si lo es.

Sea un programa, dos objetivos ecuacionales y una

estrategia independiente del entorno. Entonces,

narrowing narrowing

narrowing

redexes narrowing

redexes

50

y = ( ) . Por �ultimo, por la De�nici�on 2.3.1, existen

las derivaciones y, por el Teorema 3.2.6 ( ), se cumple

, con = ( ) = y = (

) = , tal y como dese�abamos.

Como consecuencia del Teorema 3.2.17, cuando la estrategia es independiente del

entorno, toda soluci�on encontrada por secuencial es encontrada tambi�en por

su versi�on composicional. Por tanto, las relaciones de composicional b�asico,

composicional \innermost" y composicional perezoso permiten

obtener un conjunto completo de -uni�cadores.

( )

( )

. Inmediata por el Teorema 3.2.17.

Otra consecuencia directa de la equivalencia entre la sem�antica secuencial y su

versi�on composicional es que, si una de ellas posee la propiedad de composicionalidad

AND, entonces la otra tambi�en la posee.

( ) = ( ) ( )

. Inmediata por el Corolario 3.2.10 y el Teorema 3.2.17.

El Corolario 3.2.19 se aplica de forma inmediata a las sem�anticas , y

puesto que, por los Lemas 3.2.7, 3.2.8 y 3.2.9, dichas estrategias son independientes

del entorno. Queda establecida, de esta forma, la composicionalidad AND de las

estrategias de composicional b�asico, composicional \innermost"

y composicional perezoso.

En primer lugar, n�otese que el modelo de computaci�on presentado en la De�nici�on

3.2.14 no ha sido de�nido para conseguir paralelismo maximal, en el sentido de que

no todos los del objetivo pueden realizar un paso de independiente-

mente. Concretamente, los que ocurren en una misma ecuaci�on no pueden ser

reducidos en paralelo, mientras que s�� podr��an hacerlo. Para evitar esta limitaci�on,

j

j

' uu

uu

2 ^

h i 7�! h i

u ' g x

g; � g x ; g x ; �

g g x

3.3. OBSERVACIONES

aplanamiento

independientes

dependiente

51

basta con a~nadir al c�alculo la siguiente regla de , siempre que preserve

las soluciones alcanzables en la correspondiente estrategia:

(4)

( ) es una nueva variable

( [ ] = )

donde y [ ] contienen al menos un s��mbolo de funci�on de�nido [NRS89]. Por

ejemplo, esta regla de aplanamiento preserva las respuestas computadas con respecto

a la estrategia b�asica [NRS89]. De esta forma, se podr��a incluir en el c�alculo com-

posicional (utilizando alguna heur��stica) para controlar el nivel de granularidad en el

paralelismo, sin que la correcci�on del c�alculo se vea afectada.

La aproximaci�on que hemos presentado di�ere de otros modelos de ejecuci�on AND-

paralelos, como el que aparece en [KMH92], en el que las subexpresiones son reduci-

das en paralelo �unicamente si son , es decir, si no comparten variables

[HR95]. Se impone un modelo de sincronizaci�on \conducido por la demanda" que

obliga a los procesos a esperar el valor de una subexpresi�on paralela si dicho valor

es demandado. Por otro lado, en [KH91], se explota un modelo de ejecuci�on AND-

paralelo (i.e. se permite la reducci�on paralela de t�erminos que comparten

variables), pero el mecanismo de sincronizaci�on impuesto produce demasiada sobre-

carga.

El c�alculo composicional presentado en la De�nici�on 3.2.14 se puede considerar

un modelo de ejecuci�on AND-paralelo dependiente. Este tipo de modelos suele in-

troducir, en general, una p�erdida importante de e�ciencia respecto a los modelos

independientes [Zha94]. Concretamente, se debe utilizar la operaci�on de composici�on

paralela en cada paso (para obtener la soluci�on global, en caso de que las distintas sus-

tituciones generadas sean compatibles) y, adem�as, se puede perder tiempo intentando

uni�car con reglas que no generen sustituciones compatibles. En el caso de la pro-

gramaci�on l�ogica, se han obtenido mejoras signi�cativas sobre el modelo dependiente

explotando en paralelo s�olo aquellos �atomos que uni�can (en tiempo de ejecuci�on) con

una sola cl�ausula del programa (�atomos deterministas). Este modelo determinista de

paralelismo dependiente se usa, por ejemplo, en los lenguaje Andorra-I [Cos91] y P-

Prolog [Yan87]. Esto sugiere que la adaptaci�on de esta t�ecnica al caso de programas

l�ogico-funcionales podr��a incrementar tambi�en la e�ciencia del c�alculo propuesto.

Por �ultimo, destacar que, forzando la uni�on de las soluciones paralelas cada vez

que las ecuaciones del objetivo han realizado un paso independientemente, el modelo

de ejecuci�on resultante puede no cubrir todo el paralelismo potencialmente explo-

table. La composicionalidad AND de las sem�anticas secuenciales (Corolario 3.2.10)

sugiere la existencia de otros esquemas de computaci�on posibles. Por ejemplo, po-

demos resolver en paralelo todas los ecuaciones del objetivo, componiendo sus solu-

ciones �unicamente cuando dichas ecuaciones est�an completamente resueltas, en lugar

de forzar la sincronizaci�on de las ramas paralelas en cada paso. Este esquema se

CAP��TULO 3. SEM

ANTICA COMPOSICIONAL52

emplear�a, posteriormente, para desarrollar un an�alisis est�atico composicional de pro-

gramas l�ogico-funcionales.

53

Parte I

An�alisis Sem�antico

Cap��tulo 4

Narrowing Abstracto

4.1 Interpretaci�on Abstracta

narrowing

narrowing

narrowing

narrowing

interpretaci�on

abstracta

En este cap��tulo desarrollamos un marco para el an�alisis est�atico de programas l�ogico-

funcionales, basado en la idea de construir aproximaciones de la sem�antica operacional

del programa. Formalizamos un esquema de an�alisis simple, uniforme y potente que

admite instancias para diferentes relaciones de (formalizadas mediante sis-

temas de transici�on), y permite estudiar distintos tipos de propiedades (relacionadas

con el conjunto de �exitos) de manera correcta.

En la Secci�on 4.1, recordamos brevemente algunos conceptos b�asicos sobre la teor��a

de la interpretaci�on abstracta y, en particular, sobre los an�alisis formalizados en

[AFM95, CFM94]. En la Secci�on 4.2 presentamos los nuevos dominios y operado-

res abstractos, as�� como el sistema de transici�on abstracto que formaliza la relaci�on

de aproximado. La correcci�on del an�alisis se demuestra de forma general

respecto a un programa abstracto, e independientemente de la estrategia de

concreta que se aproxima (siempre que sea independiente del entorno). En la Secci�on

4.3, mostramos una t�ecnica general para asegurar la terminaci�on del an�alisis. Por �ulti-

mo, en la Secci�on 4.4, formulamos una versi�on composicional del abstracto

que permite introducir incrementalidad y paralelismo en el proceso de an�alisis.

Los an�alisis de ujo de datos son un componente esencial de muchas de las herramien-

tas de programaci�on actuales. Sin embargo, los an�alisis pueden ser muy complejos y,

por tanto, dif��ciles de dise~nar y demostrar correctos. La teor��a de la

, introducida por Cousot y Cousot [CC77], ofrece alguna ayuda para forma-

lizar la relaci�on entre an�alisis y sem�antica. La intuici�on detr�as de la interpretaci�on

abstracta, consiste en considerar el an�alisis como una sem�antica no est�andar, en la

que los datos son sustituidos por \descripciones de datos" y a los operadores se les

55

h i

!

T

Desc D; ;E

D E

D }E

E

Sub Goal

De�nici�on 4.1.1 (descripci�on )

CAP��TULO 4. NARROWING ABSTRACTO

relaci�on de aproximaci�on funci�on de concretizaci�on

Una cons-

ta de un dominio de descripci�on (un poset) , un dominio de datos (un poset) , y

una funci�on (anti-)mon�otona de concretizaci�on .

descripci�on de t�erminos descripci�on de sustituciones descripci�on

de objetivos

56

asocia una interpretaci�on no est�andar. La interpretaci�on abstracta resulta �util en la

medida en que facilita la demostraci�on de la correcci�on de los an�alisis existentes, y

ayuda en el dise~no de nuevos an�alisis.

Existen varios marcos para la interpretaci�on abstracta, diferenci�andose entre s�� por

la forma en que la interpretaci�on no est�andar se relaciona con la interpretaci�on

est�andar. El marco original de Cousot y Cousot [CC77, CC79] fue desarrollado en el

contexto de los lenguajes de programaci�on imperativos. La correcci�on del an�alisis se

formaliza en t�erminos de una funci�on de \abstracci�on", que asigna a cada objeto su

mejor descripci�on, y una funci�on de \concretizaci�on", que asigna a cada descripci�on

el mayor objeto que �esta describe. Un segundo marco, de�nido por Burn, Hankin y

Abramsky [BHA86] y utilizado por Nielson [Nie88] (desarrollado en el contexto de

los lenguajes funcionales), elimina el requerimiento de una funci�on de concretizaci�on,

exigiendo s�olo la existencia de una funci�on de abstracci�on continua. Un tercer marco,

de�nido por Marriott y Sondergaard [MS89, MS92], y desarrollado en el contexto

de los lenguajes de programaci�on l�ogicos, requiere la existencia de una funci�on de

concretizaci�on, pero elimina la necesidad de una funci�on de abstracci�on. Un cuarto

marco, de�nido por Mycroft y Jones [MJ86], permite una relaci�on de aproximaci�on

arbitraria y fue desarrollado en el contexto de los lenguajes no recursivos.

Por �ultimo, en [Mar93], Marriott de�ne un marco general basado en funciones de

concretizaci�on y abstracci�on, pero extendidas de manera que a las descripciones de

objetos se les asocia, no elementos individuales, sino conjuntos de elementos. M�as a�un,

no se exige la existencia de ambas funciones. En su m�axima generalidad, este marco

permite cualquier tipo de relaci�on de aproximaci�on, siendo as�� equivalente al marco

de Mycroft y Jones. En [CFM94], se de�ne una instancia de dicho marco basada

en abstraer sistemas de transici�on, con la que se formaliza una aproximaci�on de la

sem�antica operacional de los lenguajes l�ogicos concurrentes. As��mismo, los distintos

an�alisis de insatisfacibilidad ecuacional descritos en [AFM95] pueden verse como una

instancia del marco de Marriott para programas l�ogico-funcionales.

Siguiendo una aproximaci�on similar a la presentada en [AFM95, CFM94], de-

�nimos la en t�erminos de una ,

que asigna a los elementos del dominio no est�andar aquellos elementos del dominio

est�andar que est�an siendo descritos.

[CFM94] descripci�on =

:

Cuando el dominio de datos se corresponde con el dominio de t�erminos , el

dominio de sustituciones o el dominio de objetivos , la descripci�on asociada

recibe el nombre de , o

, respectivamente.

1

2

1 2

0 0

0

A A

A

A A A A A

A A A A

A

A

A

A

0

A

0

0

4.1. INTERPRETACI

ON ABSTRACTA

1 1 1 2 2 2 1

2 1 2 1 1

1 1 1 2 2 2 1 2 1 2

1 2 1 2 1 2 1 2 1 1 2 2

/ 2

� h i h i !

! / 8 2 8 2 / )

/

� h i h i �

� / / ^ /

/

fh i j 2 2 g

! !

� h i

2 2 /

/

De�nici�on 4.1.2 (relaci�on de aproximaci�on )

De�nici�on 4.1.3

De�nici�on 4.1.4 (descripci�on de estados inducida)

d e d e e d

D ; ;E D ; ;E F D

D F E E F F d D ; e E : d e

F d F e

D ; ;E D ; ;E d ; d D D

e ; e E E d ; d e ; e d e d e

d e

d e Desc

Goal Sub

State

Goal Sub State g; � g Goal ; � Sub

subs State Sub goal State Goal

State subs s g goal s � s g; �

subs goal

State

Goal

Sub s State s State s s

subs s subs s

aproximaci�on

Decimos que -aproxima a , y lo denotamos , si y s�olo si . La

relaci�on de aproximaci�on se puede extender a funciones y productos cartesianos como

sigue:

Dadas dos descripciones y , y las funciones

y , decimos que sii

.

Dadas las descripciones y y las tuplas

y . Entonces sii .

Sea una descripci�on de objetivos y una descripci�on

de sustituciones. De�nimos el , inducido por

y , como .

De�nimos las funciones y ,

asociadas a , de la forma: y , si . Las

de�niciones de y se extienden de forma natural a conjuntos de estados.

Sea un dominio de

estados abstractos inducido por una descripci�on de objetivos y una descripci�on

de sustituciones . Sea y , entonces sii:

1. , y

57

En la De�nici�on 4.1.1, exigimos que la funci�on de concretizaci�on sea anti-mon�oto-

na (respecto al orden de inclusi�on de conjuntos). El motivo de esta restricci�on es sim-

plemente re ejar la idea de que, cuanto menor es un elemento del dominio abstracto

(menos preciso), mayor es el conjunto de elementos del dominio concreto que �este

describe. Formalizamos a continuaci�on nuestra noci�on de , basada en la

funci�on de concretizaci�on.

[CFM94]

( )

:

: (

( ) ( ))

( ) :

( ) : ( ) ( )

Cuando est�e claro por el contexto, diremos que aproxima a y lo denotaremos

simplemente como . Por abuso de notaci�on, a veces representaremos con

tanto una descripci�on como el dominio de dicha descripci�on.

El dominio de estados abstractos es param�etrico respecto a los dominios de ob-

jetivos y sustituciones abstractos. Cuando en un an�alisis particular se �jan dichos

dominios, el dominio de estados abstractos sobre el que se realizar�an las computacio-

nes aproximadas viene dado por la siguiente de�nici�on.

dominio de estados abstractos

=

: :

( ) = ( ) =

Haciendo uso de la de�nici�on est�andar de aproximaci�on (De�nici�on 4.1.1), pode-

mos formalizar ahora la relaci�on existente entre los dominios de estados abstractos y

concretos.

( ) ( )

0

A

0 0

A A A

A

A

R A A

A

R A A

A

R

0

A

0

A

R

0

/

!

f 2 j / g

h i

R

! � � R

! G

!

G

� G

� 2 !

h> i

CAP��TULO 4. NARROWING ABSTRACTO

4.2 Sem�antica Operacional Abstracta

De�nici�on 4.1.5 (sistema de transici�on abstracto )

goal s goal s

State }State

s s State s s :

Goal Sub State ; ; State

s State

, State State

, s State State

,

s

t; t State t t t , t

; �

2. .

De�nimos la funci�on de concretizaci�on de la forma:

As��, la descripci�on de estados inducida por y es .

Sea un programa, un estado y una descripci�on de estados inducida. Sea

una relaci�on (dependiente de ). Un

para , y es un grafo de transici�on con elementos de

como nodos y de�nida en t�erminos de la relaci�on de reducci�on abstracta . El

grafo debe satisfacer las siguientes condiciones:

El nodo fuente de es una aproximaci�on de .

Dados los estados abstractos , existe un arco de a sii .

�nito

narrowing

narrowing

narrowing

58

( ) ( )

:

( ) =

De�nimos ahora el concepto de sistema de transici�on abstracto. La de�nici�on

es param�etrica con respecto a un dominio de estados abstractos y una relaci�on de

reducci�on entre estados abstractos. Estos elementos deben ser instanciados en un

eventual proceso de especializaci�on del marco.

[AFM95]

sistema de transici�on

abstracto

Un sistema de transici�on abstracto debe aproximar al sistema de transici�on que

de�ne la sem�antica operacional concreta. La idea consiste, b�asicamente, en aproximar

el comportamiento de un programa y un estado inicial mediante un sistema de tran-

sici�on abstracto cuyos nodos est�an etiquetados con descripciones de estados, de

forma que todos los estados de �exito concretos est�en aproximados por estados

abstractos del grafo de transici�on. En la De�nici�on 4.2.14 introducimos una instan-

cia del concepto de sistema de transici�on abstracto, que aproxima correctamente a

la sem�antica operacional concreta basada en la relaci�on de gen�erico con

estrategia.

En esta secci�on exponemos los fundamentos del an�alisis que presentamos. Empezamos

de�niendo los dominios aproximados y establecemos de forma precisa su relaci�on

con los dominios concretos. Posteriormente, estudiamos c�omo se deben abstraer los

operadores involucrados en el c�alculo de , y demostramos la correcci�on de

la aproximaci�on con respecto a los operadores concretos.

Antes de presentar la relaci�on de abstracto queremos puntualizar que,

por simplicidad en el desarrollo, vamos a tomar como base para el an�alisis la relaci�on

;

1 1

1 1 1 1

'

n n

n n n n

4.2.1 Dominios Abstractos

*

A

A

A

A A

0 0

A

0 0 0 0

0

A

0 0 0 0

A

A

A

0 0

4.2. SEM

ANTICA OPERACIONAL ABSTRACTA

De�nici�on 4.2.1 (t�erminos y objetivos abstractos)

*

T [ �

?

? 62 T [ [ f?g �

?

8 2 T ? � ^ �

8 2 T 8 2

� ^ ^ � ) �

T

8 2 T � , � ^ �

8 2 � , 8 2 9 2 �

?

?

! ?

� �

mgu

� V ;

V � V ;

a t : t t t;

b s ; : : : ; s ; t ; : : : ; t ; f=n :

s t : : : s t f s ; : : : ; s f t ; : : : ; t :

Goal

a s; t; s ; t : s t s t s s t t;

b g; g Goal : g g e g : e g: e e:

Goal Goal

Goal Goal

Goal Eqn g E n g

E n

narrowing

narrowing

narrowing

Denotamos por el dominio est�andar de (las clases de equivalencia

de) t�erminos ordenados por el orden parcial est�andar inducido por el preorden

sobre t�erminos dado por la relaci�on de ser \m�as general". Sea un nuevo s��mbolo

de variable tal que . Denotamos por el dominio de

t�erminos sobre la signatura extendida con el s��mbolo (t�erminos abstractos), donde

el orden parcial se de�ne como sigue:

y

Sea el dominio de los objetivos (abstractos) de�nidos sobre t�erminos de .

Extendemos el orden parcial a objetivos abstractos como sigue:

y

59

de (presentada en la De�nici�on 3.2.3). De esta forma, los operadores a

aproximar son, esencialmente, el operador de uni�caci�on sint�actica y el operador

de composici�on paralela .

La relaci�on de concreta se de�ne sobre estados compuestos por un objetivo

y una sustituci�on. Para de�nir una relaci�on de aproximado, debemos pri-

mero establecer los nuevos dominios abstractos, as�� como su relaci�on con los dominios

concretos. De�nimos, en primer lugar, el dominio de los objetivos abstractos. Por

abuso de notaci�on, en lo que sigue vamos a denotar de la misma forma un preorden y

el correspondiente orden parcial inducido sobre las clases de la relaci�on de equivalencia

asociada con el preorden.

= ( (� ) )

= ( (� ) )

( )

( ) �

( ) ( )

( ) = =

( )

N�otese que el dominio (in�nito) de objetivos abstractos es una extensi�on propia del

dominio concreto (i.e. ). Informalmente, hemos introducido el s��mbolo

especial para representar a cualquier t�ermino. Desde el punto de vista l�ogico,

representa una variable cuanti�cada existencialmente [AFM95, Mah88, Mah90] y,

desde el punto de vista operacional, se puede considerar como una aproximaci�on de la

variable an�onima de Prolog. Antes de establecer de forma precisa la relaci�on entre el

dominio abstracto y el dominio concreto , introducimos la funci�on auxiliar

[[ ]] : . De�nimos [[ ]] = , donde la -tupla de ocurrencias de en es

reemplazada en por una -tupla de variables nuevas cuanti�cadas existencialmente.

Los siguientes lemas clari�can la relaci�on entre los �ordenes parciales y .

1

1

1

1

1

w

u u

u u

u u

u u

u

u uu

u u

u

u u u

u

n

m

n

n

m

CAP��TULO 4. NARROWING ABSTRACTO

Lema 4.2.2

Lema 4.2.3

Proposici�on 4.2.4

Demostraci

on

Demostraci

on

Demostraci

on

0

A

0 0

j

0 0

0 0 0

0

0

j j

0

0 0

0

0

0 0 0

0

j j

0 0

0

0 0 0

0 0 0 0

0

A

0

0 0

0

0 0 0 0

0 0 0 0 0 0 0 0

0 0 0

0 0

0 0 0

2 T

� , 8 2 9 � � ? _ 2 ^ �

� �

?

� ?

� ? � ?

� 62 [

, 9 ^ 62 [ , 9 ^

) 9 ^9 62 [ [f g , 9 ^

9 ) 9 , ) , �

� � ? � , 9 ^

62 [ , 9 ^ ) 9 ^

9 �

? � 62 [ [f g , 9 ^9

) 9 , ) , �

2 �

� )

� > � >

� 8 2 9 2 �

! 8 2 � � �

^ ^

� ^ ^

� ^ ^ 8 2 9 2

Sean . Entonces,

Sean dos ecuaciones abstractas tales que . Entonces

.

Sean dos objetivos abstractos tales que .

Entonces se cumple:

1. (equivalentemente, ), y

2. si , entonces .

t; t

t t u O t : w u: t u O t t u t u :

e; e e e e

e

n

e

n u

e e t e

e y e y y V ar e V ar e

e x: e x x t x V ar e V ar e x: e x x

t x: e x y: x y y V ar e V ar e x y: e x

x: x y y: e y e e e e e

n > e e t e x: e x x

t x V ar e V ar e x: e x x t x: e x

y: x y e x n

e x e x y V ar e V ar e x y: e y x: x

y y: e y e e e e e

g; g Goal g g

g g g g

g g

g g e g : e g: e e

f g g e g : e f e g e ; : : : ; e g e ; : : : ; e

g e : : : e

f e : : : f e

e : : : e e g : e g: f e e

g

60

( ) ( ) ( ( ) [ ] [ ])

. Inmediato por la De�nici�on 4.2.1.

[[ ]]

[[ ]]

. Demostramos el lema por inducci�on sobre el n�umero de ocu-

rrencias de en .

Sea = 1. Asumimos que la ocurrencia a la que aparece es , es decir,

y . Dado que s�olo hay una ocurrencia de en , por el Lema

4.2.2, se cumple que [ ] [ ] , donde ( ) ( ). Por tanto,

[[ ]] [[ ( [ ] = )]] (donde ( ) ( )) ( [ ] [[ =

]]) ( [ ] = ) (donde ( ) ( ) ) ( [ ]

= ) [ ] [[ ]]. Por de�nici�on, [[ ]] [[ ]] [[ ]] [[ ]].

Sea 1. Asumimos que y . Entonces, [[ ]] [[ ( [ ] =

)]] (donde ( ) ( )) ([[ [ ] ]] [[ = ]]) ([[ [ ] ]]

= ) (por la hip�otesis de inducci�on, ya que [ ] contiene 1 ocurrencias

de y [ ] [ ] , donde ( ) ( ) ) ([[ [ ] ]] =

) [[ [ ] ]] [[ ]]. Por de�nici�on, [[ ]] [[ ]] [[ ]] [[ ]].

La siguiente proposici�on establece las principales propiedades del orden entre

objetivos abstractos.

[[ ]] [[ ]] [[ ]] [[ ]]

.

1. Si , entonces . Por tanto, existe una funci�on

: tal que ( ). Sea ( ) y ( ).

Entonces se cumple:

[[ ]] = [[ ]] [[ ]]

[[ ( )]] [[ ( )]] (por el Lema 4.2.3)

[[ ]] [[ ]] (ya que ( ) = )

= [[ ]]

b

b

1 1

1

n n

i

n

0 0 0 0

0 0 0

A

A

A A

A

A

0 0

A

A

0 0

A

A

4.2. SEM

ANTICA OPERACIONAL ABSTRACTA

� > 8 2 � ,

� , � � ?

f g

2

2 T 2

� , )

h T � T � i

T ! T

f 2 T j � g

h � � i

!

f 2 j � g

h � � i

!

f 2 j � g

De�nici�on 4.2.5 (sustituciones abstractas)

De�nici�on 4.2.6 (descripci�on de t�erminos, objetivos y sustituciones)

g e g : e true

e true e true g

Sub

Sub ;

x =t ; : : : ; x =t

i ; : : : ; n x V

t ; : : : ; t �; � Sub

� � � � :

; ; ; ;

}

t t t t :

Goal ; ; ; Goal;

Goal }Goal

g g Goal g g :

Sub ; ; ; Sub;

Sub }Sub

� � Sub � � :

Denotamos por el domi-

nio de las sustituciones (abstractas) de la forma donde, para todo

, las variables son distintas entre s�� y no aparecen en ninguno

de los t�erminos . Dadas dos sustituciones abstractas , el

preorden se de�ne de la forma:

La se denota por , donde la funci�on de

concretizaci�on se de�ne por:

La se denota por , donde la fun-

ci�on de concretizaci�on se de�ne por:

La se denota por , donde la

funci�on de concretizaci�on se de�ne por:

narrowing

narrowing

61

2. Si entonces, por la De�nici�on 4.2.1, se cumple

[[ ]] , con lo que .

A continuaci�on, de�nimos el dominio de sustituciones abstractas .

( )

= 1

[[ ]] [[ ]]

Como ha quedado establecido en la secci�on anterior, la relaci�on entre los domi-

nios abstractos y los correspondientes dominios concretos se formaliza en t�erminos de

descripciones. Introducimos ahora las descripciones de t�erminos, objetivos y sustitu-

ciones.

descripci�on de t�erminos ( ) ( )

:

( ) =

descripci�on de objetivos ( ) ( )

:

( ) =

descripci�on de sustituciones ( ) ( )

:

( ) =

A partir de las descripciones de objetivos y sustituciones, se obtiene directamente

la descripci�on de estados inducida, tal y como se formaliz�o en la De�nici�on 4.1.4.

En el siguiente apartado, presentamos el sistema de transici�on de condi-

cional abstracto, es decir, la versi�on aproximada de la relaci�on de gen�erico

con estrategia. En el sistema de transici�on abstracto, las computaciones no se realizan

sobre el programa original sino sobre una versi�on aproximada del mismo, convenien-

temente transformado para garantizar la terminaci�on del an�alisis, mientras todav��a

permite extraer la informaci�on relevante para el an�alisis. Dicha versi�on \compilada"

4.2.2 Narrowing Abstracto

CAP��TULO 4. NARROWING ABSTRACTO

A A

A A

A A A A A A

A

A

A A A

A

A

A A A A A A A

A

A A

A A A

A

A A

T

T

fR j ! ( 2 R 2 T 2 g

T

R 2 R 2

R R

R / R

8 ! ( 2 R 9 ! ( 2 R ^ / ^ /

!

R fR 2 j R / Rg

T h i

R

R

R

De�nici�on 4.2.7

De�nici�on 4.2.8 (descripci�on de programas inducida)

Goal

Srtc

Goal Srtc � � C ; �; � ; C Goal

Srtc

Goal Srtc Srtc

� � C : � � C : � � � � C C:

Srtc }Srtc

Srtc :

Goal Srtc ; ; Srtc

State

Sea una descripci�on de t�erminos y una descripci�on de

objetivos. De�nimos el , inducido por y

, como .

Sea un dominio

de programas abstractos inducido por una descripci�on de t�erminos y una descrip-

ci�on de objetivos . Dados los programas y , decimos que

el programa abstracto aproxima al programa concreto , y lo denotamos como

, sii:

De�nimos la funci�on de concretizaci�on de la forma:

As��, la descripci�on de programas inducida por y es .

narrowing

narrowing grafos de dependencias

funcionales grafos de t�erminos

narrowing

62

del programa original, adem�as de garantizar que el an�alisis es �nito (i.e. que no exis-

ten derivaciones abstractas in�nitas), debe de cumplir ciertas restricciones, como la

de imitar de manera correcta las computaciones concretas (i.e. el programa abstracto

debe ser una aproximaci�on correcta del concreto).

De forma similar a como se formul�o la descripci�on de estados inducida (De�nici�on

4.1.4), presentamos a continuaci�on la descripci�on de programas inducida.

dominio de programas abstractos

= ( )

( ) ( ) =

:

( ) =

Como hemos comentado, la relaci�on de abstracto se de�ne, en general,

con respecto a un programa abstracto (que, en ocasiones, puede coincidir con el

programa concreto ). La decisi�on de abstraer el programa proviene de la necesidad

de asegurar la terminaci�on del an�alisis. Si para un objetivo dado, las computaciones

sobre el programa concreto son siempre �nitas, el programa abstracto puede coincidir

con el concreto. En la pr�actica, existen varios m�etodos para estudiar la terminaci�on

de respecto a un programa como, por ejemplo, los

usados en [DS87], o los (dependientes del objetivo)

usados en [CR91, RKKL85]. En la Secci�on 4.3.1 presentamos una t�ecnica general,

independiente del objetivo y basada en la noci�on de grafo de \prevenci�on de bucles"

para obtener un programa abstracto cuyas computaciones son siempre �nitas. En la

Secci�on 4.3.2, se presenta una instancia particular de dicha t�ecnica.

Una vez de�nidos los dominios abstractos, en el siguiente apartado presentamos

la versi�on abstracta de los operadores concretos.

El c�alculo de abstracto realiza las computaciones sobre los estados abstrac-

tos de , usando las reglas de un programa abstracto . De�nimos ahora las

b b

n

n

1

1

1 2

1 2 1 2

Demostraci

on

A

A

A A A

A A

A

A A

A

A A

A

A

A

A A A A

A A

4.2. SEM

ANTICA OPERACIONAL ABSTRACTA

*

?

2

?

?

!

2 9 9

� f ? ?g

� ?

9 ^

^ f g

2 8 2 �

,

2 )

2

* � !

* [

De�nici�on 4.2.9 (uni�caci�on abstracta)

Ejemplo 9

Proposici�on 4.2.10

De�nici�on 4.2.11 (composici�on paralela abstracta)

mgu

mgu

g Goal

g

mgu Goal Sub

g Goal mgu g sub E� y : : : y : E solve g

� y = ; : : : ; y =

g f x; x f y; ; x a g

z: f x; x f y; z x a solve g

x a y a mgu g x=a; y=a

mgu

g Goal � unif g : mgu g �

mgu g solve g

unif solve g unif g � unif mgu g � mgu g

mgu g �

mgu

� ; � Sub

Sub Sub Sub

� � mgu � � :

narrowing

De�nimos el operador como sigue. Dado un objetivo

abstracto , , donde y

.

Sea . En primer lugar, calculamos

. Ahora, su forma resuelta es igual a

y, por tanto, .

Dado un objetivo , .

Sean . De-

�nimos el operador abstracto de composici�on paralela

como sigue:

63

correspondientes versiones aproximadas de las operaciones involucradas en el c�alculo

de . Concretamente, los �unicos operadores que necesitan ser rede�nidos son

el operador de uni�caci�on sint�actica y el operador de composici�on paralela . El

resto de operadores que trabajan sobre los dominios abstractos se de�nen de la misma

forma que sus respectivas versiones concretas, considerando el s��mbolo como una

variable m�as.

De�nimos el operador de uni�caci�on abstracta para una secuencia de ecua-

ciones abtractas de la siguiente forma. Primero, reemplazamos todas las

ocurrencias de en por variables cuanti�cadas existencialmente. A continuaci�on,

computamos una forma resuelta del conjunto de ecuaciones resultante y, �nalmen-

te, volvemos a reemplazar las variables cuanti�cadas por . La siguiente de�nici�on

formaliza esta idea.

:

( ) = ( ) = ([[ ]])

Veamos un ejemplo que ilustra la noci�on de uni�caci�on abstracta.

( ( ) = ( ) = ) [[ ]] =

( ( ) = ( ) = ) ([[ ]])

( = = ) ( ) =

La siguiente proposici�on muestra en qu�e sentido el abstracto es el uni�cador

\m�as general" de un conjunto de ecuaciones.

([[ ]]) ( )

. Por la De�nici�on 4.2.9, [[ ( )]] ([[ ]]). Por tanto,

( ([[ ]])) = ([[ ]]). Sea ([[ ( )]]), entonces [[ ( )]],

es decir, ( ) .

A partir de la de�nici�on del operador , resulta inmediato formular la de�ni-

ci�on del operador abstracto de composici�on paralela.

:

= ( )

+

'

'

u

r ' u r

'

b b

b b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

Demostraci

on

Demostraci

on

CAP��TULO 4. NARROWING ABSTRACTO

A

A

0

A

0

A

0

0 0

0 0 0

A

0

A

0

A

0

0

A

0 0

A

0 0

0

A

0

0 0 0 0

0 0 0 0 0 0

0 0 0

A

0

A

0 0

A

A

A A

A Aj

0

0

A

A

A

Lema 4.2.12

Lema 4.2.13

De�nici�on 4.2.14 (narrowing con estrategia abstracto )

*

*

2 2 / /

/ �

� , ) , ) ,

) �

/

*

2 2 / /

* / *

/ / ) )

[ , ^ ) ^ , [ [ ) [

[ / [ * � [ / [ � *

!

R 2

!

2 ^ � ! ( R ^ f g

^ ^

h i ! h * i

R

R

Sea y . Si , entonces .

Sean y . Si y , entonces

.

narrowing

Dado un progra-

ma abstracto , de�nimos la relaci�on de narrowing (condicional) abstracto

como la menor relaci�on que satisface:

narrowing

mgu mgu

g Goal g Goal g g mgu g mgu g

g g g g

g g g g mgu g solve g solve g

mgu g mgu g mgu g mgu g mgu g

mgu g mgu g

� ; � Sub �; � Sub � � � �

� � � �

� � � � � � � �

� � � � � � � � � � � �

� � � � � � mgu � � mgu � � � �

State

Srtc

,

Srtc

,

u ' g r � � C << � mgu g �

� restrict �; r g C; g � �

g; � , g ; � �

'

64

Es trivial demostrar que la composici�on paralela abstracta sigue siendo idempoten-

te, conmutativa, asociativa y tiene como elemento neutro . El operador se puede

extender a conjuntos de sustituciones abstractas de manera an�aloga a como se de�-

ni�o para el operador concreto en la Secci�on 3.1. En el siguiente lema, demostramos

que el operador es una aproximaci�on correcta del operador .

( ) ( )

. Si entonces, por la De�nici�on 4.2.6, . Por la Proposi-

ci�on 4.2.4, ( ) ( [[ ]]). Por tanto, ( ) ( ) ([[ ]])

[[ ( )]]. Finalmente, si ( ) [[ ( )]], entonces ( ) ( ) y,

por la De�nici�on 4.2.6, ( ) ( ).

La correcci�on del operador abstracto se demuestra en el siguiente lema.

( ) ( )

. Si y , entonces [[ ]] [[ ]] y [[ ]] [[ ]]. Ahora,

[[ ]] [[ ]] [[ ]] [[ ]] [[ ]] [[ ]]. Si [[ ]] [[ ]] entonces

y, por el Lema 4.2.12, ( ) ( ) .

De�nimos, a continuaci�on, el sistema de transici�on abstracto que formaliza la

relaci�on de aproximado. El c�alculo abstracto se de�ne sobre estados abs-

tractos de , y realiza las computaciones con respecto a un programa abstracto

de . El c�alculo es equivalente al introducido en la De�nici�on 3.2.3, reemplazando

los dominios y operadores concretos por sus versiones abstractas.

( ) ( ) = ( = )

= ( ) = ( [ ] )

Al igual que en el caso concreto, la relaci�on de abstracto se de�ne de

manera gen�erica respecto a una estrategia . Denotamos por a la correspondiente

extensi�on del programa abstracto con las reglas para tratar la igualdad sint�actica.

De�nimos, a continuaci�on, la sem�antica operacional abstracta para el conjunto de

�exitos.

A

A

� ( )

+

;

; ; ;

;

;

;

;

;

Demostraci

on

'

'

V ar g

'

'

' '

'

' ' ' '

'

'

'

' '

'

'

'

'

'

R

A A A

A

R

j

A

A A

0

A

0

0

A

0 0 0 0

0

A

0

0 0

0 0 0

4.2. SEM

ANTICA OPERACIONAL ABSTRACTA

R 2 2

R

f j h i ! h> ig

h i ! h> i

R

� � ! �

� !

! / 2

2 /

9 2 ! ^ / _ /

2 2

/

/

! /

!

!

! ?

De�nici�on 4.2.15 (conjunto de �exitos abstracto )

De�nici�on 4.2.16

Lema 4.2.17

Srtc g Goal

g

'

g � g; � , ; � ;

g; � , ; �

State State ,

State State ,

, s; t State s t

s State s s

t State : s , t t t s t:

s State s

State s s s t

s s t

s , t t t

,

'

,

,

'

Dado un programa abs-

tracto y un objetivo abstracto , formulamos la sem�antica ope-

racional (o conjunto de �exitos) abstracta de con respecto a , usando la estrategia

, como sigue:

en la que las derivaciones se realizan usando las reglas del programa

extendido .

Sea una relaci�on de narrowing y

un sistema de transici�on abstracto. Decimos que aproxima a

(y lo denotamos por ) si, dados tal que entonces,

si existe un estado abstracto tal que , se cumple:

redex

redex

narrowing

narrowing

narrowing

Sea una estrategia de narrowing tal que la relaci�on es indepen-

diente del entorno. Entonces, la relaci�on abstracta tambi�en es independiente del

entorno.

65

� ( ) =

La relaci�on del sistema de transici�on abstracto debe aproximar correctamente a

la relaci�on del sistema de transici�on concreto. La siguiente de�nici�on formaliza este

concepto.

( )

Intuitivamente, dado un estado concreto y un estado abstracto

tal que , si puede probarse una transici�on concreta , entonces

pueden ocurrir dos cosas: a) el seleccionado en la reducci�on concreta ha sido

abstra��do en el estado abstracto y, por tanto, se cumple que ; b) el

seleccionado existe en el estado abstracto, y entonces la relaci�on abstracta debe probar

la transici�on de forma que .

Para demostrar la correcci�on de la relaci�on de abstracto, es necesario

restringir de nuevo las posibles estrategias de a aqu�ellas que sean inde-

pendientes del entorno. El siguiente lema establece que, si una relaci�on de

concreto es independiente del entorno, entonces su versi�on abstracta tambi�en

lo es.

. El resultado es inmediato por la De�nici�on 3.2.5 y la De�nici�on

4.2.14, ya que la �unica diferencia entre la relaci�on concreta y la relaci�on abstracta

consiste en el tratamiento de los s��mbolos en los t�erminos abstractos, lo cual

no afecta a las condiciones de la De�nici�on 3.2.5.

En el resto del trabajo, cuando indicamos que la estrategia es independiente del

entorno, nos referimos tanto a la relaci�on concreta como a la relaci�on abstracta

;

;

;

Lema 4.2.18

Demostraci

on

CAP��TULO 4. NARROWING ABSTRACTO

'

' '

' '

' r r u

u

r '

r r u

w

u

r r u

r uw

r u r r u

r r u

u

r r u

r r u

r r u

r r u

u

u u u u

u u

A

A

j

0 0

0 0

0

0

j

0

j

0 0 0

0

0 0 0 0

0 0

j

0 0 0 0 0 0

0

A

j

0 0 0

0 0 0

0

0

0

0

j

0 0 0

0 0

0

j j

0

j j

0

A

0

j j

A

0

Sea una estrategia independiente del entorno. Si , entonces

.

narrowing

narrowing

! R / R

!

R / R

! /

h i h * i

2 � !

( R f g * 6�

h i / h i /

/

� 62 h i

h * i

2 �

? ?

6 9 2 �

h i / h * i

/ 8 2 9 2 �

/ ? �

8 2 9 2 � 8 2 9 2 �

/ /

� *

/ * / /

6 9 2 �

8 2 9 2 �

/

/ / *

h i / h * i

� 2 2

2 /

/ /

/ /

� f g / f g �

/ * / *

,

,

'

,

g; � C� ; g �� ; � � :

u ' g r �

� C << � mgu g � � � fail

� restrict �; r � C '

g ; � g; � g g

� �

u ' g g ; �

C� ; g �� ; � �

w O g w u

g g

g e e g : e e

e

g ; � C� ; g �� ; � �

g g e g : e g: e e

g g �� g w u

e g : e g �� : e e e g : e C� ; g �� : e e

g C� ; g �� � �

� �

� � � � � � �

g e e g : e e

e g : e C� ; g �� : e e

g C� ; g ��

g C� ; g �� � � �

g ; � C� ; g �� ; � �

u ' g g e g

e g e e

g g e e

g g g � g �

� mgu g � mgu g � �

� � � � � �

66

. A continuaci�on demostramos que, para tales estrategias, si entonces

es una aproximaci�on correcta de .

. Consideremos una transici�on de concreto:

( [ ] )

Por la de�nici�on de , existe una ocurrencia ( ), una regla (

) , y una sustituci�on = ( = ) tal que . La

sustituci�on = ( ) s�olo se aplica a y a , ya que es independiente

del entorno. Consideremos un estado . Por la De�nici�on 4.1.4,

y . Ahora, puede ocurrir una de las dos siguientes posibilidades:

( ). En este caso, vamos a demostrar que el estado aproxima �el

mismo al estado ( [ ] ) . De acuerdo con la De�nici�on 4.2.1, son

dos los casos a considerar: 1) existe una ocurrencia

( ) tal que

y = (el subt�ermino seleccionado est�a aproximado por en ), o 2) el

subt�ermino pertenece a una ecuaci�on tal que (ninguna

ecuaci�on del estado abstracto aproxima a ). Vamos a demostrar que, en ambos

casos, se cumple ( [ ] ) .

En el caso 1), dado que , entonces se cumple que .

Por la De�nici�on 4.2.1, [ ] (ya que = y ). Por tanto,

[ ] y, trivialmente, ( [ ] ) ,

con lo que tenemos ( [ ] ). Respecto a la parte entorno, si

entonces, por la De�nici�on 4.2.5 y el Lema 4.2.13, se cumple que (

) ( ) (ya que y ).

En el caso 2), dado que pertenece a una ecuaci�on tal que ,

se sigue de forma inmediata que ( [ ] ) y, por

tanto, ( [ ] ). Respecto a la parte entorno, el argumento de la

prueba es an�alogo al del caso 1).

En ambos casos, se cumple ( [ ] ) y ( ). Por tanto, por la

De�nici�on 4.1.4, ( [ ] ) .

( ). Supongamos que el subt�ermino pertenece a la ecuaci�on , y

que existe una ecuaci�on tal que (en caso contrario, la prueba ser��a

an�aloga a la del punto anterior). Ya que y , por la De�nici�on 4.2.1,

se cumple que y, por tanto, ( = ) ( = ). Por el Lema

4.2.12, se cumple que ( = ) ( = ) . Ya que

, por el Lema 4.2.13, se sigue que ( ) ( ).

A

1

A

R R

; ;

; ;

;

Demostraci

on

1

0

0

0 0

0

0

0 1

0

1 1 1

+1 +1

4.2. SEM

ANTICA OPERACIONAL ABSTRACTA

Teorema 4.2.19 (correcci�on parcial del an�alisis)

'

r r

u

r

'

r

r

r

r

r

r r

r

r

r

r

r

r

r

r

r r

u r r u

' '

' ' n

' '

m

m

n

' ' n

' '

k

k

n

k

n n ' n

k

'

k k

n

k

n

m

n

m

n

0 0 0

0

A

0 0

A

0 0 0 0 0 0

A

0

0 0 0 0

0 0 0

0 0

0 0 0 0 0 0 0 0

0 0 0 0 0

A

A

R R

0 0

0 0

0

A

0 0

0

0

� �

0 0 0 0

0

0

6� 6� � ! (

R / / R / R

h i ! h * i

/

/ � � /

2 / /

/ / / /

/

R R

R / R 2

2 O 2 /

/

! !

/ �

R / R

! ! � �

/ /

! / /

/ �

/ � � �

Por simplicidad, asumimos aqu�� que los renombramientos elegidos para las variables de las reglas

de , son los mismos que para las reglas de .

narrowing

narrowing

narrowing

Sea un programa y un

programa abstracto tal que . Dado un objetivo , entonces para toda

sustituci�on existe una sustituci�on abstracta tal que .

� fail � fail r � �

C << � � C C

g ; � , C � ; g � � ; � �

� restrict � ; r � �

� � Dom � V ar � Dom � V ar � x�

x� x Dom � C C � �

C � C� � � �� C � C� � � ��

C � ; g � � C� ; g ��

g Goal

� g � g � �

s

s : : : s ;

s s s

s , : : : , s

s s m n n

n

n > s : : : s

s , : : : , s k n

s s s s s s

s , s s s s s

m k s s m n

m k s s m n n

67

Dado que , entonces . Luego existe una regla (

) tal que y (ya que ). Por tanto, se puede

probar el paso de abstracto ( [ ] ) ,

donde = ( ). Ya que , se cumple de manera trivial que

. Dado que ( ) ( ) y ( ) ( ), entonces

, para toda variable ( ). En este caso, puesto que y ,

entonces y . Por �ultimo, si y ,

entonces ( [ ] ) ( [ ] ), lo que concluye la demostraci�on.

Una vez demostrado que la relaci�on de abstracto aproxima de manera

correcta a la relaci�on de concreto, podemos probar f�acilmente la correcci�on

parcial del an�alisis. Es decir, si �este termina, entonces lo hace computando una

aproximaci�on para la sem�antica de respuestas computadas concretas.

( ) � ( )

. Vamos a probar el siguiente resultado m�as general: para todo

estado tal que existe la derivaci�on concreta:

y para todo estado abstracto tal que , se cumple que existe una derivaci�on

abstracta:

con , . Demostramos el teorema por inducci�on sobre la longitud de

la derivaci�on concreta.

Sea = 1. El teorema se sigue directamente del Lema 4.2.18 y del hecho que .

Consideremos el caso inductivo 1. Ya que , por la hip�ote-

sis de inducci�on, existe una derivaci�on abstracta , 1, tal

que . Ya que y entonces, por el Lema 4.2.18, 1)

y , o bien 2) . Consideremos primero el caso 1). En

este caso, basta con tomar = + 1 y entonces , . Ahora conside-

ramos el caso 2). En este caso, tomamos = y, por tanto, , 1 .

A

0

0

n

'

m

n

'

0

R

0 0

0

R

A

A

A

s s g; �

s ; � � g s g ; � ; � s � �

g � g

g

4.3 Terminaci�on del An�alisis

4.3.1 Abstracci�on de Programas

CAP��TULO 4. NARROWING ABSTRACTO

� � h i

� h> i 2 O � h i / h> i � /

� > 2

R

R

R / R

� R

narrowing

correcci�on

narrowing

terminaci�on

grafos de detecci�on de bucles

grafos de prevenci�on de bucles

68

Finalmente, el teorema se sigue del resultado anterior, tomando y

(i.e. ( )), ya que si entonces y,

por el Lema 4.2.4, , con lo que � ( ).

El teorema anterior �unicamente garantiza la correcci�on parcial del an�alisis, es decir,

si la relaci�on de abstracto termina computando un conjunto de respuestas

abstractas para el objetivo , entonces se cumple que cada respuesta computada

concreta est�a aproximada por una de las respuestas abstractas. Sin embargo, esto

no es su�ciente para de�nir un an�alisis �util. Es necesario, adem�as, que los an�alisis

terminen, i.e. las posibles derivaciones abstractas deben ser todas �nitas. En la

siguiente secci�on tratamos con detalle este tema.

En esta secci�on, pasamos a considerar el problema de garantizar que los an�alisis sean

�nitos. Esencialmente, dado un programa concreto , la terminaci�on del an�alisis se

asegura construyendo un programa aproximado que cumpla las dos condiciones

siguientes:

el programa abstracto es una aproximaci�on correcta del programa concreto, i.e.

( ); y

toda derivaci�on de abstracto usando las reglas de termina en un

n�umero �nito de pasos ( ).

En el siguiente apartado, se de�ne un m�etodo general de abstracci�on de programas

que, preservando la noci�on de aproximaci�on, garantiza la terminaci�on de las deriva-

ciones aproximadas.

En la literatura se proponen dos tipos de grafos para estudiar la terminaci�on de un

programa (ver, por ejemplo, [Bol93]):

: siempre que una derivaci�on tiene asociado un

bucle en el grafo, dicha derivaci�on es in�nita;

: toda derivaci�on in�nita tiene un bucle asociado

en el grafo.

En ambos casos, el grafo se construye a partir del programa considerado y, eventual-

mente, del propio objetivo a resolver. La informaci�on del grafo se puede usar de forma

din�amica {en tiempo de ejecuci�on{ o de forma est�atica {en tiempo de compilaci�on{.

; ;

� �

� �

+

0 0 1 1

+

+

R

R

R

R

j

R

R

R R

' '

i i i iu

i i

i i

R

G

G

2 [

G

h i h i

9 � h i 2 G 2

G h i 2 G

R G R G

R

4.3. TERMINACI

ON DEL AN

ALISIS

t � V

t

g ; � g ; � : : :

i : t ; t ; t g � u O g

t ; t

De�nici�on 4.3.1 (grafo de prevenci�on de bucles)

Lema 4.3.2

Dado un SRTC , un

es una relaci�on consistente en un conjunto �nito de pares

de t�erminos, tales que:

1. El cierre transitivo es decidible.

2. Existe una funci�on (posiblemente parcial) que asigna a un t�ermino

un nodo del grafo tal que, si existe una derivaci�on in�nita de la forma:

entonces donde y .

En adelante diremos que tiene un \bucle" si .

narrowing redexes

narrowing

Sea un SRTC y un grafo de prevenci�on de bucles para . Si

no contiene bucles, entonces toda derivaci�on de narrowing para termina.

69

El primer tipo de grafos s�olo ayuda a eliminar algunas derivaciones in�nitas, pero

existe el riesgo de seguir explorando un espacio de b�usqueda in�nito (algunas deri-

vaciones in�nitas podr��an no ser detectadas). Obviamente, este tipo de grafos no es

interesante con respecto al an�alisis, ya que la terminaci�on del mismo debe estar garan-

tizada en cualquier caso. El segundo tipo, los grafos de prevenci�on de bucles, pueden

provocar la eliminaci�on innecesaria de derivaciones �nitas (con la correspondiente

p�erdida de precisi�on) pero, en cambio, se garantiza que todas las derivaciones in�ni-

tas son eliminadas. Este segundo tipo s�� resulta �util para garantizar la terminaci�on

del an�alisis.

Nuestra noci�on de programa abstracto es param�etrica con repecto a un grafo de

prevenci�on de bucles est�atico, i.e. un grafo �nito de dependencias entre t�erminos que

se construye a partir del programa y es independiente del objetivo. Este grafo permite

reconocer aquellas derivaciones que con toda seguridad terminan. Nuestro prop�osito

es usarlo para transformar un espacio de b�usqueda posiblemente in�nito en uno �nito

(aproximado). Con la informaci�on del grafo, generamos una versi�on compilada del

programa original (programa abstracto), que a�un produce un conjunto completo de

respuestas aproximadas pero que, en ning�un caso, da lugar a una derivaci�on in�nita.

La siguiente de�nici�on formaliza nuestra noci�on de grafo de prevenci�on de bucles.

grafo

de prevenci�on de bucles

(� )

0 =

( )

Informalmente, el grafo de prevenci�on de bucles de�nido garantiza que, si existe

alguna derivaci�on de in�nita, entonces alguno de los seleccionados

en dicha derivaci�on tiene asociado un t�ermino en el grafo que est�a contenido en un

bucle. Un grafo de prevenci�on de bucles se puede ver como un tipo de \or�aculo", cuya

utilidad para demostrar la terminaci�on de las derivaciones de se establece

en el siguiente lema.

0

0 0

R

R

R

R

Demostraci

on

CAP��TULO 4. NARROWING ABSTRACTO

R

!

!

2 [

f g 6�

G fh ig

R

?

R G

R R G

A R G f ! ( j ! ( 2 Rg

Ejemplo 10

De�nici�on 4.3.3 (programa abstracto)

x x

x s y s x y

t

t � V t

t

t mgu t t fail

t

t

x s y ; x s y

x s y

; � sh � sh C � � C

Sea el programa:

y consideremos la siguiente de�nici�on para la funci�on (parcial) que asocia al t�ermino

un nodo en el grafo:

si

(si hay varios nodos que uni�can con , se selecciona uno cualquiera y, si no hay

ninguno, la funci�on no est�a de�nida para ). Las variables que aparecen en los nodos

del grafo se consideran impl��citamente renombradas, de manera que no haya con icto

de variables al intentar la uni�caci�on. En este caso, el grafo de�nido por:

es un grafo de prevenci�on de bucles, ya que cualquier derivaci�on in�nita, usando ,

contiene necesariamente alg�un t�ermino que uni�que con .

narrowing

Sea un SRTC y un grafo de pre-

venci�on de bucles para . De�nimos la abstracci�on de usando como sigue:

70

. Inmediata a partir de la De�nici�on 4.3.1 de grafo de prevenci�on

de bucles.

Veamos un ejemplo que ilustra el concepto de grafo de prevenci�on de bucles.

+ 0

+ ( ) ( + )

(� )

= ( = )

= + ( ) + ( )

+ ( )

A continuaci�on, se describe un m�etodo para obtener un programa abstracto (com-

pilado) a partir de la informaci�on recogida por un grafo de prevenci�on de bucles. El

m�etodo no depende del objetivo a resolver (s�olo del programa), y permite obtener

un programa abstracto para el cual todas las derivaciones de aproximado

terminan. M�as a�un, independientemente del grafo de prevenci�on de bucles usado, la

sem�antica de un objetivo puede ser aproximada correctamente usando las reglas del

programa abstracto. Informalmente, un programa se abstrae simpli�cando las partes

derechas de las cabezas de las reglas, as�� como las ecuaciones en el cuerpo de las

mismas. La de�nici�on es inductiva sobre la estructura de los t�erminos y ecuaciones.

La idea principal consiste en que, aquellos t�erminos cuyo nodo asociado en el grafo

posee un bucle, son eliminados del programa y sustituidos por .

( ) = ( ) ( ) ( )

� �

Demostraci

on

8

>

>

>

>

>

>

<

>

>

>

>

>

>

:

1 1

+

1 1

0 1

0 0 1 1

1

0 0 1 1

Ejemplo 11

Lema 4.3.4

k k

n n

' '

' ' '

n n

'

i i

i i

i i

k i i

' ' '

n n

'

4.3. TERMINACI

ON DEL AN

ALISIS

R

R A R

R

A R

A

0 0 0 0 0 0

A

0 0

0 0

0

0

A A A A A A

R

A

0 0 0 0 0 0

2

� h i 62 G

?

R

G R A R G

!

! ?

?

R G

R R A R G ! !

R

D � h i ! h i ! ! h i !

R

D h i

D h i h i 9 9 h i

� �

?

R R f j 2 R g R

G

? R

h i ! h i ! ! h i !

sh o o

sh o

o o V

f sh t ; : : : ; sh t o f t ; : : : ; to;o

sh l sh r o l r

sh e ; : : : ; sh e o e ; : : : ; e

;

x x

x s y s

; s , s , : : :

g ; � , g ; � , : : : , g ; � , : : :

g ; �

g ; � g ; � y : : : y : g ; �

i n r r

r r

r r

g ; � , g ; � , : : : , g ; � , : : :

donde la funci�on para un objeto sint�actico se de�ne inductivamente de la

forma:

si

si y

si

si

en otro caso.

(Contin�ua del Ejemplo 10) La abstracci�on de , usando el grafo de

prevenci�on de bucles , es el siguiente programa abstracto :

en el que la parte derecha de la segunda regla ha sido dr�asticamente simpli�cada

introduciendo un .

Sea un programa y un grafo de prevenci�on de bucles asociado a

. Sea . Entonces, toda derivaci�on abstracta

usando las reglas del programa termina en un n�umero �nito de pasos.

71

( )

( ) =

( ( ) ( )) ( )

( ) = ( ) ( = )

( ) ( )

El siguiente ejemplo ilustra la de�nici�on.

= ( )

+ 0

+ ( ) ( )

El siguiente lema formaliza el resultado de terminaci�on para las derivaciones abs-

tractas.

= ( )

. Vamos a probar que el n�umero de pasos de una derivaci�on de la

forma:

( )

usando las reglas del programa es �nito.

Realizamos la demostraci�on por reducci�on al absurdo. Supongamos, pues, que la

anterior derivaci�on es in�nita. Ahora, asociamos a cada estado abstracto

de la derivaci�on un estado concreto tal que [[ ]] = ,

0 . De�nimos de forma an�aloga [[ ]] = , donde la tupla de ocurrencias del

s��mbolo en ha sido sustituida en por variables nuevas distintas. As��, de�nimos

el SRTC

de la forma

= [[ ]] . Por construcci�on de

, es obvio

que podemos obtener un grafo de prevenci�on de bucles asociado que no contiene

bucles, simplemente eliminando del grafo del programa concreto aquellos bucles

correspondientes a los t�erminos simpli�cados a en . Entonces, resulta inmediato

que para toda derivaci�on de la forma:

A

A

; ; ; ;

0 0 1 1' ' ' n n '

'

' '

A

A

R

A R A

R

A R

R

R R

A

A

R

CAP��TULO 4. NARROWING ABSTRACTO

R

h i h i h i

R

/

?

R G R

R A R G R / R

R G

R R A R G

2 O 2

/

R

R / R

G

g ; � g ; � : : : g ; � : : :

t sh t t

sh

sh t t

;

; g

g

� g � g

� �

'

Demostraci

on

Demostraci

on

Demostraci

on

Lema 4.3.5

Lema 4.3.6

Teorema 4.3.7 (correcci�on total del an�alisis)

Para todo t�ermino , se cumple .

Sea un SRTC y un grafo de prevenci�on de bucles asociado a .

Dado el programa abstracto , se cumple .

Sea un programa y un grafo

de prevenci�on de bucles asociado a . Sea . Dado un objetivo , se

cumplen los dos siguientes resultados:

1. el conjunto de �exitos abstracto es decidible; y

2. para toda sustituci�on existe una sustituci�on abstracta

tal que .

narrowing

72

usando las reglas del programa abstracto , existe una derivaci�on concreta, de igual

longitud, de la forma:

usando las reglas del programa

, con lo que, aplicando el resultado del Lema 4.3.2,

se obtiene la contradicci�on requerida.

Terminamos este apartado demostrando la correcci�on total del an�alisis. Para ello,

necesitamos primero los siguientes lemas t�ecnicos.

( )

. El lema es inmediato por la de�nici�on de la funci�on y la

De�nici�on 4.2.6, ya que la estructura del t�ermino ( ) es id�entica a la del t�ermino ,

sustituyendo (posiblemente) algunos de sus subt�erminos por .

= ( )

. El resultado se sigue de manera inmediata a partir del Lema 4.3.5

y la De�nici�on 4.2.8.

Ahora, podemos reforzar el resultado de correcci�on del an�alisis de la secci�on ante-

rior como sigue.

= ( )

� ( )

( ) � ( )

. El punto 1) se deriva directamente del Lema 4.3.4, ya que todas

las posibles derivaciones abstractas con el programa son �nitas. El punto 2) se

sigue del Lema 4.3.6 (que garantiza que ) y del Teorema 4.2.19 que establece

la correcci�on parcial del an�alisis.

El an�alisis de�nido en los puntos anteriores es param�etrico con respecto a una

estrategia de (independiente del entorno) y un grafo de prevenci�on de

bucles . Los resultados obtenidos en esta secci�on son independientes de ambos

par�ametros, garantiz�andose la correcci�on y terminaci�on del an�alisis para cualquier

instancia del esquema.

En el siguiente apartado introducimos un m�etodo particular para construir, de

forma autom�atica, un posible grafo de prevenci�on de bucles asociado al programa.

(

2

1 1

1 1

2

k k

n n

u

u

R R

R

R

R

R R

R

j

j

4.3. TERMINACI

ON DEL AN

ALISIS

4.3.2 Grafo de Prevenci�on de Bucles

De�nici�on 4.3.8

De�nici�on 4.3.9 (grafo de dependencias )

b c

b c

b c

b c b c 2 C

I R I

I R

I

R b c b c

I hR ;i

� ! ( R

hR I i 7�! hR� f g I [ f ! j ^ 2 _

^ 2 ^ 2 � f g gi

t t

t t

t

c t ; : : : ; t t c t ; : : : ; t c

y y

t f t ; : : : ; t t f t ; : : : ; t

;

r � � C <<

; r ; � t t � u O �

t e e C u O e �

Los nodos (t�erminos) del grafo se consideran m�odulo renombramiento de variables.

narrowing

U-graph

Dado un t�ermino , la funci�on se de�ne como sigue:

si y

en otro caso, donde es una variable nueva.

Sea un SRTC. La siguiente

transformaci�on de�ne un grafo dirigido de dependencias entre t�erminos inducido

por . De�nimos la funci�on auxiliar: si . Para

construir , el algoritmo comienza con un estado y aplica las siguientes reglas

de transici�on mientras �estas a~nadan nuevos arcos :

73

Muchos de los trabajos sobre detecci�on y prevenci�on de bucles consideran la aplicaci�on

de grafos de detecci�on de bucles en tiempo de ejecuci�on. Los grafos de prevenci�on de

bucles est�aticos, sin embargo, no han sido estudiados con tanta atenci�on.

En el caso de los programas funcionales, existen varias aproximaciones que encon-

tramos relacionadas. [CR91, RKKL85] consideran un grafo de t�erminos que permite

la detecci�on de algunos bucles en el �arbol de b�usqueda que no contribuyen a ninguna

soluci�on. Los grafos se construyen usando la informaci�on tanto de las ecuaciones a

ser reducidas, como de las reglas de programa usadas por .

En el caso de los programas l�ogicos, la noci�on est�andar de grafo de dependencias

entre los s��mbolos de predicado de un programa l�ogico [Llo87] se puede ver tambi�en

como un tipo de grafo de detecci�on de bucles. Una extensi�on de estos grafos a un

dominio de \llamadas" es la noci�on de grafo-U (grafo de Uni�caci�on, [WS90]),

el cual tiene en cuenta adem�as la uni�cabilidad entre los �atomos del programa.

A continuaci�on mostramos una posible instancia de la De�nici�on 4.3.1, siguiendo

una idea comparable a la de los grafos-U de los programas l�ogicos (convenientemente

extendida para tratar el anidamiento de funciones). Primero, necesitamos la siguiente

de�nici�on auxiliar , que reemplaza inductivamente cualquier subt�ermino de , cuyo

s��mbolo de funci�on m�as externo no sea constructor, por una variable nueva.

=

( ) = ( )

La siguiente de�nici�on formaliza un caso particular de grafo de dependencias entre

t�erminos , \inducido" por un SRTC . Posteriormente, demostramos que es

un grafo de prevenci�on de bucles (i.e. cumple las condiciones de la De�nici�on 4.3.1).

Otro posible grafo de prevenci�on de bucles diferente (pero menos preciso) se puede

encontrar en [AFM95].

= ( ) = ( )

(1)

( )

( =

( ))

( = (

( ) ))

?

1

1

1

1

u

n

n

u

u

n

i

i n

Demostraci

on

Proposici�on 4.3.10

CAP��TULO 4. NARROWING ABSTRACTO

R

R

0

R

0

R

0

R R

0

0

0 0

R

0

R

R

R

0

R

R

0 0

R

0

R

R

R

R

R

R

! 2 I ^ ! 2 I ^

hR I i 7�! hR I [ f ! gi

2 [

!

I

R

! ( R

! b c b c I

! ! I

!

!

! !

I

I

I

R I

R I R

� � � � � �

; ; � �

t � V

t

t t

t

t t t

t

t

� � C f t ; : : : ; t

� C � f t ; : : : ; t

� � � � �

� � � �

'

t t f t f t ; : : : ; t

t

H B

H B ; : : : ; B ; : : : ; B n

B H B

H

Dado un t�ermino , de�nimos la funci�on que asocia a un nodo en el

grafo, como sigue: si 1) aparece en la parte izquierda de un arco , y 2)

uni�ca con . En el caso de que haya m�as de un t�ermino que cumpla las dos condi-

ciones anteriores, se selecciona aqu�el que posea un camino en el grafo de mayor

longitud (si no hay ninguno que cumpla las condiciones, la funci�on est�a inde�nida

para ).

Sea un SRTC e el grafo de dependencias entre t�erminos

inducido por . Entonces, es un grafo de prevenci�on de bucles para .

74

(2)

( ) ( ) =

(� )

=

La terminaci�on de este c�alculo est�a asegurada, ya que el n�umero de t�erminos que

aparecen en las reglas de es �nito. Informalmente, el algoritmo procede como

sigue. Para cada regla ( ) de y para cada t�ermino ( ) que

aparezca en o en , la regla (1) a~nade un arco ( ) a . La

regla (2) a~nade un arco entre la parte derecha de un arco de

y la parte izquierda de cada regla con la que uni�ca sint�acticamente.

En lo que sigue, denota un camino en el grafo formado indistintamente por arcos

�o . Por supuesto, teniendo en cuenta una estrategia particular, ser��a posible

de�nir instancias m�as precisas del grafo, ya que no todos los subt�erminos de las partes

derechas de las cabezas y de las condiciones de las reglas pueden ser explotados por

una determinada estrategia.

El grafo de t�erminos es equivalente al grafo de s��mbolos m�as externos de�nido

en [AFM95], cuando la funci�on

se de�ne como sigue:

= si ( )

(la funci�on se de�ne de id�entica forma). En general, permite representaciones

m�as precisas de la estructura recursiva de un programa. Nuestra noci�on de grafo

de prevenci�on de bucles es similar a la de los grafos-U [WS90] de la programaci�on

l�ogica pura, en cuanto que �estos contienen un nodo por cada �atomo (cada llamada)

del programa y usan dos tipos de arcos: arcos de cl�ausulas y arcos de uni�caci�on.

Existe un arco de cl�ausula de un �atomo a un �atomo si existe una cl�ausula en el

programa de la forma , 1. Existe un arco de uni�caci�on

entre un �atomo y un �atomo si es un �atomo del cuerpo de una cl�ausula, y

uni�ca (m�odulo renombramiento) con la cabeza de otra (o la misma) cl�ausula.

La siguiente proposici�on muestra que el grafo de dependencias entre t�erminos

inducido es, de hecho, un grafo de prevenci�on de bucles.

. La demostraci�on se basa en una medida de complejidad bien

fundada sobre objetivos ecuacionales, que decrece a medida que se dan pasos de

; ;

;

0

0

Ejemplo 12

0 0 1 1

+1 +1

0

+1

? ?

+1

?

+1 +1

+1

+1

R

R

j

R

0 0

0 0 0 0 0 0 0

R

0 0

R

Ij j

j j

0 0 0

j

4.3. TERMINACI

ON DEL AN

ALISIS

' '

i i

i i iu

i

i i i

i

mul

mul

mul

i i ' i i

i

i i iu

i iu

u

iu

i iu

i

i i iu

i

mul i mul i

k

mul

narrowing

narrowing

narrowing

narrowing

narrowing

Consideremos el siguiente programa :

D � h i h i

I

D

I

h i D

H fh i j 2 g

� M h i

H I

D �

M M M M , 9 �

M 9 �M M M � [ 8 2 9 2

h i h i

2

I � 8h i 2

H � H ! 2 R

!

8h i 2 H � H

� M M

M

R

!

!

! (

!

g ; � g ; � : : :

m t

t

m t g ; �

u; n u ' g ; n m g �

i g ; �

t

i

<

< IN

M IN IN M IN

< IN <

; < X

X X X n X: n X : n < n

g ; � g ; �

u ' g

' g

i u ; n

l r l g � r g

r � � r � m g � m g �

u ; n : n < m g �

< i <

k >

< M IN

h

f

f c x c f x g x x

g c x c x

75

. Consideremos la derivaci�on in�nita:

y asumamos, por reducci�on al absurdo, que en no existen bucles asociados a

ninguno de los t�erminos que aparecen en la derivaci�on . De�nimos ( ) como la

longitud del camino en el grafo que parte del nodo (si la funci�on est�a inde�nida,

( ) = 0). Asociamos a cada estado en la derivaci�on un conjunto:

= ( ) = ( )

con 0. De�nimos la complejidad del objetivo como el multiconjunto

(�nito) de n�umeros naturales formado por los segundos componentes de los pares de

. Ya que no posee bucles asociados (usando la funci�on ) a ning�un t�ermino de

, estos segundos componentes son siempre �nitos para todo 0.

De�nimos ahora un orden total bien fundado sobre los multiconjuntos de

complejidades, extendiendo de manera est�andar el orden bien fundado sobre

al conjunto ( ) de multiconjuntos �nitos sobre . El conjunto ( ) est�a bien

fundado bajo el orden ya que el conjunto est�a bien fundado bajo el orden

[DJ90, Klo92]. Sean multiconjuntos de complejidades,

, tales que = ( ) y .

Por la de�nici�on de , en cada paso de derivaci�on ,

la ocurrencia ( ) seleccionada puede venir de las ocurrencias del objetivo inicial

( ), o de la parte derecha de la cabeza o de la condici�on de una regla del programa

usada en alg�un paso previo. Por la de�nici�on de , para todo 0,

( ) existe un arco tal que =( ) y = . Ya que existe

un arco , para todo tal que = , entonces ( ) = 2 + ( )

y, por tanto, ( ) ( ). Ahora, por la de�nici�on del

orden , es inmediato que para todo 0, . Por la de�nici�on de

, si existe un 0 tal que cada elemento de es 0, entonces no existen

m�as pasos de posibles. Por �ultimo, por el hecho de que el orden sobre

multiconjuntos sobre ( ) est�a bien fundado, s�olo es posible tener cadenas

decrecientes y, por tanto, la derivaci�on de termina.

El siguiente ejemplo ilustra el m�etodo de aproximaci�on de un programa presen-

tado en la De�nici�on 4.3.3, usando como grafo de prevenci�on de bucles el grafo de

dependencias entre t�erminos inducido por el programa.

(0) 0

(0) 0

( ( )) ( ( )) ( ) =

( ( )) ( )

� �

Ejemplo 13

R R

R

R

R

R

R

R

R

A R

A

R

R

-

P

P

P

Pq

-�

�1

?

-

-

h

f c X

f X

c X

g X

f

g c X

u

u

u

(0) 0

( ( ))

( )

( )

( )

(0)

( ( ))

+

4.4 An�alisis Composicional

I

I R

h i h i 2 I

R A R I

!

!

! ? (

!

?

R R

h

i O

ff gg

CAP��TULO 4. NARROWING ABSTRACTO

f x ; f x ; f c x ; f c x :

;

h

f

f c x c g x x

g c x c x

f x

h f z

; � g

g z=

Figura 4.1: Grafo de dependencias entre t�erminos .

El grafo de dependencias entre t�erminos inducido por se muestra en la Figura

4.1. Existen solo dos bucles en el grafo, concretamente,

Usando esta informaci�on, el programa abstracto es:

donde el �unico t�ermino \simpli�cado" a ha sido .

narrowing

narrowing

Consideremos de nuevo los programas y del Ejemplo 12. Las

�guras 4.2 y 4.3 muestran, respectivamente, el espacio de b�usqueda de narrowing

condicional b�asico y de narrowing b�asico abstracto para el objetivo inicial

. El conjunto de �exitos concreto coincide con el conjunto de �exitos abstracto

(pese a que hemos pasado de un espacio de b�usqueda in�nito a uno

�nito).

narrowing

76

( ) ( ) ( ( )) ( ( ))

= ( )

(0) 0

(0) 0

( ( )) ( ) ( ) =

( ( )) ( )

( )

Por el Teorema 4.3.7, dado un objetivo, existe una reducci�on por abs-

tracto para cada derivaci�on de concreto. Esta correspondencia se puede

ver f�acilmente en el siguiente ejemplo.

( ( )) =

0 ( )

� ( ) = 0

En esta secci�on demostramos, bajo las mismas condiciones que en el caso concre-

to, la composicionalidad de la relaci�on de abstracto. La utilidad de esta

propiedad sobre la relaci�on abstracta radica, al igual que en el caso concreto, en la

posibilidad de de�nir un c�alculo paralelo que sea equivalente al c�alculo secuencial.

Esto nos permite de�nir un an�alisis composicional equivalente al an�alisis de�nido en

la Secci�on 4.2. En el cap��tulo siguiente mostraremos que la composicionalidad de la

relaci�on abstracta permite tambi�en incorporar incrementalidad en el an�alisis.

;

;

1 2

0 0 0

Teorema 4.4.1

Demostraci

on

4.4. AN

ALISIS COMPOSICIONAL

1 1

2

h i ! h * i

h i ! h * i h i ! h * i

* 6�

!

� !

P

P

P

P

P

P

P

P

h

h

h

h

h

h

h

h

(

(

(

(

(

(

(

(

P

P

P

P

P

P

P

P

h f gi

h i

h f gi

h f gi

h f gi

h f gi

h ? f gi

h i

h f gi

h f gi

h f gi

h ? f gi

A

0

A

0

A

0

A

0 0 0

*

: : : : : :

'

g ; g Goal

g ; g ; � , g ; � �

g ; � , g ; � � g ; � , g ; � � ;

� � � fail; n n n g g ; g :

,

,

h c f x ;g x x ; z=c x

h f z ;�

h ; z=

; z=

true; z=

h c ;g x x ; z=c ;x=

h c ;g x x ; z=c x

h f z ;�

h ; z=

; z=

true; z=

h c ;c x x ; z=c c x ;x=c x

n

'

n

'

n

'

'

'

'

'

( ( ( ( )))=0 ( )= ) ( )

( ( ( ))=0)

( (0)=0) 0

(0=0) 0

0

( ( (0))=0 ( )= ) (0) 0

( ( ( ))=0 ( )= ) ( )

( ( ( ))=0)

( (0)=0) 0

(0=0) 0

0

( ( ( ))=0 ( )= ) ( ( )) ( )

1 2

1 2

1

1

1 2

2

2

1 2 1 2

1 2

Figura 4.2: Narrowing B�asico.

Figura 4.3: Narrowing B�asico Abstracto.

Sea una estrategia de narrowing independiente del entorno. Dados

dos objetivos ecuacionales , se cumple que:

sii

y

y

77

Usando un argumento similar al de la Secci�on 3.2.1, la composicionalidad es una

consecuencia del siguiente teorema.

( )

= = + = ( )

. La demostraci�on es perfectamente an�aloga a la del Teorema 3.2.6,

teniendo en cuenta que:

Si la relaci�on concreta es independiente del entorno, su versi�on abstracta

tambi�en lo es (por el Lema 4.2.17).

La relaci�on abstracta es una aproximaci�on correcta de la relaci�on (ver

la De�nici�on 4.2.14).

;

q

q

J I

3

1 2

4

A

A

A

A A

: : g

g g

: :

� �

� �

1 2

3 4

1 1 2 2

1 2

1 2

Demostraci

on

'

'

'

'

' '

;

' '

'

'

'

'

'

'

'

CAP��TULO 4. NARROWING ABSTRACTO

Corolario 4.4.2

De�nici�on 4.4.3

R

A

R

0 0 0

R

R R

A

A A A

A

A

0

A

0

A

0

0 0

0 0

0 0

0 0

0 0

0 0

seleccionar \don't care" (3.1) �o (3.2):

R R / R

R

!

� � � >

R

� �

h i h> * i ^ h i h> * i ^

* ^ 6�

h i h> * i

h i ! h i

h i h i

h i ! h i

h i h i

h i h i

h i h i

'

,

� �

g g g

'

State ; State State

g ; � ; � � g ; � ; � �

� � � � fail

g ; g ; � ; � �

e; � , g ; �

e; � g ; �

:

g; � , g ; �

g; � g ; �

:

g; � g ; �

g; � g ; �

Suponemos que en las reglas (3 1) y (3 2) no est�a formada por una �unica ecuaci�on, y que en la

regla (1) y denotan secuencias de ecuaciones no vac��as.

Una implementaci�on de la regla (3) podr��a seleccionar siempre la regla (3 1), o bien la regla (3 2),

o bien cualquiera de ellas (pero no la otra) en cada paso.

Sea un programa, un programa abstracto que aproxima a

y una estrategia de narrowing independiente del entorno. Entonces, la sem�antica

operacional abstracta es composicional.

narrowing

Sea un programa abstracto y una estrategia de narrowing.

De�nimos la relaci�on de narrowing composicional abstracto como un sistema de tran-

sici�on cuya relaci�on de transici�on se de�ne

como la menor relaci�on que satisface :

78

Establecida la composicionalidad de la relaci�on abstracta, mostramos los resulta-

dos de composicionalidad para la sem�antica abstracta del conjunto de �exitos � .

La versi�on abstracta del Corolario 3.2.10 se puede formular como sigue.

. Si la relaci�on concreta es independiente del entorno, por el

Lema 4.2.17, la relaci�on abstracta tambi�en es independiente del entorno. Ahora,

el corolario se sigue como una consecuencia inmediata del Teorema 4.4.1, para

y .

El Corolario 4.4.2 implica que, cuando la estrategia de coincide con las

estrategias b�asica, \innermost" o perezosa, el conjunto de �exitos abstractos se puede

construir de forma composicional. Concretamente, las sem�anticas abstractas � ,

� y � son composicionales.

El Teorema 4.4.1 permite de�nir un c�alculo abstracto composicional, en el estilo

del c�alculo presentado en la De�nici�on 3.2.14, o alguna otra variante en la l��nea de

lo observado al �nal del cap��tulo anterior que deje mayor exibilidad en la reconci-

liaci�on de las derivaciones paralelas, como el c�alculo que formalizamos en la siguiente

de�nici�on.

( )

(1)

= ( )

( )

(2)

(3)

(3 1) (3 2)

(

(

(

q

q

q

q

q

q

q

q

Demostraci

on

� �

'

'

' '

' '

'

'

'

' '

' '

' '

' '

'

'

' '

'

'

4.4. AN

ALISIS COMPOSICIONAL

narrowing

narrowing

Si entonces .

Proposici�on 4.4.4 (correcci�on )

1 2

1 2

1 1

2 2

1 2 1 2

1 1 2 2

1

1

1 1 1 1

2

2

2 2 2 2

1

1

1 1 1 1

2 2

1 1

2

2

2 2 2 2

1

1 1

� 0 � 0

A

A

A

A

A

A

A

A

� 0

A A A A

� 0

A A A A

� 0

A A A A

A

A

� 0

A A A A

0

A A

!

h i h> i h i ! h> i

h i h> * i h i ! h> * i

h i h> * i

h i h> * i

h i h> * i

* 6�

h i h> * i h i h> * i

h i ! h * i h> * * i � h> * i

h i ! h * i h> * * i � h> * i

h i ! h * i h> * * i � h> * i

h i ! h> * i

h i ! h> * i

h i ! h * i h> * * i � h> * i

h * i h> * i

g

, g

: g g

:

g; � ; � g; � , ; �

g; � ; � � g; � , ; � � ;

g; � ; � �

g ; g

g ; � ; � �

g ; � ; � �

g g ; g � � � fail

n

n

n > g ; � ; � � g ; � ; � �

g ; � , g ; � � ; � � � ; � � ;

g ; � , g ; � � ; � � � ; � � ;

g ; � , g ; � � ; � � � ; � � ;

g ; � , ; � � ;

g ; � , ; � � ;

g ; � , g ; � � ; � � � ; � � ;

n

g ; � � ; � �

79

Informalmente, el c�alculo de�nido considera b�asicamente dos casos, dependiendo

de si el objetivo contiene una sola ecuaci�on o m�as. En el primer caso (regla 2),

la relaci�on de composicional abstracto se comporta simplemente como la

relaci�on secuencial abstracta ( ). En el caso de que contenga m�as de una ecua-

ci�on (regla 3), se puede reducir usando la relaci�on de secuencial abstracto

(regla 3 1), o bien se puede dividir en dos subobjetivos y que se resuelven in-

dependientemente (regla 3 2 y regla 1). Las siguientes proposiciones demuestran la

correcci�on y completitud del nuevo c�alculo composicional abstracto (para estrategias

independientes del entorno).

. Procedemos con la prueba del siguiente resultado:

si entonces

ya que la proposici�on se sigue de manera directa a partir de �este.

Si entonces, por la regla (1) de la De�nici�on 4.4.3, existen dos

subobjetivos tales que:

donde = ( ) y = . Demostramos el resultado por inducci�on

sobre el n�umero de aplicaciones recursivas de la regla (1) en las dos derivaciones

anteriores.

= 0. El resultado es inmediato.

Sea 0. Ya que y entonces, por

las reglas (1) y (3) de la De�nici�on 4.4.3, puede ocurrir uno de los siguientes casos:

y

o bien

y

o bien

y

y el n�umero de aplicaciones de la regla (1) en las derivaciones etiquetadas con la

relaci�on es menor estricto que . Consideramos s�olo el primer caso, ya que los

otros dos son perfectamente an�alogos. Ya que y

q

q

Si entonces .

Demostraci

on

� �

� �

� �

CAP��TULO 4. NARROWING ABSTRACTO

Proposici�on 4.4.5 (completitud )

'

'

'

'

'

' '

'

'

' ' ' n n

'

' '

'

' '

' ' '

'

' '

' '

'

n

' '

2

2 2

1

1 1

2

2 2

1 2

1 2 1 2

0 0 1 1

0

0 1 1

1 1

1 1

0

0 0 0 0

0 0 1 1

1 1

1 1

0 0

0

1

0

2

0

A A

0

A

A

0

A

A

A

A A A

� 0 � 0

A A A

A

A

A

0 00 0 00

A A

A

A

0 00 �

A

0 �

A

00 �

A

h * i h> * i

h * i ! h> * i

h * i ! h> * i

* 6�

h i � h i ! h> * * i � h> * i

h i ! h> i h i h> i

h i ! h> i

h i h> i

h i � h * i ! h * i ! ! h * i � h> i

� h * i

h> i h i ! h * i

h i h * i

h i h> i

h i � h * i ! h * i h> i

h i h> i

h * i ! ! h> i

h * i h> i

h i � h i ! h> * i � h> i

h i ! h> * i h i ! h> * i

g ; � � ; � �

g ; � � , ; � �

g ; � � , ; � � :

� � fail

g; � g ; g ; � , ; � � � ; � �

g; � , ; � g; � ; �

n

n g; � , ; � g

g; � ; �

n >

g; � g ; � # , g ; � # , : : : , g ; � # ; � ;

# �

g e g ; � #

: : : ; � e; � , g ; � #

e; � g ; � #

g g ; g g g

g; � : : : ; �

a g; � g ; � # , g ; � # : : : ; �

b g; � ; �

a g ; � # , : : : , ; �

g ; � # : : : ; �

b g; � g ; g ; � , ; � # ; �

g ; � , ; � � g ; � , ; � �

80

entonces, por la hip�otesis de inducci�on, existen las

derivaciones:

Ya que entonces, por el Teorema 4.4.1, existe la derivaci�on:

( ) ( )

de lo cual se sigue el resultado enunciado.

. Probamos la proposici�on por inducci�on sobre la longitud de la

primera derivaci�on.

Si = 1 y , entonces debe estar formada por una �unica ecuaci�on.

Ahora, por la regla (2) de la De�nici�on 4.4.3, demostramos el paso .

Consideremos el caso inductivo. Si 1, entonces existe la derivaci�on:

con ( ). Podemos distinguir dos casos:

(1) Sea . Por la hip�otesis de inducci�on, existe la derivaci�on

. Ya que entonces, por la regla (2) de la

De�nici�on 4.4.3, existe .

(2) Sea ( ), donde y son secuencias de ecuaciones no vac��as. Debe-

mos probar que existe la derivaci�on . De acuerdo a la

regla (3) de la De�nici�on 4.4.3, necesitamos demostrar que:

( ) , o bien

( ) .

Caso ( ). Ya que entonces, por la hip�otesis de

inducci�on, existe la derivaci�on .

Caso ( ). Ya que ( ) entonces, por

el Teorema 4.4.1, existen las derivaciones:

y

q

A

A

A A A

� �

Demostraci

on

n

' '

'

n

'

'

'

'

V ar g

'

'

'

' ' '

1 2

0

1

0

2

0 0

1 2

� ( )

+

1 2

1 2 1 2

4.4. AN

ALISIS COMPOSICIONAL

A

0 �

A

00 �

A

0 00

A A A

A A

A

R

j

A

R

A

R R

A

R

De�nici�on 4.4.6

Corolario 4.4.7

* 6�

h i h> * i h i h> * i

h i h> * * i � h> * i � h> i

!

R 2

R

r f j h i h> ig

h i h> i

R

r

R

r r * r

# � � fail

g ; � ; � � g ; � ; � � :

g ; g ; � ; � � � ; � # ; �

,

g Goal

g

'

g � g; � ; � ;

g; � ; �

g ; g '

g ; g g g :

narrowing

Dado un programa abstracto y un objetivo abstracto ,

denotamos el conjunto de �exitos composicional abstracto de con respecto a usan-

do la estrategia , como sigue:

en la que las derivaciones se realizan usando las reglas del programa

extendido .

Sea un programa abstracto, objetivos abstractos y una

estrategia de narrowing independiente del entorno. Entonces,

narrowing

81

donde = . Entonces, por la hip�otesis de inducci�on, existen

las derivaciones:

y

Por tanto, por la regla (1) de la De�nici�on 4.4.3,

( ) ( )

lo que completa la prueba.

Usando estos resultados, la composicionalidad de la relaci�on se puede extender

directamente a la relaci�on de composicional abstracto . Introducimos,

a continuaci�on, el conjunto de �exitos abstracto generado mediante la relaci�on .

( ) =

El siguiente resultado expresa formalmente la composicionalidad de la sem�antica

abstracta .

( ) = ( ) ( )

. Inmediato por el Corolario 4.4.2, la Proposici�on 4.4.4 y la Propo-

sici�on 4.4.5.

Como consecuencia de la Proposici�on 4.4.4 y la Proposici�on 4.4.5, el an�alisis para

un objetivo dado (la sem�antica operacional abstracta del objetivo) se puede deter-

minar explotando la composicionalidad AND de la relaci�on de y su ver-

si�on abstracta. En el siguiente cap��tulo mostramos c�omo la composicionalidad de la

sem�antica abstracta, tal y como se ha establecido en el Teorema 4.4.1, permite realizar

los an�alisis de forma incremental.

+

CAP��TULO 4. NARROWING ABSTRACTO

4.5 Comparaci�on con Otras Aproximaciones

narrowing

narrowing

narrowing

narrowing

narrowing

groundness

grafos de dependencias

groundness narro-

wing

reescritura abstracta

82

En este cap��tulo hemos formalizado, en el marco de la interpretaci�on abstracta, un

m�etodo de an�alisis est�atico de programas l�ogico-funcionales que permite computar,

de manera �nita, una aproximaci�on correcta de la sem�antica operacional del progra-

ma. El an�alisis de�nido es param�etrico respecto a 1) la estrategia de y

2) la t�ecnica de abstracci�on de programas que construye los programas abstractos a

partir de los concretos. Se demuestran la correcci�on y terminaci�on del an�alisis para

estrategias de independientes del entorno. Se introduce la noci�on gen�erica

de \grafo de prevenci�on de bucles", que da soporte a una t�ecnica de transformaci�on

autom�atica para obtener un programa abstracto que aproxima las derivaciones del

programa concreto y que, adem�as, permite asegurar la terminaci�on del an�alisis. Por

�ultimo, se formaliza un tipo particular de grafo de dependencias entre t�erminos (indu-

cido por un programa), y se demuestra que es una instancia de la de�nici�on gen�erica

de grafo de prevenci�on de bucles.

El an�alisis est�atico que hemos de�nido sigue las l��neas del marco para el an�alisis

de la insatisfacibilidad ecuacional presentado en [AFM95]. En [AFM95] se formalizan

distintos an�alisis de insatisfaciblidad, tomando como sem�antica operacional concre-

ta la relaci�on de condicional b�asico. El marco para el an�alisis est�atico

presentado en este trabajo es, por el contrario, param�etrico con respecto a distintas

estrategias de y a un m�etodo correcto de abstracci�on del programa, lo que

aumenta considerablemente su aplicabilidad y e�ciencia. M�as a�un, los an�alisis de

abstracto computan una descripci�on �nita de la sem�antica operacional, lo

que permite extraer distintos tipos de informaci�on a partir de ella (en el siguiente

cap��tulo se presentan algunas instancias particulares del an�alisis).

Otras aproximaciones al an�alisis est�atico de programas l�ogico-funcionales son las

siguientes. En [HW92] se presenta una extensi�on del marco para el an�alisis de pro-

gramas l�ogicos, de�nido en [Bru91], al caso de programas l�ogico-funcionales. Esta

aproximaci�on ha sido utilizada, por ejemplo, en [HZ94], para desarrollar un an�alisis

de la , y en [SR92, SR93], para extraer informaci�on sobre el paralelismo

impl��cito de los programas. Por otro lado, en [Boy93, BPM93] se de�ne una aproxima-

ci�on al an�alisis basada en el uso de , siguiendo la aproximaci�on

formalizada en [DM85]. En [MKM 93] se esboza un int�erprete abstracto, que permite

transformar un programa en un conjunto de ecuaciones que re ejan correctamente la

informaci�on sobre la demanda inducida por las reglas del programa. En [HL96], se

de�ne un an�alisis de la a partir de una de�nici�on denotacional de

perezoso, siguiendo la aproximaci�on al an�alisis de programas l�ogicos presentada

en [JS87].

Mucho m�as cercanos a nuestra t�ecnica de an�alisis se encuentran los trabajos sobre

, presentados en [BE�93, BE95], en los que se de�ne un m�eto-

E

narrowing

narrowing

narrower

groundness

4.5. COMPARACI

ON CON OTRAS APROXIMACIONES 83

do para aproximar conjuntos de formas normales para instancias b�asicas de t�ermi-

nos con respecto a un programa CB. Se de�nen las nociones de descripci�on de un

t�ermino y de programa abstracto, que se computa como el menor punto �jo de un

operador de transformaci�on de programas. Entonces, los t�erminos son aproximados

y normalizados usando las reglas del programa abstracto. Si los conjuntos de formas

normales aproximadas no tienen elementos en com�un, los t�erminos concretos no son

-uni�cables.

El an�alisis basado en la reescritura abstracta de [BE�93, BE95] es incomparable

con el nuestro, en el sentido de que existen ejemplos para los que nuestro an�alisis

permite obtener una descripci�on m�as precisa, y viceversa. Sin embargo, el an�alisis

basado en la reescritura abstracta podr��a ser mejorado f�acilmente si se reformulase

como una instancia del marco presentado aqu��. Haciendo uso de su t�ecnica de abs-

tracci�on de programas, pero extendiendo la relaci�on de reescritura abstracta a una

relaci�on de abstracto, se eliminar��a la necesidad de trabajar con t�erminos

b�asicos, lo cual aumentar��a la precisi�on del an�alisis [AFV96a].

El an�alisis formalizado en este cap��tulo puede ser implementado de manera relati-

vamente sencilla, ya que puede utilizarse el propio int�erprete de condicional

concreto para realizar las computaciones abstractas. El proceso m�as complejo con-

siste en la obtenci�on del grafo de prevenci�on de bucles asociado al programa, y en la

posterior abstracci�on del programa en funci�on de la informaci�on recogida por el grafo.

El proceso completo se puede considerar como un proceso de compilaci�on abstracta, y

ha sido implementado en BIM-Prolog con buenos resultados (ver un ejemplo de su uso

en la Secci�on 5.3). En el cap��tulo siguiente se desarrollan algunas de las principales

aplicaciones del an�alisis de�nido, tales como:

una estrategia que permite demostrar, en algunos casos, la insatisfacibilidad de

un objetivo y, en general, eliminar derivaciones in�utiles del �arbol de b�usqueda

del concreto;

una serie de optimizaciones para un lenguaje l�ogico con restricciones ecuaciona-

les, de�nido como instancia del esquema CLP [JL87]; y

un an�alisis para los enlaces de las variables, que permite obtener informaci�on

de e independencia de forma simple y efectiva.

Cap��tulo 5

Aplicaciones del An�alisis

narrowing

narrowing

Constraint Logic Programming

En este cap��tulo, presentamos algunas de las posibles aplicaciones del an�alisis est�atico

formalizado en el cap��tulo anterior. Los resultados de esta secci�on son, al igual que el

an�alisis de�nido, param�etricos respecto a una estrategia de independiente

del entorno.

En primer lugar, en la Secci�on 5.1, mostramos c�omo el resultado del an�alisis (el

conjunto de respuestas computadas abstractas para un programa y un objetivo dados)

puede ser usado para extraer informaci�on �util acerca del programa. Concretamente,

cuando el conjunto de respuestas abstractas es vac��o, podemos a�rmar que el objetivo

original es insatisfacible. Por otro lado, cuando este conjunto no es vac��o mostramos,

en la Secci�on 5.2, que contiene informaci�on correcta y completa para determinar el

tipo de sustituciones que pueden formar parte del conjunto de �exitos concreto. Este

resultado nos permite formular un c�alculo de re�nado, en el que algunos

estados pueden ser eliminados del �arbol de b�usqueda sin p�erdida de completitud,

concretamente, aqu�ellos en los que la sustituci�on en el entorno no es `compatible' con

alguna de las sustituciones del conjunto de �exitos abstracto.

En la Secci�on 5.3, empezamos recordando una instancia simple del marco de pro-

gramaci�on l�ogica con restricciones (CLP, [JL87]), en

el que las restricciones son ecuaciones cuya satisfacibilidad debe comprobarse con

respecto a una teor��a ecuacional [AFL95]. Posteriormente, mostramos c�omo los di-

ferentes resultados obtenidos en los cap��tulos precedentes pueden combinarse para

optimizar los mecanismos de comprobaci�on de la satisfacibilidad de las restricciones

ecuacionales en este marco. Ilustramos la t�ecnica con los tiempos de ejecuci�on obte-

nidos con una implementaci�on preliminar del analizador. Por �ultimo, en la Secci�on

5.4, de�nimos un an�alisis simple para extraer informaci�on acerca de los enlaces de las

variables en tiempo de ejecuci�on.

85

; ;

A

A

A A

Demostraci

on

'

'

' '

'

'

'

'

'

'

' '

'

R

R

� 0 �

R

R

R

R

A

R

R

R R

R

g

g

g � g; � g ; � ; � :

g

g

g

g

g

g g

� g

� g � � g

g g

R P

P f j h i h i h> ig

P

O

P

E

R R / R

R ; R

2 O

2 / ;

O ; R

5.1 An�alisis de Insatisfacibilidad

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

De�nici�on 5.1.1 (conjunto de �exitos parciales)

Teorema 5.1.2

respuestas parciales correctas

Dado un objetivo y un pro-

grama , de�nimos el conjunto de �exitos parciales como sigue:

narrowing

narrowing

Sea un objetivo, un programa y un programa abstracto

que aproxima a . Si , entonces es insatisfacible en .

narrowing

narrowing

narrowing

86

La habilidad para detectar la insatisfacibilidad de un conjunto de ecuaciones (con

respecto a una teor��a de Horn ecuacional) resulta fundamental para eliminar deriva-

ciones del �arbol de b�usqueda que no conducen a ninguna soluci�on, evitando as�� com-

putaciones innecesarias. El problema de la satisfacibilidad ecuacional es, en general,

indecidible. Veamos c�omo se puede utilizar la informaci�on del an�alisis introducido en

el cap��tulo precedente para formular una aproximaci�on decidible al problema.

Introducimos, en primer lugar, un subconjunto destacado de las respuestas par-

ciales de un objetivo, denominado . Dicho conjunto

est�a formado por aquellas sustituciones que aparecen en los estados intermedios de

una derivaci�on de �exito. La siguiente de�nici�on formaliza este concepto.

( )

( ) =

Una propiedad importante del conjunto de �exitos parciales ( ), consiste en que

toda respuesta computada del conjunto ( ) debe ser una instancia de alguna de las

sustituciones de ( ). El resultado es inmediato ya que, a lo largo de una derivaci�on

(de �exito), la sustituci�on actual s�olo puede instanciarse m�as. Dado que disponemos de

una descripci�on de las respuestas computadas para el objetivo, es posible establecer

una relaci�on precisa entre las sustituciones (abstractas) del conjunto � ( ) y las

sustituciones parciales (correctas) que pueden aparecer en una derivaci�on concreta de

�exito.

El siguiente teorema muestra que, cuando la relaci�on de abstracto ter-

mina computando un conjunto vac��o de soluciones, podemos establecer que el conjunto

de ecuaciones inicial no tiene ning�un -uni�cador. En el caso de que el conjunto de

sustituciones abstractas no sea vac��o, en la siguiente secci�on se muestra c�omo se puede

emplear para guiar las derivaciones de concreto.

� ( ) =

. Por el Teorema 4.2.19, para toda sustituci�on concreta ( )

debe existir una sustituci�on abstracta � ( ) tal que . Ya que � ( ) = ,

entonces ( ) = y, por la completitud del , es insatisfacible en .

Usando este resultado, se pueden de�nir an�alisis de insatisfacibilidad ecuacional

para las distintas estrategias de , cuya precisi�on depender�a de la forma en

que se aproxime el programa original. Veamos un ejemplo que ilustra este resultado,

usando la estrategia de condicional \innermost".

A

A

A

A

R

Ejemplo 14

J

J

J

J

J

J

J

J

J

J

J

J

J

J

5.1. AN

ALISIS DE INSATISFACIBILIDAD

R

!

!

!

!

!

!

R

!

! ?

!

!

!

! ?

R R / R

!

R

h i ! h ? i

! h ? f gi

! h f gi

h i ! h ? i

! h ? f gi

! h ? f gi

h i ! h ? i

! h ? f gi

! h f gi

h i ! h ? i

! h ? f gi

! h ? f gi

R

87

(knapsack 0 1)

( ) 0

( : ) ( ) + ( )

( ) ( (0))

( ) (0)

+ 0

+ ( ) ( + )

( ) 0

( : ) ( ) +

( ) ( (0))

( ) (0)

+ 0

+ ( ) ( )

( ( : ) = 0)

( : ) = 0 ( ) + = 0

( (0)) + = 0

( (0)) = 0

( : ) = 0 ( ) + = 0

( (0)) + = 0

( ) = 0

( : ) = 0 ( ) + = 0

(0) + = 0

(0) = 0

( : ) = 0 ( ) + = 0

(0) + = 0

( ) = 0

� ( )

=

addweight nil

addweight x xs weight x addweight xs

weight a s s

weight b s

x x

x s y s x y

addweight nil

addweight x xs weight x

weight a s s

weight b s

x x

x s y s

g addweight x xs

, g

addweight x xs ; � , weight x ; �

, s s ; x=a

, s s ; x=a

addweight x xs ; � , weight x ; �

, s s ; x=a

, s ; x=a

addweight x xs ; � , weight x ; �

, s ; x=b

, s ; x=b

addweight x xs ; � , weight x ; �

, s ; x=b

, s ; x=b

g g

Sea el siguiente programa :

El programa abstracto :

es una aproximaci�on correcta de , i.e. .

Dado el objetivo , y considerando la relaci�on de narrowing

abstracto \innermost" , existen las siguientes derivaciones abstractas para en

el programa abstracto :

todas las cuales son derivaciones de fallo. Por tanto, el conjunto de respuestas com-

putadas abstractas es vac��o y, por el Corolario 5.1.2, el objetivo es insatis-

facible en el programa .

'

A

R

A

A

A

A

A

A

Demostraci

on

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

5.2 Narrowing Guiado por Narrowing Abstracto

� 2

� , 9 2 � ^ �

2

� , * 6�

� ,

9 � ^ � ,

9 ) ^ ) ,

9 2 ^ 2 ,

9 2 \ ,

9 2 [ ,

[ 6�

De�nici�on 5.2.1 (relaci�on de compatibilidad )

Proposici�on 5.2.2

g

Sub Sub

�; � Sub

� �

� � � Sub : � � � � :

fail

�; � Sub

� � � � fail:

� �

�: � � � �

�: � � � �

�: � unif � � unif �

�: � unif � unif �

�: � unif � �

mgu � � fail:

narrowing

Sean . De�nimos

la relaci�on de compatibilidad entre sustituciones abstractas como sigue:

Dadas dos sustituciones abstractas , entonces:

88

Adem�as del anterior resultado de insatisfacibilidad, el Teorema 4.2.19 sugiere que

el conjunto � ( ) tambi�en puede ser usado para detectar computaciones concretas

in�utiles, i.e. derivaciones que no llevan a ninguna soluci�on. En base a estas ideas,

en la Secci�on 5.2, se de�ne un c�alculo de re�nado que comprueba en cada

paso si la sustituci�on actual del estado es `compatible' con alguna de las descripciones

del conjunto de �exitos abstracto. En caso negativo, la derivaci�on es desestimada, ya

que no conduce a ninguna soluci�on.

Introducimos, en primer lugar, una relaci�on de `compatibilidad' entre sustituciones

abstractas. En lo que sigue, usaremos esta relaci�on para realizar tambi�en compara-

ciones entre sustituciones abstractas y sustituciones concretas (ya que ).

( )

Informalmente, dos sustituciones abstractas est�an en la relaci�on (i.e. son com-

patibles) si y s�olo si tienen una instancia com�un, es decir, ambas son generalizaciones

de una misma sustituci�on. Sin embargo, la De�nici�on 5.2.1 no ofrece mucha intuici�on

sobre c�omo puede llevarse a cabo el test sobre sustituciones abstractas. La siguiente

proposici�on establece c�omo puede realizarse dicho test en la pr�actica. Concretamen-

te, la idea es tan simple como comprobar que la composici�on paralela (abstracta) de

ambas sutituciones no sea .

( )

. El resultado se sigue de la siguiente cadena de equivalencias:

(por la De�nici�on 5.2.1)

( ) (por la De�nici�on 4.2.5)

( [[ ]] [[ ]])

( ([[ ]]) ([[ ]]))

( ([[ ]]) ([[ ]]))

([[ ]]) (por la Proposici�on 4.2.10)

( )

; ;

A

A

A

A

A

A

'

'

'

' '

'

' '

'

'

'

'

A

R

R

R

� 0 �

R

A

R R

R

A

0

R

0

0

R

R

Teorema 5.2.3

Corolario 5.2.4

Demostraci

on

Demostraci

on

5.2. NARROWING GUIADO POR NARROWING ABSTRACTO

R R / R

R 2 P

2 �

2 P

h i h i h> i

2 O � �

2 � 2 P

2

� �

� �

R R / R

R h i

R[f g 2

� h i

h i

2 �

g

� g

� g � �

� g

g; � g ; � ; �

� g � � � � � �

Sub Sub

� g � � � g

� g

� �

� �

� �

g

g ; �

g ' � g

� � g ; �

g ; �

� g � �

g

Sea un objetivo, un programa y un programa abstracto

que aproxima a . Entonces, para toda respuesta parcial correcta , existe

una sustituci�on abstracta tal que .

Sea un objetivo, un programa y un programa abstracto

que aproxima a . Sea un estado en el �arbol de derivaciones de narrowing para

, usando la estrategia . Si no existe ninguna sustituci�on tal que

, entonces no existe ninguna derivaci�on de �exito a partir del estado .

narrowing

narrowing

89

Partiendo del hecho de que cada sustituci�on en una derivaci�on de �exito concreta

(i.e cada respuesta parcial correcta) es m�as general que alguna de las respuestas

computadas, mostramos ahora c�omo usar la informaci�on del an�alisis para mejorar el

rendimiento del int�erprete. Esta propiedad es auxiliar y resulta �util para plantear

seguidamente las optimizaciones.

( )

� ( )

. Si ( ), entonces existe una derivaci�on:

tal que ( ) y . Por la De�nici�on 4.2.5, (considerando y

sustituciones abstractas, ya que ). Por el Teorema 4.2.19, debe existir

una sustituci�on � ( ) tal que . Por tanto, para toda ( ), existe

una sustituci�on abstracta � ( ) tal que:

y, en consecuencia, por la De�nici�on 5.2.1, se cumple que .

El siguiente resultado se sigue de forma inmediata del teorema anterior, y repre-

senta la base de nuestra optimizaci�on.

� ( )

. La prueba se realiza por reducci�on al absurdo. Asumamos que

existe una derivaci�on de �exito partiendo de . Entonces, por el Teorema 5.2.3,

existe una sustituci�on � ( ) tal que , lo que contradice la hip�otesis.

Ya que los sub�arboles que se originan en los estados que satisfacen las condiciones

del Corolario 5.2.4 no contienen ninguna soluci�on, es in�util explorarlos. Este resul-

tado sugiere un m�etodo para reducir el tama~no del �arbol de b�usqueda manteniendo

la completitud del c�alculo. Concretamente, la idea es de�nir un c�alculo de

`re�nado' en el que se eliminen aquellos estados que satisfagan las condiciones del Co-

rolario 5.2.4. As��, presentamos ahora una versi�on re�nada de la relaci�on de

gen�erico, introducida en la De�nici�on 2.3.1, que hace uso del conjunto de soluciones

abstractas � ( ) obtenido mediante el an�alisis.

'

1

[ ]u;r

A

A

A

;

; ;

#

#

#

#

#

#

0

1

0

0

0

� ( )

Demostraci

on

A

j

R

R

R

A

A

j

R

� 0 �

'

'

u

r '

'

' u r

'

'

V ar g

'

'

' '

' '

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

R R / R R

2 ^ � ! ( R ^ f g

^ ^ 9 2 �

h i h i

h i

R R �

h i

R R /

R R f j h i

h> ig R

O

h i h i h> i

Escribiremos cuando sea necesario distinguir la ocurrencia y la regla usadas.

De�nici�on 5.2.5 (narrowing con estrategia re�nado )

Ejemplo 15

Corolario 5.2.6

g

u ' g r � � C << � mgu g � �

� restrict �; r � g : � ��

g; � C; g � � ; ��

g

g

g g

g; �

'

g

h f z ; �

g

g

� g; �

; � g

g

g; � g ; � ; � ;

90

( ) ( ) = ( = )

= ( ) � ( )

( [ ] )

En el c�alculo, �unicamente se realiza el an�alisis para el objetivo inicial y se poda

el �arbol de b�usqueda de acuerdo con la informaci�on obtenida en el conjunto � ( ).

Otra opci�on, podr��a consistir en calcular el conjunto � ( ) para los objetivos de

todos los estados en el �arbol concreto, y proseguir o no con la derivaci�on en

funci�on del test. En este caso, las posibilidades de eliminar derivaciones in�utiles es

mucho mayor pero, por supuesto, el coste asociado resulta excesivo.

El siguiente ejemplo ilustra c�omo se comporta el c�alculo re�nado de la De�nici�on

5.2.5, cuando la estrategia se corresponde con la estrategia de b�asico.

( ( )) = 0

Cerramos este apartado demostrando, en el siguiente corolario, la correcci�on y

completitud del nuevo c�alculo re�nado.

( )

. La correcci�on del nuevo c�alculo es inmediata, ya que la relaci�on

est�a incluida en la correspondiente relaci�on . La completitud se preserva como

consecuencia del Teorema 5.2.3, ya que para toda derivaci�on de �exito de la forma:

Sea un objetivo

ecuacional, un programa y un programa abstracto que aproxima a .

De�nimos la relaci�on de narrowing gen�erico re�nado como la menor relaci�on que

satisface :

narrowing

Consideremos de nuevo los programa , y el objetivo inicial

del Ejemplo 13. Mientras que el espacio de b�usqueda del narrowing

b�asico para es in�nito, el c�alculo re�nado explora el �arbol representado en la Figura

5.1. N�otese que el sub�arbol que se originaba en el descendiente de la derecha de la

ra��z en la Figura 4.2 ha sido eliminado. Adem�as, la insatisfacibilidad del sub�arbol eli-

minado no puede detectarse con ninguna de las estrategias de simpli�caci�on est�andar,

como las t�ecnicas basadas en el uso de grafos de detecci�on de bucles [CR91], reglas de

uni�caci�on [Fri85], compatibilidad de operadores [DS87], o normalizaci�on impaciente

[ALN87, DS87].

Dado un objetivo , un programa y un programa abstracto

que aproxima a , el conjunto de respuestas computadas

para en coincide (m�odulo renombramiento de variables) con el conjunto

de �exitos .

A

#

2 � h i

h> i

(

(

% hechos

% reglas

P

P

P

P

P

P

P

P

h i

h f gi

h f gi

h f gi

R

( ( ))=0

(0)=0 0

0=0 0

0

1

h f Z ;�

h ; Z=

; Z=

true; Z=

'

'

n

� g � � g; �

; �

X

X

X

H c:

H c B ; : : : ; B :

Figura 5.1:

Constraint

Logic Programming

5.3 Satisfacci�on Perezosa de Restricciones Ecuacio-

nales

5.3. SATISFACCI

ON PEREZOSA DE RESTRICCIONES ECUACIONALES 91

Narrowing b�asico re�nado.

existe una sustituci�on � ( ) tal que y, por tanto, la derivaci�on

tambi�en se puede probar en el c�alculo re�nado.

Durante la �ultima d�ecada, el paradigma de programaci�on l�ogica tradicional ha sido

generalizado al marco de la programaci�on l�ogica con restricciones (CLP,

[JL87]). CLP es un esquema de lenguajes de programaci�on l�ogica,

que extiende la programaci�on l�ogica pura para incluir restricciones. En contraste con

la programaci�on l�ogica, en CLP el dominio de computaci�on se deja sin especi�car,

aunque sujeto al cumplimiento de ciertas restricciones. Cada instancia CLP( ) del

esquema es un lenguaje de programaci�on, obtenido mediante la especi�caci�on de una

estructura de computaci�on. La estructura de�ne el dominio de discurso subyacente,

as�� como las operaciones y relaciones sobre este dominio, proporcionando as�� una

interpretaci�on sem�antica del mismo. Por ejemplo, la programaci�on l�ogica pura es

una instancia de CLP, en la que la correspondiente estructura tiene como dominio el

universo de Herbrand sobre un alfabeto �nito, y el �unico s��mbolo de predicado para

las restricciones es la igualdad (sint�actica).

Una de las diferencias fundamentales entre el paradigma de programaci�on l�ogica y

el marco CLP, consiste en la sustituci�on del concepto de uni�caci�on por la noci�on (m�as

general) de resoluci�on de restricciones [JL87]. Informalmente, un programa CLP( )

consta de un conjunto de cl�ausulas de la forma:

2

H E

c B

� �

e

e e

e

e

e e

e

e

e

1

2

0 0 1

~

1 2

~

1

1

n

c

CS

n CLP n

c

CS

CS

El Lenguaje CLP( / )

Constraint Solver

( P ^ ^ !

( ! (

!

!

E

E

H

H E H E

H E

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

H B ; : : : ; B c X

H c B << c c ;H A c c; c

c A ; : : : ; A c; c B;A ; : : : ; A

c; c c c; c

A H

c; c

H A c

Denotamos con ~ y una secuencia de ecuaciones y una secuencia de �atomos, respectivamente.

92

donde y son �atomos, y es una restricci�on sobre el dominio . La

posibilidad de incluir restricciones en los objetivos y en los cuerpos de las cl�ausulas

incrementa sustancialmente la potencia expresiva de los programas.

La sem�antica operacional de este tipo de lenguajes se de�ne, generalmente, me-

diante una regla de resoluci�on como la que sigue :

= ( = )

Informalmente, es posible realizar un paso de resoluci�on CLP siempre y cuando la

restricci�on acumulada ( ) sea satisfacible, lo cual denotamos por . N�otese

que la uni�cabilidad entre el �atomo seleccionado y la cabeza de la cl�ausula se

comprueba al tiempo que se veri�ca la satisfacibilidad de la nueva restricci�on ( ),

ya que la ecuaci�on = ha sido previamente a~nadida a la restricci�on . La relaci�on

es la responsable de veri�car la satisfacibilidad de la restricci�on acumulada (la

etiqueta \CS" toma las iniciales de ).

El esquema CLP ofrece una visi�on uni�cada de varias extensiones potentes de

la programaci�on l�ogica pura, como la inclusi�on de caracter��sticas de orientaci�on a

objetos [AN86], aritm�etica real [JM87] o t�erminos in�nitos y desigualdades [JLM86].

En el siguiente apartado, presentamos una instancia particular del esquema CLP

que integra, de manera simple y elegante, los paradigmas de programaci�on l�ogica y

funcional.

Describimos brevemente una instancia del esquema CLP especializada en resolver

ecuaciones con respecto a una teor��a de Horn ecuacional [Alp91, AFL95]. La es-

tructura viene determinada por la partici�on m�as �na inducida por sobre el universo

de Herbrand . El s��mbolo = es el �unico s��mbolo de predicado permitido en las

restricciones, y se interpreta como la igualdad sem�antica sobre el dominio. Represen-

tamos dicha estructura por / , y denotamos por CLP( / ) a la correspondiente

instancia del esquema CLP.

Informalmente, un programa CLP( / ) puede verse como la uni�on de dos conjun-

tos de cl�ausulas. Por un lado, las cl�ausulas CLP, que poseen la forma est�andar vista

anteriormente y cuyas restricciones consisten en secuencias de ecuaciones y, por otro

lado, las cl�ausulas que de�nen la teor��a de Horn ecuacional. Como es habitual, estas

�ultimas pueden orientarse como un conjunto de reglas de reescritura condicionales

(i.e. un SRTC). En este contexto, la relaci�on que comprueba la satisfacibilidad de la

restricci�on acumulada puede de�nirse como sigue.

R

~

e

e

e

e

CS

CS

'

c

CS

! R

!

O 6 ;

!

'

c; c

c c; c

c; c

c; c

c

De�nici�on 5.3.1 ( )

Resoluci�on Incremental

5.3. SATISFACCI

ON PEREZOSA DE RESTRICCIONES ECUACIONALES

Sea un SRTC y una estrategia de narrowing. De�ni-

mos la relaci�on como la menor relaci�on que satisface:

narrowing

na-

rrowing

narrowing

narrowing

narrowing

93

( ) =

En otras palabras, se hace uso directamente de (una instancia de) la relaci�on de

gen�erico con estrategia como mecanismo de comprobaci�on de la satisfaci-

bilidad de las restricciones. Cuando el conjunto de respuestas computadas es vac��o,

podemos a�rmar que la nueva restricci�on ( ) es insatisfacible y, por tanto, la de-

rivaci�on CLP debe terminar con fallo. En caso contrario (basta con que exista una

respuesta computada), queda demostrada su satisfacibilidad, y la restricci�on acumu-

lada pasa a formar parte del nuevo objetivo CLP derivado.

Es evidente, no obstante, que el modelo de computaci�on presentado posee dos

graves inconvenientes:

En primer lugar, el mecanismo de resoluci�on de restricciones es extremadamente

ine�ciente. Esto se debe, principalmente, a que no se realizan las computaciones

de manera incremental, es decir, en cada paso de resoluci�on CLP se comprueba

la satisfacibilidad de la nueva restricci�on acumulada ( ), sin explotar el hecho

de que la restricci�on previa se sab��a satisfacible (ya que se demostr�o en el paso

anterior).

En segundo lugar, tenemos el problema de la (posible) no terminaci�on de

. Concretamente, cuando en el intento de demostrar la satisfacibilidad

de una restricci�on el algoritmo de no termina, la correspondiente

derivaci�on CLP entra en ciclo sin computar ninguna respuesta.

En los siguientes apartados, hacemos uso de los distintos resultados obtenidos hasta

el momento para mejorar los c�alculos. Concretamente, la composicionalidad de la

sem�antica nos permite introducir incrementalidad en el proceso de comprobaci�on de

la satisfacibilidad de las restricciones. Independientemente, mostramos c�omo el uso de

la relaci�on de aproximado se puede utilizar para formalizar un mecanismo

de resoluci�on CLP perezoso, evitando as�� el problema de la posible no terminaci�on de

. Por �ultimo, se presenta una soluci�on que integra ambas optimizaciones.

En el contexto del marco CLP, la incrementalidad consiste en demostrar la satisfacibi-

lidad de una secuencia de restricciones, transformando la soluci�on existente para cada

restricci�on previamente resuelta en una soluci�on para la siguiente restricci�on [HP91].

Asumimos que las restricciones crecen mon�otonamente a lo largo de la derivaci�on CLP

� �

e e e

e

e

e

e e

e

e

R

R

0

R

0

0

0

0

0

0 1 1 1

0 1

0

~

0 0 1

~

1 2

n n i i i

i

i

'

n

i

'

iCS

iCS

'

c

iCS

CLP

c

iCS

n CLP n

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

O

*

h i

O h; ;i

! R

!

* O ^ 6 ;

h i ! h i

h; ;i

!

( P ^ ^ h i ! h i

( h i ! ( h i

;

De�nici�on 5.3.2

De�nici�on 5.3.3 (iCS-estado)

De�nici�on 5.3.4 ( )

c ; c ; c ; : : : ; c ; c c c ; c

c

c ; : : : ; c i ; : : : ; n

c ; : : : ; c

c

c; c

c ;

'

c

c; c; c ;

;

H c B << c c ;H A c; c; c ;

c; A ; : : : ; A c; c ; B;A ; : : : ; A

problema de satisfacci�on de restricciones incremental

Sean restricciones, donde . Un

problema de satisfacci�on de restricciones incremental consiste en comprobar (e�cien-

temente) la satisfacibilidad de , haciendo uso de la informaci�on sobre las computa-

ciones previas para , .

incremental Constraint Solver

Un iCS-estado es un par , donde es una

restricci�on (i.e. una secuencia de ecuaciones) y es el conjunto de respuestas com-

putadas asociado es decir, . El iCS-estado vac��o se denota por el par .

Sea un programa y una estrategia de narrowing. De-

�nimos la relaci�on como la menor relaci�on que satisface:

94

y la cuesti�on es, por tanto, c�omo realizar e�cientemente el test de satisfacibilidad para

las restricciones acumuladas en los sucesivos pasos. La siguiente de�nici�on introduce

la noci�on de .

= ( )

= 1

La composicionalidad de la sem�antica (para estrategias independientes del

entorno) sugiere una soluci�on simple y elegante al problema de la satisfacci�on de res-

tricciones incremental. La idea b�asica consiste en, dadas las restricciones

computadas a lo largo de una derivaci�on CLP, utilizar los resultados de composi-

cionalidad de la sem�antica operacional para calcular, en cada paso, �unicamente el

conjunto de �exitos de la nueva restricci�on , combin�andolo con los anteriores me-

diante el operador de composici�on paralela . Para ello, es necesario almacenar junto

a cada restricci�on el correspondiente conjunto de respuestas computadas, lo que nos

lleva a la siguiente de�nici�on de iCS-estado (la etiqueta \iCS" toma las iniciales de

).

( ( ))

Introducimos ahora la nueva relaci�on incremental que veri�ca la satisfacibilidad

de las restricciones.

� = � ( ) � =

� ( ) �

El nuevo procedimiento comienza con el iCS-estado vac��o y, en cada paso,

calcula �unicamente el conjunto de respuestas computadas para la nueva restricci�on,

componi�endolo a continuaci�on con el conjunto de respuestas de la restricci�on (acumu-

lada) anterior. La relaci�on se extiende de manera natural para trabajar con

iCS-estados en lugar de restricciones:

= ( = ) � ( ) �

� ( ) �

N�otese que, si a lo largo de una derivaci�on CLP el nuevo conjunto de sustituciones

� en un estado es , la restricci�on acumulada es insatisfacible y podemos detener la

A

~ ~

~

0 0

R

A

R

e

e e e

e

e

c

CS

c

iCS

'

'

CA

CA

'

c

CA

Resoluci�on Perezosa

R

! , h i ! h i * O

!

! R R / R

R !

6 ;

!

'

c; c

c c; c c; c; c ; ; c :

,

'

c; c

c c; c

Lema 5.3.5

De�nici�on 5.3.6 ( )

5.3. SATISFACCI

ON PEREZOSA DE RESTRICCIONES ECUACIONALES

Sea un programa y una estrategia de narrowing. Dadas las restric-

ciones , se cumple:

narrowing

narrowing

narrowing

Sea un programa, un programa abstracto que

aproxima a y una estrategia de narrowing. De�nimos la relaci�on como la

menor relaci�on que satisface:

95

derivaci�on CLP con fallo. La correcci�on y completitud del nuevo c�alculo se enuncia

en el siguiente lema, y es una consecuencia inmediata del Teorema 3.2.6.

� ( ) � � = � ( )

Respecto a la mejora obtenida con el nuevo mecanismo, podemos considerar dos

casos. Si deseamos obtener todas las soluciones para las restricciones, el nuevo c�alculo

es generalmente m�as e�ciente que el anterior, ya que no es necesario recomputar

todas las soluciones para la restricci�on acumulada de entrada. Por otro lado, si

es su�ciente con obtener una �unica soluci�on para las restricciones (ya que con ello

queda demostrada su satisfacibilidad), el mecanismo original es (en algunos casos)

m�as e�ciente y, adem�as, el riesgo de no terminaci�on es menor. Sin embargo, en

ambos casos el riesgo de no terminaci�on debido a la relaci�on de sigue

siendo demasiado alto.

En este apartado, presentamos una soluci�on al problema de la no terminaci�on del

mecanismo de resoluci�on de restricciones. Concretamente, la idea es utilizar la re-

laci�on de aproximado, cuya terminaci�on est�a garantizada, para de�nir un

mecanismo de resoluci�on CLP perezoso.

Informalmente, el nuevo procedimiento de resoluci�on CLP realiza los siguientes

pasos. Mientras el conjunto de �atomos en el objetivo no es vac��o, simplemente se

comprueba en cada paso la (posible) satisfacibilidad de la restricci�on acumulada,

haciendo uso del an�alisis est�atico de�nido por la relaci�on . Por la correcci�on del

an�alisis, podemos asegurar que si el conjunto de �exitos abstracto es vac��o, entonces la

restricci�on es insatisfacible (y podemos abortar la derivaci�on CLP de forma segura).

Por otro lado, si llegamos a un objetivo donde la secuencia de �atomos es vac��a sin

haber demostrado la insatisfacibilidad de la restricci�on acumulada, entonces podemos

hacer uso de la relaci�on de concreto para determinar la satisfacibilidad de la

restricci�on �nal (as�� como las correspondientes respuestas computadas). La siguiente

de�nici�on formaliza el nuevo c�alculo para la veri�caci�on de las restricciones.

� ( ) =

A

� �

e

e e

e

e

0 0 1

~

1 2

CA

c

CA

n CLP n

!

( P ^ ^ !

( !

(

P

H E R R / R R

Resoluci�on Perezosa Incremental

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

H c B << c c ;H A c c; c

c A ; : : : ; A c; c B;A ; : : : ; A

c

c;

'

De�nici�on 5.3.7 (resoluci�on CLP perezosa incremental)

Constraint Analy-

zer

narrowing

narrowing

narrowing

narrowing

narrowing

narrowing narrowing

abstractas

Sea un programa

CLP( / ), un SRTC, un programa abstracto que aproxima a y una

estrategia de narrowing. El procedimiento de resoluci�on CLP perezoso incremental se

de�ne mediante el siguiente sistema de transici�on jer�arquico:

96

La nueva relaci�on (la etiqueta \CA" toma las iniciales de

) es ahora la encargada de veri�car la satisfacibilidad de la restricci�on acumulada.

La (posible) satisfacibilidad de las restricciones se demuestra haciendo uso de la re-

laci�on de abstracto, cuya terminaci�on est�a siempre garantizada. El nuevo

mecanismo de resoluci�on CLP, de�nido por la siguiente regla de transici�on:

= ( = )

se dice perezoso, ya que en cada paso de computaci�on CLP s�olo se comprueba una

aproximaci�on a la satisfacibilidad de la restricci�on acumulada. Si se alcanza un objeti-

vo CLP de la forma , en el que la secuencia de �atomos es vac��a, entonces se debe

hacer uso de la relaci�on de concreto para veri�car la satisfacibilidad de la

restricci�on �nal. Esta �ultima veri�caci�on, sin embargo, puede no terminar (e, incluso,

resultar muy ine�ciente). En este caso, ya no es posible demorar m�as el c�omputo

de las soluciones concretas para la restricci�on �nal (en caso de que sea satisfacible),

con lo que la �unica posibilidad consiste en utilizar una estrategia de lo

m�as optimizada posible. Dicha computaci�on �nal puede efectuarse haciendo uso de

la relaci�on de guiado por el an�alisis. La correcci�on del nuevo mecanismo de

satisfacci�on de restricciones es inmediato por la correcci�on de la relaci�on de

abstracto (Teoremas 4.2.19 y 4.3.7).

Presentamos ahora un re�namiento del procedimiento de resoluci�on CLP que integra

todas las optimizaciones anteriores. Informalmente, la idea consiste en tomar como

base el c�alculo perezoso del apartado anterior e incorporar las dos optimizaciones

ya comentadas: en primer lugar, se calcula incrementalmente el conjunto de �exitos

abstracto para la restricci�on acumulada y, en segundo lugar, se hace uso de la infor-

maci�on del an�alisis (el conjunto de �exitos abstracto) para calcular de forma e�ciente

las respuestas computadas para la restricci�on �nal (haciendo uso de la relaci�on de

guiado por abstracto).

El nuevo modelo trabaja con estados ( �) similares a los presentados en la De�ni-

ci�on 5.3.3, con la �unica diferencia de que aqu�� � denota un conjunto de sustituciones

. La siguiente de�nici�on formaliza el nuevo procedimiento de resoluci�on

CLP.

A

� �

#

~

0 0 1

~

1 2

e

e

e

e e

e

e

0

A

R

0

0

0

0

A

Ejemplo 16

CA

iCA

'

c

iCA

c

iCA

n CLP n

iCA

'

CA

5.3. SATISFACCI

ON PEREZOSA DE RESTRICCIONES ECUACIONALES

* ^ 6� ;

h i ! h i

( P ^ ^ h i ! h i

h i ! h i

!

( h i

f j h i h> ig

R

! (

! (

! (

R

! (

! ? (

! (

!

c

c; c; c ;

H c B << c c ;H A c; c; c ;

c; A ; : : : ; A c; c ; B;A ; : : : ; A

c;

� c; � ; � :

X + 0 X

X + s(Y) s(X + Y)

parity(X) even X = Y + Y

X + 0 X

X + s(Y) s( )

parity(X) even X = Y + Y

incremental Constraint Analyzer

narrowing narrowing

Sea el siguiente programa (can�onico por niveles):

donde la funci�on `parity' se eval�ua a `even' cuando su argumento es par. Una posible

aproximaci�on correcta de dicho programa es el programa abstracto :

En la Tabla 5.1 se muestran los tiempos de ejecuci�on para 5 posibles conjuntos de

restricciones que se podr��an generar durante una computaci�on CLP. Se ha tomado,

como base para analizar las restricciones ecuacionales, la relaci�on de narrowing b�asico

abstracto. La columna muestra el tiempo de ejecuci�on usando la relaci�on ,

que debe (re-)analizar en cada paso la restricci�on completa. La columna muestra

97

(1)

� = � � ( ) �

� ( ) �

(2)

= ( = ) � ( ) �

� ( ) �

La principal diferencia con respecto al procedimiento perezoso introducido en la

secci�on anterior, consiste en que ahora el conjunto de soluciones abstractas se obtiene

de forma incremental (regla 1) haciendo uso de la relaci�on (la etiqueta \iCA"

toma las iniciales de ). Por otra parte, disponemos

del conjunto de �exitos abstracto para la restricci�on �nal, lo que nos permite hacer

uso de la relaci�on de guiado por abstracto. Concretamente,

si mediante la aplicaci�on de la regla (2) se alcanza un estado terminal de la forma

� , las soluciones de la computaci�on CLP vienen determinadas por el con-

junto:

De esta forma, se consigue reforzar la terminaci�on del c�alculo. Se ha implementado

un prototipo de este m�etodo de an�alisis incremental en Prolog con buenos resultados.

A continuaci�on, se presentan algunos tiempos de ejecuci�on para un programa ejemplo

sencillo.

!

iCA

2

2

3

4

CA=iCA

H A

Inc

iCA

AbsNwing

APCom

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

restricciones CA iCA AbsNwing APCom Inc

10.62 5.24

18.24 3.44

26.36 4.44 fail

19.48 3.64

20.26 1.14 fail

CA

iCA

AbsNwing

APCom

Z = 0, parity(X) = even

Y + Z = s (0)

Y = X + Z

parity(X) = even

parity(Y) = even

X + Y = s (0)

parity(X) = even

Y = s(0), Z = X + Y

X + Z = s (0)

X + Y = s (0)

parity(X) = even

parity(Y) = even

parity(X) = parity(Y)

X + Y = s(Z)

Z = 0

0.52 0.54 0.42 0.00

3.38 1.62 0.62 0.86

0.44 4.76 2

0.42 0.42 0.30 0.00

3.88 2.80 0.32 1.20

0.44 2.92 5.3

0.40 0.40 0.28 0.00

3.78 1.52 0.46 0.66

5.9

0.72 0.72 0.54 0.00

3.66 2.10 0.32 1.46

0.30 2.62 5.34

3.62 3.66 2.30 0.00

23.18 12.00 0.46 9.52

17.8

Analizador de Restricciones

Analizador de Restricciones Incremental

Narrowing Abstracto

Composici�on Paralela Abstracta

98

Para terminar este punto, mencionar que no todas las posibilidades para incre-

mentar la e�ciencia han sido explotadas. Por ejemplo, dado que se han introducido

(y demostrado correctas) las versiones composicionales tanto del c�alculo de

concreto como de su versi�on aproximada, se puede incorporar de manera directa pa-

ralelismo en el proceso de c�omputo formalizado en la De�nici�on 5.3.7. Es importante

destacar que en las computaciones CLP las cl�ausulas del programa no son instanciadas

al realizar pasos de computaci�on, ya que el test de uni�caci�on se realiza incorporando

la correspondiente ecuaci�on = a la nueva restricci�on. Por tanto, es posible calcu-

lar los conjuntos de �exitos abstractos de las condiciones contenidas en las cl�ausulas

Tabla 5.1: Tiempos del analizador de restricciones Incremental vs. No Incremental

(en segundos, BIM-Prolog, SUN 3/80).

el tiempo de ejecuci�on usando la relaci�on , que obtiene de forma incremental el

nuevo conjunto de �exitos abstracto. La columna ( ) muestra el incremen-

to de e�ciencia obtenido por el an�alisis incremental. Por �ultimo, los tiempos de la

columna son el resultado de la suma del tiempo para calcular el conjunto de �exitos

abstracto para la nueva restricci�on (columna ), el tiempo de componer el

nuevo conjunto de sustituciones abstractas con el anterior, haciendo uso del operador

de composici�on paralela abstracto (columna ), m�as un tiempo extra usado

para realizar algunas simpli�caciones relevantes �unicamente para la implementaci�on.

narrowing

; 2

\ ;

H A

x � V ar x�

x; y V �

V ar x� V ar y� ground

5.4 An�alisis de Enlaces de Variables

5.4. AN

ALISIS DE ENLACES DE VARIABLES

narrowing narrowing

narrowing

groundness analysis

b�asica bajo una sustituci�on

independientes bajo

99

en tiempo de compilaci�on, permitiendo as�� minimizar las computaciones a realizar en

tiempo de ejecuci�on. Concretamente, s�olo ser��a necesario calcular las soluciones a las

ecuaciones = , y hacer uso del operador de composici�on paralela abstracto para

ir componiendo los distintos conjuntos de sustituciones abstractas.

Todo esto indica que la implementaci�on de una instancia del marco CLP que

integre la programaci�on l�ogica y funcional es un proyecto viable. M�as a�un, si se utiliza

el mecanismo de resoluci�on CLP perezoso, las optimizaciones descritas anteriormente

y una estrategia de e�ciente (e.g. condicional perezoso), el

modelo resultante tiene buenas oportunidades para explotar el paralelismo inherente

de los programas, as�� como para realizar las computaciones de manera e�ciente.

El an�alisis est�atico formalizado en el Cap��tulo 4 permite obtener una aproximaci�on

correcta del conjunto de �exitos de un objetivo. Esta informaci�on es signi�cativa para

aquellos tipos de an�alisis en los que se desea veri�car propiedades que se satisfacen en

todas las derivaciones de �exito. Como ejemplo, vamos a desarrollar en esta secci�on dos

an�alisis simples, que nos permiten mostrar c�omo el conjunto de sustituciones abstrac-

tas (computado por abstracto) puede ser usado para extraer informaci�on

precisa sobre los enlaces de las variables del objetivo durante la ejecuci�on.

La informaci�on sobre los enlaces de las variables puede resultar �util para toda

una serie de optimizaciones de programas. Por ejemplo, en la implementaci�on de un

modelo de paralelismo AND independiente [HR95], las subexpresiones s�olo pueden

ser ejecutadas en paralelo si son independientes, es decir, si sus variables est�an liga-

das a t�erminos que no comparten variables [JL89, MH89]. Dichas comprobaciones

de independencia entre subexpresiones pueden evitarse en tiempo de ejecuci�on si se

dispone, en tiempo de compilaci�on, de la informaci�on adecuada sobre los enlaces de

las variables.

Vamos a de�nir dos tipos de an�alisis a partir de la informaci�on generada por la

sem�antica abstracta. El primero, permite extraer informaci�on sobre aquellas varia-

bles del objetivo que se instanciar�an, en todas las derivaciones de �exito, a un t�ermino

b�asico ( ). El segundo, permite extraer informaci�on sobre la inde-

pendencia de las variables del objetivo, es decir, dadas dos variables del objetivo, nos

permite inferir si en todas las derivaciones de �exito dichas variables se instanciar�an a

t�erminos que no comparten variables.

Decimos que una variable es si y s�olo si ( ) =

. Un par de variables son si y s�olo si los t�erminos a

los que dichas variables se instancian por no comparten variables, es decir, si y s�olo

si ( ) ( ) = . En la siguiente de�nici�on se introduce la funci�on ,

3

?

?

'

'

'

'

\

\

\

\

V ar t t

R

R

R

A

R

A

variable

A

A

A

A

2O

2O

A

2

2

3

( )

( )

� ( )

� ( )

� g

� g

'

'

� g

'

'

� g

2

!

f j ;g

2

! �

f j 6 ^ \ ;g

R

R R / R

R

!

! �

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

De�nici�on 5.4.1

De�nici�on 5.4.2

De�nici�on 5.4.3

N�otese que en la De�nici�on 4.2.1 se introduce como un nuevo s��mbolo de . As��, la

funci�on ( ) devuelve tambi�en las ocurrencias de que aparezcan en .

� Sub

ground Sub }V

ground � x V ar x� :

indep

� �

� Sub

indep Sub } V V

indep � x; y x y V ar x� V ar y� :

g

' g

ground � :

indep � :

g '

SGV Goal }V

SGV g ground � :

SIV Goal } V V

SIV g indep � :

Dada una sustituci�on abstracta , de�nimos la funci�on

como sigue :

Dada una sustituci�on abstracta , de�nimos la funci�on

como sigue:

narrowing

narrowing

narrowing

narrowing

Sea un programa, un programa abstracto que aproxima

a y un objetivo ecuacional. Dada una estrategia de narrowing , de�nimos la

funci�on como sigue:

La funci�on se de�ne como sigue:

100

que toma una sustituci�on abstracta y devuelve el conjunto de variables b�asicas bajo

dicha sustituci�on .

:

( ) = ( ) =

La siguiente de�nici�on formaliza la funci�on , que toma una sustituci�on abs-

tracta y devuelve el conjunto de variables independientes bajo .

: ( )

( ) = ( ) = ( ) ( ) =

L�ogicamente, los enlaces para las variables de un objetivo dado dependen de la

estrategia de empleada. Sea un programa, un objetivo ecuacional

y una estrategia de . El conjunto de variables del objetivo que se

instanciar�an a t�erminos b�asicos en todas las derivaciones de �exito de es:

( )

La informaci�on sobre la independencia de las variables del objetivo se puede extraer

del siguiente conjunto:

( )

En la siguiente de�nici�on, mostramos c�omo obtener aproximaciones correctas de di-

chos conjuntos, a partir de las respuestas aproximadas obtenidas por abs-

tracto.

:

( ) = ( )

: ( )

( ) = ( )

A

A

A

A

R

A

R

R

R

R

' '

'

'

'

'

'

'

'

Demostraci

on

Ejemplo 17

Proposici�on 5.4.4

5.4. AN

ALISIS DE ENLACES DE VARIABLES

R

!

j !

R

!

j ! ?

� j

ff gg

f g

R[f g

R R / R

R

2 R[ f g

2 R [ f g

2 8 2 ;

2 O

2 /

/ 8 2 ; ) ;

8 2 O ;

noe

noe h t s noe t

noe

noe h t s

g noe l s ; noe ll x; x ; l a ll

g x= ; l= a ; ll= :

SGV g x; l; ll

g g

SGV SIV

g '

x SGV g g

x

x; y SIV g g

x y

x SGV g � g : V ar x�

� g

� g � �

� � x V: V ar x� V ar x�

� g : V ar x�

101

El siguiente ejemplo ilustra la extracci�on de dicha informaci�on, usando la relaci�on

de b�asico abstracto.

([ ]) 0

([ ]) ( ([ ]))

([ ]) 0

([ ]) ( )

( ( ) = (0) ( ) = = 0 = [ ])

� ( ) = 0 [ ] [ ]

( ) =

La siguiente proposici�on establece la correcci�on de las funciones y ,

como consecuencia de la correcci�on del an�alisis basado en abstracto.

( )

( ) ( )

.

1. Sea ( ). Entonces � ( ) ( ) = . Por el Teorema 4.2.19,

para toda sustituci�on de respuesta computada ( ) existe una sustituci�on

abstracta � ( ) tal que . Por la De�nici�on 4.2.5, es inmediato que

si entonces se cumple ( ( ) = ( ) = ). Por

tanto, ( ) ( ) = , lo que completa la prueba.

narrowing

Consideremos el siguiente programa , que computa el n�umero de ele-

mentos de una lista:

y el siguiente programa abstracto que lo aproxima de forma correcta:

La sem�antica abstracta para el objetivo inicial:

usando la estrategia de narrowing b�asico es:

Entonces, . El an�alisis muestra que, en los estados �nales de cual-

quier derivaci�on concreta de �exito para , todas las variables de se encuentran

instanciadas a un t�ermino b�asico.

narrowing

Sea un programa, un programa abstracto que apro-

xima a y un objetivo ecuacional. Dada una estrategia de narrowing , entonces

se cumple:

1. Si entonces, en toda derivaci�on de �exito para , la variable

se instancia a un t�ermino b�asico.

2. Si entonces, en toda derivaci�on de �exito para , las

variables e permanecen independientes.

A

A

R

R R

R

'

'

' '

'

2 8 2 \ ;

2 O 2 /

/ 8 2

\ ; ) \ ; 8 2

O \ ;

CAP��TULO 5. APLICACIONES DEL AN

ALISIS

x; y SIV g � g : V ar x� V ar y�

� g � g � �

� � x; y

V: V ar x� V ar y� V ar x� V ar y� �

g : V ar x� V ar y�

102

2. Sea ( ) ( ). Entonces � ( ) ( ) ( ) = . De

forma an�aloga al caso anterior, para toda sustituci�on de respuesta computada

( ) existe una sustituci�on abstracta � ( ) tal que . Por

la De�nici�on 4.2.5, resulta inmediato que si entonces se cumple

( ( ) ( ) = ( ) ( ) = ). Por tanto,

( ) ( ) ( ) = , lo que concluye la prueba.

103

Parte II

Transformaci�on de Programas

Cap��tulo 6

Fundamentos de la EP de

Programas

El objetivo general de las t�ecnicas de transformaci�on de programas es derivar progra-

mas \mejores" pero sem�anticamente equivalentes al programa original. La evaluaci�on

parcial (EP) es una t�ecnica de transformaci�on de programas que consiste en la especia-

lizaci�on de un programa respecto a ciertos datos de entrada, conocidos en tiempo de

compilaci�on [Fut71]. El programa resultante puede ser ejecutado m�as e�cientemente

que el programa original ya que, usando el conjunto de datos conocidos (parcialmen-

te), es posible evitar algunas computaciones en tiempo de ejecuci�on que se realizar�an,

una �unica vez, durante el proceso de compilaci�on. Por otro lado, las t�ecnicas de EP

han demostrado tambi�en su utilidad para la optimizaci�on del proceso de compilaci�on,

as�� como en el campo de la generaci�on autom�atica de compiladores [JGS93], permi-

tiendo la obtenci�on de un compilador para el lenguaje a partir de su int�erprete (por

evaluaci�on parcial del propio evaluador respecto a �este).

Las t�ecnicas convencionales de EP para programas funcionales se basan en la re-

ducci�on de expresiones y en la propagaci�on de constantes, mientras que las t�ecnicas

empleadas para la deducci�on parcial de programas l�ogicos explotan la propagaci�on

de par�ametros basada en uni�caci�on. Han habido, hasta la fecha, pocos intentos de

estudiar las relaciones entre las t�ecnicas usadas en programaci�on funcional y progra-

maci�on l�ogica [GS94]. Pensamos que un tratamiento uni�cado del problema establece

las bases para una comparaci�on precisa, y podr��a generar ideas para nuevos desarrollos

en ambos campos.

Este cap��tulo se ha organizado como sigue. En la Secci�on 6.1, se describen algunos

antecedentes de la EP, se introducen las motivaciones para el presente trabajo y se

relaciona �este con otros trabajos previos existentes en la literatura sobre el tema. En

la Secci�on 6.2 mostramos que, en el contexto de los lenguajes l�ogico{funcionales, la

105

2

2

� �

i i I

j j J

f g

f g � !

� !

0 1 2 0 1 2

0 1 2 0 1

1

6.1 Introducci�on

narrowing narrowing

narrowing

narrowing

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

P p

D d Sem P D D

Part P D P

Sem p ; d ; d Sem Part p ; d ; d

p d ; d Part p ; d

d

106

especializaci�on de programas se puede basar directamente en el mecanismo operacio-

nal de . Debido al tratamiento que hace de las variables l�ogicas

y, en particular, a la propagaci�on bidireccional de par�ametros debida a la uni�ca-

ci�on, nuestros resultados son m�as potentes (y las pruebas m�as simples) que los de

otras aproximaciones comparables previas. Concretamente, demostramos para nues-

tro m�etodo un resultado de correcci�on fuerte que asegura la equivalencia del programa

original y el transformado respecto a las respuestas computadas y no s�olo respecto al

conjunto de �exitos b�asicos. Desarrollamos los conceptos que sirven de base a la EP de

programas l�ogico-funcionales y formalizamos un esquema de especializaci�on basado en

el desplegado de �arboles de para el objetivo a evaluar. Tambi�en formulamos

las nociones de cierre e independencia que resultan esenciales para obtener todas las

respuestas sin producir soluciones adicionales. Por �ultimo, en la Secci�on 6.3, estable-

cemos, para la relaci�on de condicional (bajo las condiciones anteriormente

introducidas), la correcci�on y completitud fuertes del m�etodo de EP aqu�� propuesto.

En general, el objetivo de las t�ecnicas de EP es construir, dado un programa y alg�un

tipo de restricci�on sobre su uso (e.g. informaci�on sobre algunos de los valores de los

par�ametros de entrada), un programa especializado o \residual" m�as e�ciente, pero

equivalente al original cuando se usa de acuerdo a la restricci�on impuesta [JGS93].

Una de las razones principales que suscitan el inter�es por las t�ecnicas de EP es la

posibilidad de conseguir implementaciones e�cientes, por medios puramente autom�ati-

cos, de programas generales y altamente parametrizables. La idea b�asica consiste en

permitir la escritura de programas de prop�osito general, usualmente poco e�cientes,

y utilizar las t�ecnicas de EP para generar programas especializados (de prop�osito

concreto) cuya ejecuci�on sea m�as e�ciente [JGS93].

En el campo de las matem�aticas, es bien conocido el proceso que permite generar

una funci�on unaria a partir de una funci�on binaria, cuando se establece un valor

�jo para uno de sus argumentos. Esta operaci�on recibe el nombre de proyecci�on.

La EP consiste en una transformaci�on muy similar, pero operando sobre programas

en lugar de funciones. Una formulaci�on simple, pero que describe con claridad las

caracter��sticas de la EP de programas, es la siguiente [EJ88]. Sea = un

dominio de programas, = un dominio de datos, y :

la funci�on sem�antica asociada a un programa (con sus datos de entrada). Entonces,

la funci�on de EP : debe cumplir la siguiente propiedad:

( ( )) = ( ( ) )

donde es un programa cuyos datos de entrada son ( ) y ( ) es un

programa \especializado" respecto a los datos de entrada . As��, la sem�antica del

menos

6.1.1 Antecedentes

6.1. INTRODUCCI

ON 107

programa original se debe preservar cuando se emplea el programa especializado sobre

los datos desconocidos en el momento de la EP.

Si bien la idea intuitiva acerca de qu�e es un programa parcialmente evaluado

resulta simple, existen toda una serie de cuestiones pr�acticas que deben abordarse

para la de�nici�on de un m�etodo de EP:

Las t�ecnicas b�asicas de transformaci�on empleadas en el m�etodo.

La terminaci�on del proceso completo.

La preservaci�on de la sem�antica (operacional) del programa original.

La efectividad del proceso, i.e. la disminuci�on del tiempo de ejecuci�on, para una

determinada clase de programas, sin que se produzca un aumento inaceptable

del tama~no del c�odigo.

En el resto de este trabajo, consideramos cada una de estas cuestiones y desarrollamos

nuestra soluci�on particular, que contempla todos los aspectos mencionados.

Se puede considerar que el origen de la EP de programas se remonta a los a~nos

50{60. No es estra~no, pues, que exista una gran cantidad de literatura relacionada

con el tema. En el siguiente apartado se resumen, sin �animo de ser exhaustivos, los

principales antecedentes de las t�ecnicas de EP de programas l�ogicos y funcionales.

La especializaci�on de programas no es precisamente una idea reciente. Fue introdu-

cida, hace m�as de 40 a~nos, por Kleene en su formulaci�on del teorema s-m-n [Kle52],

que demuestra b�asicamente la correcci�on de la transformaci�on, y es una de las con-

tribuciones m�as importantes de Kleene a la teor��a de las funciones recursivas. Sin

embargo, las cuestiones de e�ciencia eran irrelevantes en las investigaciones de Kleene

y, de hecho, su construcci�on obten��a programas especializados e�cientes que

los originales.

Las distintas t�ecnicas actuales de EP no tuvieron un origen com�un, sino que sur-

gieron varias t�ecnicas muy similares en diferentes pa��ses y de manera independiente

[Ers88]. Por un lado, encontramos los trabajos de Y. Futamura [Fut71, Fut83, Fut88],

en los que se formulan las hoy llamadas \proyecciones de Futamura". Este trabajo es

un precedente claro de las t�ecnicas de EP, en el que se muestra c�omo obtener compi-

ladores, generadores de compiladores y generadores de generadores de compiladores

a partir de int�erpretes. Una de las aportaciones m�as relevantes del trabajo de Fu-

tamura fue el descubrimiento de que la especializaci�on del propio evaluador parcial,

tomando un int�erprete como dato conocido en el proceso de especializaci�on, generaba

(esencialmente) como programa residual un compilador.

G

P

P

P G

P P;G

G P

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

super-

compilaci�on

deducci�on

parcial

closedness

108

Por otro lado, los trabajos de V. Turchin y su grupo relacionados con la

, juegan tambi�en un papel importante dentro del desarrollo de la EP. Sus

primeros trabajos datan de mediados de la d�ecada de los 70, e.g. [Tur74, Tur77], pero

no fue hasta principios de los 80 cuando sus trabajos comenzaron a ser conocidos por

la comunidad internacional [Tur79, Tur80a, Tur80b]. Aparte del problema del idio-

ma (los primeros trabajos s�olo est�an disponibles en ruso), otro inconveniente a~nadido

para la difusi�on de los trabajos de Turchin fue su orientaci�on exclusiva hacia el len-

guaje de programaci�on Refal [Tur89], un lenguaje funcional poco est�andar seg�un los

par�ametros occidentales. La t�ecnica de supercompilaci�on de Turchin est�a considera-

da, actualmente, como una de las m�as potentes para la especializaci�on de programas

funcionales [Jon94, SGJ94, S�r94].

Otro de los trabajos pioneros en el tema se debe a L.A. Lombardi y B. Raphael,

cuya \computaci�on incremental" para el lenguaje LISP [Lom67, LR64] se puede en-

tender como una forma de EP de programas funcionales. De la misma �epoca y sobre

el mismo tema es tambi�en el trabajo de J. McCarthy [McC64]. Cabe destacar tam-

bi�en los trabajos de Burstall y Darlington [BD77], que de�nen un conjunto de reglas

de transformaci�on de programas que son la base de una buena parte de las t�ecnicas

de EP, siendo las m�as populares las transformaciones de plegado y desplegado. Aun-

que muchas de las t�ecnicas de EP no se describen expl��citamente en t�erminos de las

reglas de [BD77], �estas pueden ser reformuladas, de hecho, en t�erminos de transforma-

ciones de plegado/desplegado. Mencionamos �nalmente los trabajos de A.P. Ershov

[Ers77, Ers78a, Ers78b], sobre el principio de computaci�on parcial, y los trabajos de

L. Beckman [Bec76] y A. Haraldsson [Har77, Har78], que hacen uso de la EP para

optimizar la compilaci�on de programas Lisp.

Si bien la EP ha sido aplicada intensivamente en el campo de la programaci�on fun-

cional durante m�as de tres d�ecadas (ver, por ejemplo, [CD93, JGS93, SS88] para una

lista exhaustiva de referencias), �esta tambi�en ha atra��do un inter�es considerable en la

comunidad de programaci�on l�ogica, donde usualmente recibe el nombre de

. El primer trabajo en el que se formula una t�ecnica para la EP de programas

l�ogicos se debe a Komorowski [Kom82]. Informalmente, un evaluador parcial para

un lenguaje l�ogico es una funci�on que, dado un programa y un objetivo , deriva

un programa residual m�as e�ciente = ( ) que computa las mismas respuestas

para (y cualquiera de sus instancias) que .

No es hasta 1987, sin embargo, cuando Lloyd y Shepherdson establecen de ma-

nera formal y rigurosa los fundamentos de la deducci�on parcial de programas l�ogicos

[LS87, LS91]. Pese a que no se de�ne un procedimiento concreto para efectuar la de-

ducci�on parcial del programa, Lloyd y Shepherdson muestran los requerimientos b�asi-

cos para la correcci�on y completitud del programa transformado; estos requerimientos

son las condiciones de independecia y cierre ( ), las cuales garantizan, res-

6.1.2 Motivaci�on

6.1. INTRODUCCI

ON

pattern-matching

instanciaci�on

109

pectivamente, que el programa transformado no produce respuestas adicionales, y que

todas las llamadas que pueden ocurrir durante la ejecuci�on est�an cubiertas por alguna

cl�ausula del programa.

Dado el inter�es que las t�ecnicas de especializaci�on han suscitado en ambas comuni-

dades, parece razonable pensar que podr��an aportar tambi�en resultados interesantes

en el campo de los programas l�ogico{funcionales. En el siguiente apartado, se desa-

rrollan m�as extensamente las ideas que han motivado el presente trabajo.

Como ya se ha apuntado, las transformaciones de plegado y desplegado, introducidas

originalmente por Burstall y Darlington en [BD77] para programas funcionales, son

explotadas en mayor o menor medida por las distintas t�ecnicas de EP. La t�ecnica de

desplegado consiste, esencialmente, en la sustituci�on de una llamada a funci�on por su

respectiva de�nici�on, aplicando la correspondiente sustituci�on. La t�ecnica de plegado

es la transformaci�on inversa, es decir, el reemplazamiento de cierto fragmento de c�odi-

go por una llamada a funci�on equivalente. En el caso de los programas funcionales, las

t�ecnicas de plegado/desplegado s�olo involucran emparejamiento ( ).

Esta aproximaci�on a la transformaci�on de programas basada en las operaciones de

plegado/desplegado, fue adaptada por primera vez al caso de los programas l�ogicos

por Tamaki y Sato [TS84], reemplazando el emparejamiento por la uni�caci�on en las

reglas de transformaci�on. El desplegado de un programa l�ogico consiste, por tanto, en

aplicar un paso de resoluci�on a un subobjetivo en el cuerpo de una cl�ausula de todas

las formas posibles. Gracias al mecanismo de uni�caci�on, la EP de programas l�ogicos

permite propagar informaci�on sint�actica sobre los datos (parciales) de entrada, tales

como la estructura de los t�erminos, y no s�olo valores constantes (como en el caso del

desplegado de programas funcionales). De esta forma, se obtiene un mecanismo m�as

potente que en el caso de los programas funcionales.

Dado que las operaciones de plegado/desplegado sobre programas funcionales s�olo

involucran emparejamiento, y puesto que las llamadas a funci�on en el cuerpo de las

reglas del programa pueden contener variables, las transformaciones de Burstall y

Darlington hacen uso de una operaci�on previa de [BD77]. De esta for-

ma, si una llamada a funci�on no empareja con ninguna de las funciones de�nidas en

el programa, sus variables pueden instanciarse de forma que empareje con alguna de

ellas (ver, por ejemplo, la Secci�on 17.3 de [JGS93] y, en particular, el ejemplo de EP

de la funci�on de Ackermann). Sin embargo, hemos encontrado en la literatura pocas

t�ecnicas de transformaci�on autom�aticas basadas en las transformaciones de instan-

ciaci�on + desplegado. Un ejemplo del uso de uni�caci�on en la t�ecnica de desplegado

se puede encontrar en [DR93], donde se utiliza para formular una aproximaci�on a la

s��ntesis de programas funcionales.

6.1.3 Trabajos Relacionados

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

narrowing

narrowing

narrowing

ad-hoc

narrowing

narrowing

supervised compilation

driving

driving driving

narrowing

110

El mecanismo de ejecuci�on de los programas l�ogico-funcionales ( ) utiliza

la uni�caci�on para el paso de par�ametros en las llamadas a funci�on. De esta forma,

se consigue de forma autom�atica el efecto de la regla de instanciaci�on. La especiali-

zaci�on de programas basada en el mecanismo operacional de aporta una

visi�on uni�cada de los mecanismos de ejecuci�on y transformaci�on, que nos permite

desarrollar un marco simple y efectivo para la EP de programas l�ogico{funcionales.

Siendo un mecanismo operacional bien estudiado, podemos hacer un uso

inmediato de sus bien conocidas propiedades, sin tener que partir de cero para carac-

terizar el comportamiento de los m�etodos desarrollados (como sucede con los m�etodos

convencionales de EP de los lenguajes funcionales, generalmente de�nidos pa-

ra realizar la transformaci�on). M�as a�un, nuestro trabajo demuestra que son posibles

varias optimizaciones del esquema que son �unicas al mecanismo de computaci�on de

los programas l�ogico{funcionales (como, por ejemplo, la inclusi�on de un proceso de

simpli�caci�on determinista durante el proceso de EP). Debido a la posibilidad de ex-

plotar su componente funcional, la EP de un programa l�ogico-funcional puede resultar

m�as efectiva que la EP de un programa l�ogico equivalente.

No existen en la literatura muchos trabajos relacionados con la especializaci�on de

programas l�ogico{funcionales. Hemos encontrado, sin embargo, dos excepciones no-

tables. En [LS75], Levi y Sirovich de�nen un procedimiento de EP para el lenguaje

funcional TEL, usando un mecanismo de ejecuci�on simb�olica basado en uni�caci�on

que puede llegar a entenderse como una forma de perezoso. En [DP88a],

Darlington y Pull muestran c�omo la uni�caci�on permite integrar los pasos de des-

plegado e instanciaci�on (introducidos en el marco de transformaci�on de programas

de�nido en [BD77]), obteniendo as�� la habilidad del para tratar con va-

riables l�ogicas. Tambi�en se esboza un evaluador parcial para el lenguaje funcional

HOPE (extendido con uni�caci�on). Sin embargo, en ninguno de estos trabajos se han

abordado cuestiones de control, terminaci�on o equivalencia sem�antica.

Los trabajos sobre supercompilaci�on [Tur86] son, de entre la extensa literatura

sobre transformaci�on de programas, los m�as cercanos a nuestro trabajo. La super-

compilaci�on ( ) es una t�ecnica de transformaci�on para programas

funcionales que consta de tres elementos b�asicos: , generalizaci�on y generaci�on

de programas residuales. La supercompilaci�on no especializa el programa original,

sino que construye un programa nuevo para la (especializaci�on de la) llamada a fun-

ci�on inicial, usando el mecanismo de [GS94]. El procedimiento de

puede considerarse un mecanismo de transformaci�on de funciones basado en uni�-

caci�on. Concretamente, hace uso de un tipo de maquinaria de evaluaci�on similar a

(perezoso) para construir \�arboles de estados" (posiblemente in�nitos) pa-

6.1. INTRODUCCI

ON

narrowing

narrowing

driving

Recursive Func-

tion Algorithmic Language

driving

driving

driving

generalizaci�on

positiva

111

ra un programa de entrada y una llamada dada. En los trabajos de Turchin sobre

supercompilaci�on se usa la siguiente terminolog��a [Rom91]: \emparejamiento gene-

ralizado" para la uni�caci�on, \contracciones" para las sustituciones de y,

muy a menudo en los textos, \driving" para el propio mecanismo de , es

decir, la operaci�on de instanciaci�on de una llamada a funci�on para todos los casos

posibles, seguida por el desplegado de las distintas ramas. Gracias al procedimiento

de , el supercompilador puede conseguir la misma cantidad de propagaci�on de

informaci�on (basada en uni�caci�on) y especializaci�on del programa que en la EP de

programas l�ogicos [GS94].

Los trabajos de Turchin describen el supercompilador para Refal (

[Tur89]), un lenguaje funcional basado en emparejamiento

con una noci�on de patrones poco usual. La sem�antica de Refal se da en t�erminos

de un int�erprete de reescritura (con una estrategia de evaluaci�on impaciente), mien-

tras que el supercompilador (en el que se encuentra incorporado el procedimiento de

) posee una estrategia de evaluaci�on perezosa. La supercompilaci�on subsume,

entre otros, el procedimiento de deforestaci�on [Wad88], la evaluaci�on parcial y otras

transformaciones est�andar de programas funcionales [SGJ94]. Por ejemplo, la super-

compilaci�on es capaz de soportar ciertos tipos de demostraci�on de teoremas, s��ntesis

de programas e inversi�on de programas (ver [S�r94] para una exposici�on detallada).

La supercompilaci�on puede mejorar un programa incluso si todos los argumentos de

las llamadas a funci�on son variables, eliminando las redundancias debidas a los ani-

damientos funcionales o a las variables repetidas. En [Jon94], Jones formaliza la

metodolog��a de Turchin basada en sobre unos s�olidos fundamentos sem�anti-

cos, que no est�an ligados a ning�un lenguaje de programaci�on o estructura de datos

particular.

El proceso de puede ser in�nito y, en general, no preserva la sem�antica del

programa, ya que puede extender el dominio de las funciones (ver e.g. [GS94, JGS93,

SGJ94]). En [SG95, Tur88] se estudian distintas t�ecnicas para asegurar la termina-

ci�on del proceso de supercompilaci�on. La idea de [Tur88] consiste en supervisar la

construcci�on del �arbol y, bajo determinadas condiciones, realizar una \vuelta atr�as",

i.e. plegar las con�guraciones a uno de los estados previos, obteniendo de esta forma

un grafo �nito. A menudo, es necesario disponer de una operaci�on de

para que el plegado a una con�guraci�on anterior sea posible. En [SG95] se estudia la

terminaci�on de la supercompilaci�on , una versi�on simpli�cada del algoritmo

de Turchin en la que no se considera la propagaci�on de informaci�on negativa en el

proceso de especializaci�on. En dicho trabajo, la terminaci�on se garantiza siguiendo un

m�etodo comparable a la aproximaci�on general de Martens y Gallagher para asegurar

la terminaci�on global del proceso de deducci�on parcial [MG95].

En [GS94], Gl�uck y S�rensen estudian la correspondencia entre la EP de programas

i i

i i

[ f g

f g

P G

P G

G �

G� G

G

6.2 EP de Programas L�ogico{Funcionales

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

driving

driving

driving narrowing

driving

driving

driving

112

l�ogicos (deducci�on parcial) y , estableciendo las relaciones entre la aplicaci�on

de sobre un programa funcional y la construcci�on de un �arbol SLD para un

programa Prolog similar. Los autores no re ejan la relaci�on intr��nseca existente entre

los mecanismos de y . Pensamos que explotar esta corresponden-

cia lleva a un mejor entendimiento de c�omo el procedimiento de consigue

sus efectos, as�� como facilita la respuesta a muchas preguntas sobre la correcci�on y

terminaci�on de la transformaci�on. Nuestro trabajo se puede ver como una nueva for-

mulaci�on del mecanismo esencial de en t�erminos m�as simples y familiares a

la comunidad de programaci�on l�ogica. Adem�as, se libera al lenguaje de las fuertes

restricciones sint�acticas impuestas en [GS94, SGJ94], para no complicar en exceso la

formulaci�on del algoritmo de .

Otra aproximaci�on relevante a las t�ecnicas de transformaci�on de programas se ha

presentado recientemente en [San95b, San95a]. En general, las transformaciones de

plegado/desplegado, de�nidas en [BD77], no garantizan ni la mejora en e�ciencia ni

la correcci�on total de la transformaci�on. En [San95b], se introduce una condici�on

(sem�antica) para la correcci�on total de las transformaciones sobre programas funcio-

nales de orden superior. El principal resultado t�ecnico consiste en que, si los pasos

locales de transformaci�on se realizan siguiendo un cierto criterio, entonces se puede

asegurar la correcci�on total de la transformaci�on. En [San95a], se muestra c�omo el

resultado anterior permite demostrar la correcci�on total de algunas de las principa-

les t�ecnicas autom�aticas de transformaci�on de programas, incluyendo la deforestaci�on

[Wad88] y la supercompilaci�on [Tur86].

En esta secci�on, introducimos los conceptos fundamentales necesarios para la EP

de programas l�ogico{funcionales, y demostramos la correcci�on y completitud de la

transformaci�on. Nuestra formalizaci�on se de�ne siguiendo una aproximaci�on similar

al marco te�orico presentado en [LS91] para la deducci�on parcial de programas l�ogicos.

En programaci�on l�ogica, la idea de la EP de programas consiste, b�asicamente, en

realizar los siguientes pasos [LS91]. Dado un programa y un objetivo at�omico :

1. Construir un �arbol SLD (�nito) para , conteniendo al menos un nodo

distinto de la ra��z.

2. Recoger los subobjetivos y las correspondientes sustituciones de cada hoja

no fallada, formando el conjunto de cl�ausulas , llamadas resultantes.

Intuitivamente, los resultantes son respuestas condicionales al objetivo inicial. El

motivo por el cual se exige que sea at�omico es que, en caso contrario, los resultantes

obtenidos no ser��an cl�ausulas de�nidas (al contener m�as de un �atomo en la cabeza).

0; ; ;

(0) 0f g f g

0

0

Ejemplo 18

i i

i i

y=s y =�

R

R

R

f ! g

R

!

!

R

f !

g R

!

R R

6.2. EP DE PROGRAMAS L

OGICO{FUNCIONALES

G

t t

t

t �

t� t

x x

x s y s x y

x s s

x s s s x s s s x s s x

x s s

s s x

x s s s s x :

x s s

113

Bajo ciertas condiciones, el conjunto de resultantes obtenido se puede considerar como

una versi�on especializada del programa inicial para resolver el objetivo (y cualquiera

de sus instancias).

Cuando consideramos sistemas de reescritura condicionales como programas y una

sem�antica operacional basada en condicional, no resulta inmediato decidir

cu�al puede ser la noci�on de m�as apropiada. Sin embargo, para el caso de

programas no condicionales (y una relaci�on de de�nida sobre t�erminos), la

siguiente aproximaci�on viene en mente de forma inmediata. Dado un SRT y un

t�ermino , la EP de con respecto a consiste en:

1. Construir un �arbol de (�nito) para el t�ermino con respecto al pro-

grama .

2. Recoger los t�erminos y las correspondientes sustituciones de cada hoja,

formando el conjunto de reglas de reescritura .

El siguiente ejemplo ilustra esta primera aproximaci�on al problema.

+ 0

+ ( ) ( + )

+ ( (0))

+ ( (0)) ( + (0)) ( ( + 0)) ( ( ))

+ ( (0))

( ( ))

+ ( (0)) ( ( ))

+ ( (0))

narrowing

resultante

narrowing

narrowing

Sea el siguiente programa no condicional que de�ne la suma de los

n�umeros naturales:

La especializaci�on del programa con respecto al t�ermino se genera si-

guiendo los siguientes pasos. Primero, se desarrolla un �arbol de narrowing (�nito)

para dicho t�ermino, cuya construcci�on se detiene utilizando alg�un criterio. En este

ejemplo, s�olo es posible la derivaci�on:

con sustituci�on asociada (restringida a las variables del t�ermino de entrada) . A

continuaci�on, construimos el resultante asociado a dicha derivaci�on:

. Entonces, el programa especializado consta �unicamente de la siguiente

regla:

Resulta inmediato comprobar que, en este ejemplo, las formas normales computadas

por narrowing para el t�ermino con respecto a los programas y co-

inciden (aunque no sucede as�� para todas sus instancias, sino s�olo para aqu�ellas que

est�an \cubiertas", de alguna forma, por el patr�on de la llamada, como formalizaremos

posteriormente).

g

1

1

;

;

;

;

;

Ejemplo 19 R

!

!

! (

(

(

(

(

(

R

h i h i

h i h f gi

h i h f gi

h i h i

h i h i

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

( (0 + ) = ( + 0)) ( + = 0 + = ( + 0))

( (0 + ) = ( + 0)) (0) = (0 + 0) 0

( (0 + ) = ( + 0)) ( (0 + )) = ( ( ) + 0) ( )

( (0 + ) = ( + 0)) ( + = + 0 (0 + ) = )

( (0 + ) = ( + 0)) (0 + ) = ( )

Para una mayor simplicidad, las sustituciones en las derivaciones aparecen restringidas a las

variables del objetivo inicial .

parity z parity z ; � y y z; even parity z ; �

parity z parity z ; � parity parity ; z=

parity z parity z ; � parity s y parity s y ; z=s y

parity z parity z ; � y y z ; parity z even ; �

parity z parity z ; � parity z parity z ; �

x x

x s y s x y

parity x even y y x

g parity z parity z

parity z parity z y y z; even parity z

parity parity parity parity

parity s y parity s y parity s y parity s y

parity z parity z y y z ; parity z even

parity z parity z parity z parity z

parity

g

g

114

La primera cuesti�on a resolver se plantea cuando nos proponemos extender la

anterior noci�on de resultante al caso general de programas condicionales, con una

relaci�on de de�nida sobre objetivos ecuacionales. En primer lugar, nos

restringimos a considerar s�olo objetivos at�omicos, por las mismas razones que en el

caso de la deducci�on parcial de los programas l�ogicos. El siguiente ejemplo pone de

mani�esto los problemas que deberemos afrontar al elegir esta aproximaci�on.

+ 0

+ ( ) ( + )

( ) + =

( (0 + ) = ( + 0))

(0 + ) = ( + 0) + = 0 + = ( + 0)

(0 + 0) = (0 + 0) (0) = (0 + 0)

(0 + ( )) = ( ( ) + 0) ( (0 + )) = ( ( ) + 0)

(0 + ) = ( + 0) + = + 0 (0 + ) =

(0 + ) = ( + 0) (0 + ) = ( )

El resultado del ejemplo anterior no es muy satisfactorio, aunque s�� es un resultado

coherente. Si se realiza la especializaci�on de una ecuaci�on (cuyo operador principal

narrowing

Sea el siguiente conjunto de reglas:

y un objetivo ecuacional at�omico. Consideremos

el �arbol de b�usqueda parcial formado por las siguientes derivaciones \un paso":

Los resultantes asociados, aplicando la de�nici�on de EP de la programaci�on l�ogica,

son:

Entonces observamos que: 1) estas reglas no constituyen una de�nici�on especializada

de la funci�on ` ' de , sino que deben mas bien entenderse como alguna forma

de especializaci�on de la relaci�on de igualdad; 2) no es inmediato establecer un criterio

que permita orientar las cabezas de las cl�ausulas resultantes como reglas de reescritura;

y 3) si se intenta ejecutar el objetivo usando el anterior conjunto de resultantes,

no se obtienen todas las soluciones que pueden obtenerse para en el conjunto de

cl�ausulas original (por ejemplo, ni siquiera es posible obtener la respuesta , a�un si

se incluyen tambi�en las reglas para la suma).

;

;

;

;

;

n

n

n

n

n

1

1

1

1

1

+

6.2. EP DE PROGRAMAS L

OGICO{FUNCIONALES

De�nici�on 6.2.1 (resultante)

Ejemplo 20

R

62

R

h i h i

! (

h i h i

! (

R D �

h i h i

62 R

! (

! ( R

h i h f gi

h f gi

! (

s

s y y y V ar s

s

s y; � e ; : : : ; e ; t y ; �

t y s y

e ; : : : ; e

s� t e ; : : : ; e :

s y

s y; � e ; : : : ; e ; t y ; �

s� t e ; : : : ; e

s

s y; � g; e ; �

s y y V ar s � mgu e

s y � g �

mgu �

f x x a x; b x

f f z y; � a f z ; b f z ; f z y ; x=f z

a f z ; b f z ; true ; x=f z ; y=f z

f f z f z a f z ; b f z

narrowing

narrowing

narrowing

narrowing

Sea un programa y un t�ermino. Sea

una derivaci�on de narrowing condicional para el objeti-

vo ecuacional , , con respecto al programa . Sea ,

entonces el resultante de la derivaci�on es: .

Dada la regla en , el resultante de la

derivaci�on:

es la regla: .

115

es la igualdad), los resultantes obtenidos de�nen (una especializaci�on de) la relaci�on

de igualdad. Nosotros estamos interesados en especializar funciones y la soluci�on

que adoptamos se puede resumir como sigue. Para especializar un programa con

respecto a un t�ermino , obtenemos un �arbol (�nito) de para el objetivo

\arti�cial" = , donde es una variable nueva (i.e. ( )). La raz�on para usar

este tipo de objetivos es computar los distintos t�erminos a los que se puede reducir

por el t�ermino usando el programa . As��, consideramos derivaciones de

la forma:

= ( = )

donde ( = ) es la forma reducida (por ) de la ecuaci�on inicial ( = ), y

( ) son las ecuaciones introducidas por las condiciones de las reglas aplicadas

durante la computaci�on. Entonces, de�nimos el resultante asociado a dicha derivaci�on

mediante la regla:

Es inmediato observar que, dado el objetivo inicial ( = ), el paso de :

= ( = )

usando el resultante ( ) produce, exactamente, el mismo efecto

(la misma respuesta computada y el mismo objetivo derivado) que la aplicaci�on de

las reglas usadas en la derivaci�on que gener�o el resultante. Esta es, precisamente,

la idea que se persigue con la noci�on de resultante, que formalizamos en la siguiente

de�nici�on.

( = ( ) )

( = ) ( ) = ( )

(( ) )

La de�nici�on anterior de resultante parece algo m�as compleja que su contrapar-

tida para programas l�ogicos. Veamos, mediante algunos ejemplos, la necesidad de

computar el .

( ( ) = = )

( ( )) = ( = ( ) = ( ) ( ) = ) ( )

( = ( ) = ( ) ) ( ) ( )

( ( ( )) ( ) = ( ) = ( ))

2

2

+

+

;

;

;

;

;

i i

i

i i i

De�nici�on 6.2.2 (evaluaci�on parcial)

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

h i h f gi

! (

f g f g

! (

h i h f gi

h f gi

! (

R

h i h f gi !

R 62

h i

R

fh i j g

f j � g

fh i h i j g f j � g

R

De forma similar a [LS91], consideramos que las derivaciones pueden ser potencialmente incom-

pletas. Una rama del �arbol puede ser entonces de fallo, incompleta, de �exito o in�nita.

f z y; � a x; b x; x y ; z=x

f y y a y; b y

� x=y � y=x x y

f x y a x; b x; x y y

f z y; � a x; b x; x y ; z=x

true; b a; a y ; z=a; x=a

f a a true; b a

s

s y

s y; � true; y=s s s

s y V ar s �

s y; �

� g ; � i ; : : : ; k

r i ; : : : ; k

s y; � g ; � i ; : : : ; k r i ; : : : ; k

s �

El resultante asociado a la derivaci�on:

es la regla: . N�otese que, de no aplicarse el mgu

de la �ultima ecuaci�on , habr��amos obtenido la regla:

, que contiene una variable extra ` ' en la parte

derecha de la cabeza de la regla.

Por �ultimo, el resultante asociado a la derivaci�on:

es la regla: .

trivial

Sea un programa, un t�ermino e una variable nueva. Sea un

�arbol �nito de narrowing (posiblemente incompleto) para el objetivo en el

programa extendido , conteniendo al menos un nodo distinto de la ra��z. Dado

el conjunto de hojas no falladas en las derivaciones de : ,

formamos el conjunto de resultantes no triviales asociados a las

derivaciones . Al conjunto

lo llamamos una .

116

( ) = ( = = = )

( ( ) = = )

= ( = ) =

( ( ) = = = )

( ) = ( = = = )

( = = )

( ( ) = )

Una vez que se dispone de una de�nici�on de resultante adecuada, la formalizaci�on

del concepto de EP resulta muy simple. La EP de un t�ermino en un programa se

obtiene construyendo un �arbol de b�usqueda (posiblemente incompleto ) para el obje-

tivo ( = ), y extrayendo posteriormente la de�nici�on especializada {los resultantes{

asociados a las hojas del �arbol. Decimos que un resultante es si se ha obteni-

do aplicando la regla de uni�caci�on sint�actica directamente sobre el objetivo inicial.

N�otese que siempre aparecer�a un resultante trivial en el proceso de especializaci�on

ya que, dada la forma del objetivo inicial, la siguiente derivaci�on siempre es posible:

= , y da lugar al resultante trivial , que no debe ser

considerado al construir la EP de un objetivo ecuacional, tal y como aparece en la

siguiente de�nici�on.

( )

=

= 1

= 1 1

= = 1 = 1 1

evaluaci�on parcial de en (usando )

Esta de�nici�on se puede extender de manera inmediata a conjuntos de t�erminos y

a objetivos ecuacionales arbitrarios.

;

3

3

1 1

1 1

1 1 1 1

+

� �

0

R

0

j

0

0 �

0 �

R

0

n n

n n

i i

i i

n n n n

uu

u

u

R

R R

R

R

f g R

R

2 ! ( R

R R R

R

R R

R h i

h i R

6.2. EP DE PROGRAMAS L

OGICO{FUNCIONALES

De�nici�on 6.2.3

De�nici�on 6.2.4 (reducci�on sin evaluaci�on de las condiciones )

Lema 6.2.5

S

S S

S

s t ; : : : ; s t

s ; : : : ; s ; t ; : : : ; t

s y

s t

s t

s t

s t y

s ; : : : s ; s t ; : : : t ; t y

g; g

g g

u O g � � C << �

g �� g C�; g ��

g; g g; �

g ; � g� g

En el resto del trabajo, aquellos t�erminos que sean variantes se considerar�an id�enticos (y, de

dichas variantes, se tomar�a una arbitraria). De la misma forma, la comparaci�on entre (conjuntos de)

t�erminos se realizar�a m�odulo renombramiento de variables.

Sea un programa y un conjunto �nito de t�erminos (m�odulo

variantes ). Una evaluaci�on parcial de en (o EP de con respecto a ) se

de�ne como la uni�on de las evaluaciones parciales de los elementos de en .

La evaluaci�on parcial de un objetivo ecuacional en con-

siste en la EP del conjunto de t�erminos en .

Sean secuencias de ecuaciones y un programa. La relaci�on de

se de�ne como: si existe una

ocurrencia , una regla y una sustituci�on tales que

y .

narrowing

Sean secuencias de ecuaciones y sea un programa. Si

en , entonces .

117

( = = )

Como ya hemos comentado, la restricci�on a objetivos de la forma ( = ) se

debe a que se quiere realizar la especializaci�on del programa respecto a t�erminos,

y no respecto a ecuaciones. Puede parecer, entonces, que se est�a perdiendo cierto

potencial para la especializaci�on, debido a que los t�erminos y de cada ecuaci�on

= se eval�uan parcialmente de forma independiente. Sin embargo, no existe

tal p�erdida de generalidad en restringir nuestro discurso a la EP de t�erminos, ya que

nuestra construcci�on tambi�en puede considerar una ecuaci�on = como un \t�ermino"

y podemos as�� \forzar el m�etodo" para especializar el programa respecto al objetivo

( = ) = . M�as a�un, si existe un s��mbolo de funci�on (binario) libre en la signatura,

podemos realizar la especializaci�on respecto a un conjunto de ecuaciones evaluando

objetivos de la forma ( ( ( )) = ( ( ))) = . Por

supuesto, en estos casos, lo que nuestro m�etodo especializa es la relaci�on de igualdad

y el operador de conjunci�on de ecuaciones, respectivamente.

Una propiedad importante relacionada con nuestra noci�on de evaluaci�on parcial

es que la EP de un t�ermino en un programa noetheriano es un programa noetheriano.

Para demostrar este resultado, introducimos algunos conceptos y lemas previos.

[BW95]

reescritura

condicional sin evaluaci�on de las condiciones

( ) ( )

= ( [ ] )

Dado un programa , denotamos por la \parte incondicional" de , es decir,

el conjunto de reglas obtenidas a partir de por la eliminaci�on de las condiciones

(i.e. las reglas de son las cabezas de las reglas de ). El siguiente lema establece

una correspondencia precisa entre las derivaciones de condicional y las de

la reducci�on sin evaluaci�on de las condiciones.

u

; ;

;

; ; ;

;

� �

0 0 �

0

R

0

R

0

0

Proposici�on 6.2.6

Demostraci

on

Demostraci

on

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

+

1 1 1 2

1 2

+

1

1

1

1

1 1

1 2 1 2 1 2 1 2

1 2

1 1 1

1 1 2 2 1 2

1 2 1 1

2 1 2 1 2

R

h i h i h i h i

h i h i

h i h i h i h i � h i

! (

h i h i

!

R � [

� �

� ! ( 2 R

2 [

� R

� �

� �

f g � � �

62 � � ) � �

� �

� �

narrowing

La evaluaci�on parcial de un t�ermino en un programa noethe-

riano es un programa noetheriano.

s

s y; � g; true ; � ; s y; � g; t y ; � :

s y; � g; true ; �

s y; � g ; t y ; g ; true ; � g; true ; � g; true ; �

s y � g

s y; � g ; t y ;

s y g ; t y

s t:

� V

l r l� r�

� l r � � � � C

t s

t s t; s � V

s t

V ar t V ar s V ar g V ar s

s � y � V ar y � V ar s �

V ar g V ar s �

� y=t y � y� t s � s

y V ar s s t s t s �

y � V ar t V ar s V ar g V ar s

V ar t V ar s � V ar g V ar s �

118

. La prueba resulta inmediata a partir de la correcci�on del c�alculo

de condicional y el hecho de que las reglas de los programas considerados

no contienen variables extra.

Finalmente, la siguiente proposici�on establece el resultado deseado.

. Las derivaciones consideradas en la De�nici�on 6.2.1 (resultante)

tienen la forma:

= ( ) o bien = ( = )

Tratamos los dos casos de manera independiente.

a) Podemos dividir la derivaci�on = ( ) en la forma:

= ( = ) ( ) ( ) ( )

cuyo resultante asociado es: (( ) ). Ya que existe la subderivaci�on

( = ( = ) ) entonces, por el Lema 6.2.5, existe la siguiente

secuencia de reescritura condicional sin evaluaci�on de las condiciones:

( = ) =

lo que implica que existe la secuencia de reescritura no condicional:

Ya que es noetheriano, existe un orden mon�otono bien fundado sobre (� )

que es estable bajo sustituci�on (i.e. tal que, si entonces , para toda

sustituci�on de las variables de y ) donde , para toda regla ( )

[DJ90]. Junto con la monotonicidad del orden, esta condici�on asegura que

siempre que se reescribe a , para cualquier par de t�erminos (� ). Por

tanto, tenemos que . Puesto que las reglas de no contienen variables extra,

entonces ( ) ( ) y ( ) ( ).

Tenemos que demostrar que , ( ) ( ) y

( ) ( ). Consideramos, entonces, dos casos:

i) Si es de la forma , entonces y , ya que

( ). Por la estabilidad de , , esto es,

. Ahora, los hechos ( ) ( ) y ( ) ( ) implican

que ( ) ( ) y ( ) ( ), respectivamente.

0

;

; ;

closedness

narrowing

1

1 1 1 1 2 2

1 2 1 2 1

1 1 2 1 2

1 1 2

+

6.3 Correcci�on y Completitud de la EP

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

� 2 f g � 62

� � ) � ) � ) �

� � ) 2

) � 2 ) �

� ) �

h i h i

! ( f g

h i h i h i

t x x V � x=y y � y y V ar s

s t s x s � y s � y

s � y � V ar t V ar s x

V ar s x� y V ar s � V ar y V ar s �

V ar g V ar s V ar g V ar s �

s y; � g; t y ; �

s y � g � � mgu t y

s y; � g; t y ; � g; true ; �� :

S P P

S P S

119

ii) Si , y es de la forma , entonces , ya que ( ).

Por la estabilidad de , ,

esto es, . Ahora, tenemos que ( ) ( )

( ) ( ) ( ) ( ). An�alogamente,

( ) ( ) ( ) ( ).

b) Consideremos la siguiente derivaci�on:

= ( = )

que produce el resultante: (( ) ) , donde = ( = ). La

demostraci�on es perfectamente an�aloga al caso a), considerando que el resultante

computado podr��a ser producido tambi�en por una derivaci�on de la forma:

= ( = ) ( )

Sin embargo, es bien conocido que la EP de programas no preserva, en general,

la sem�antica del programa original. En el caso de la deducci�on parcial de programas

l�ogicos, se introducen unas condiciones de \cierre" ( ) e \independencia"

[LS91] que garantizan la equivalencia sem�antica entre el programa original y el pro-

grama especializado. En la siguiente secci�on, formulamos una extensi�on adecuada de

estas nociones que nos permite demostrar la correcci�on y completitud de la EP de pro-

gramas l�ogico-funcionales, con respecto a la sem�antica de las respuestas normalizadas

computadas por condicional.

Consideramos, en primer lugar, la completitud de la transformaci�on. Para garanti-

zar que todas las respuestas del programa original se pueden computar usando las

reglas del programa especializado, es necesario imponer alg�un tipo de condici�on de

cierre sobre el mismo. Informalmente, la condici�on de cierre debe garantizar que

todas las llamadas a funci�on que pueden ocurrir durante la ejecuci�on del programa

especializado, est�an cubiertas por alguna regla del mismo.

En [LS91], se de�ne la condici�on de cierre de la siguiente forma: dado un conjunto

de �atomos y un programa especializado , se dice que est�a cerrado o cubierto

por sii todos los �atomos que aparecen en son instancia de alg�un �atomo de .

El siguiente ejemplo ilustra c�omo el uso de una noci�on de cierre similar (basada en

la relaci�on \ser instancia de") no es su�ciente para garantizar la completitud de la

transformaci�on en el caso de los programas l�ogico-funcionales.

n n

n n

n

1 1

1 1

1

=1

1

1 1

0

0

0

0

0

n

i

i n

n n

si �

si

si

si

8

>

>

>

<

>

>

>

:

[

8

>

>

<

>

>

:

b

( )

( ) ( )

( ) ( )

( = ) ( ( )) ( )

,

� _ � 2

^ ^ � f g

f g � 2 C

9 2 ^ � 2 F

R

!

!

!

R f g

R

!

!

R

R

R

R

R R

� f g

f g [ f g � ! (

f g �

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

Ejemplo 21

De�nici�on 6.3.1

De�nici�on 6.3.2 (cierre)

closed S;O

true O O x V

closed S; t : : : closed S; t O t ; : : : ; t

closed S; t ; : : : ; t O c t ; : : : ; t ; c

s S: s� O closed S; terms � O f t ; : : : ; t ; f

h x x

f

f c x h f x

S f c x ; h x

h x x

f c x h f x

S

S f x h f x

f c

S �

terms

O

terms O

terms O

terms o O o ; : : : ; o

� terms e ; : : : ; e O � � e ; : : : ; e

l; r O l r

T S

T S closed S; T

S T

T S closed S; T closed

120

( )

(0) 0

( ( )) ( ( ))

= ( ( )) ( )

( )

( ( )) ( ( ))

( ) ( ( ))

0

( (0)) = 0

Para extender el concepto de , introducimos la funci�on , que permite

extraer de forma selectiva los t�erminos a considerar de una expresi�on dada.

( )

( ) =

( )

( ) ( )

( = )

A continuaci�on, de�nimos la condici�on de cierre para un conjunto de t�erminos y la

extendemos al caso de programas. En adelante, diremos que un conjunto de t�erminos

cumple la condici�on de cierre respecto a un conjunto de t�erminos , o simplemente

que es -cerrado, si el predicado ( ) es cierto. Formalmente,

( )

Consideremos el siguiente programa :

Una posible EP de con respecto al conjunto de t�erminos es el

programa especializado :

En este caso, pese a que todos los t�erminos que aparecen en son instancia de al-

guno de los t�erminos en , el programa no puede ser considerado cerrado respecto

a , ya que la llamada a funci�on que aparece en el t�ermino no est�a su-

�cientemente cubierta por las reglas de {ya que no puede ser reducida al t�ermino

, tal y como era posible haciendo uso de la segunda regla del programa original {.

Como consecuencia de ello, el objetivo (que est�a supuestamente cubierto

por ), tiene �exito en con respuesta computada mientras que falla en .

cierre

Sea una expresi�on consistente en una regla (o conjunto de reglas)

de reescritura, o en una ecuaci�on (o conjunto de ecuaciones). De�nimos la funci�on

como sigue:

si

si

si

Sean y dos conjuntos �nitos de t�erminos. Decimos

que es -cerrado si , donde el predicado se de�ne inductivamente

como sigue:

1

i

i

n

u

u

1

1

1

2f g

j

j

j

i ;:::;n

i n

V

u

n

( )

( ) ( )

� ( ) ( ) ( )

=

0

si o

si

si

y

en otro caso

b

b

8

>

>

>

>

>

>

>

<

>

>

>

>

>

>

>

:

[

R R

2

f g

2 f g

2

T � T !

f j 2 62 2 g

f g

3

; 2 � 2 C

f j 2 g � 2 C

f g [ f j 2 ^ 2 g � 2 F

9 2

f g

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

De�nici�on 6.3.3 (conjunto de ocurrencias de cierre)

Ejemplo 22

c set S; t

t V t c

i:p p c set S; t t c t ; : : : ; t ; c

u:p u O s p c set S; s � t f t ; : : : ; t ; f

s S: s� t

t S closed S; t

S closed S; terms

t S

t t t

s S t s� �

S

t S u ; : : : ; u

i ; : : : ; n t

s S t s� terms � S

S

t S

CSet } }}IN

CSet S; t O O c set S; t ; u: O; u IN

c set

t S

u:

CSet

S t S

CSet

t S

S f x ; g x ; f g x t

f g t S

Decimos que un t�ermino es -cerrado si es cierto, y decimos que un

programa es -cerrado si es cierto.

conjunto de ocurrencias de cierre

Sea un conjunto de

t�erminos y un t�ermino -cerrado. De�nimos el conjunto de ocurrencias de cie-

rre como sigue:

donde la funci�on auxiliar se de�ne inductivamente como sigue:

Las ocurrencias que terminan en el marcador identi�can la situaci�on en la que

alg�un subt�ermino de no es instancia de ninguno de los t�erminos de . As��, los

conjuntos que contienen alguna ocurrencia de la forma no deben ser considerados

conjuntos de ocurrencias de cierre. La funci�on se puede extender a ecuaciones

y objetivos ecuacionales de la forma obvia.

Sea el conjunto de t�erminos y el t�ermino

. Podemos veri�car que es -cerrado de dos formas:

121

( )

( ( ))

Informalmente, un t�ermino es -cerrado si se cumple alguna de las siguientes

condiciones: 1) es una variable, 2) es un t�ermino constructor, �o 3) es una instancia

de un t�ermino , de forma que = , y adem�as se veri�ca que los t�erminos de

son -cerrados.

En el resto del trabajo resultar�a �util disponer, no s�olo de la informaci�on acerca de si

un t�ermino es -cerrado, sino de c�ual ha sido el conjunto de ocurrencias

que han permitido demostrar que lo es, veri�cando que, para todo 1 ,

es instancia de alg�un t�ermino , = , y ( ) es tambi�en -cerrado. Esto

nos lleva a introducir la siguiente noci�on de .

:

( ) = ( ) 0

`0'

0

N�otese que, dado un conjunto , la forma en que un t�ermino puede ser -

cerrado usando la De�nici�on 6.3.2 no es �unica. Consecuentemente, la funci�on es

indeterminista tambi�en y pueden existir, por tanto, distintos conjuntos de ocurrencias

de cierre que demuestran que un t�ermino es -cerrado. El siguiente ejemplo ilustra

esta posibilidad.

( ) ( ) ( ( ))

( (0))

;

;

;

� 0 0

jS

� ( )

1 1 1 1

V ar g

n n n n

Demostraci

on

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

De�nici�on 6.3.4 (complejidad)

Lema 6.3.5 (completitud fuerte)

2 f g

f g

f g

2 f g

f g 2

f g f g

f g

ff g f gg

jDj

D � h i h i D

!

R S

D � h i

h> i D � h i

h> i S

� f g

f g x S f g x x= t

closed S; terms x

f x S f x x=g t closed S;

terms x g g x S

g x x= g closed S; terms x

;

CSet S; t ; ;

g; � g ; �

x x true

g; �

; � � g; �

; �

g

t g x

t x O g

g g

O s t ; : : : ; s t O s t ; : : : ; s t ; ; : : : ; n

1. Tomando , tenemos que y, trivialmente, el predi-

cado es cierto. El conjunto de ocurrencias de cierre

asociado es, en este caso, .

2. Tomando , tenemos que y el predicado

es cierto, dado que ahora podemos tomar y tene-

mos que , y es cierto tambi�en. En

este caso, el conjunto de ocurrencias de cierre asociado es .

De esta forma, obtenemos: .

De�nimos la complejidad de una derivaci�on

de narrowing como el n�umero de pasos de narrowing en

que no usan la regla .

narrowing

Sea un programa con uente y una funci�on

de selecci�on. Para toda derivaci�on de narrowing condicional de �exito

tal que est�a normalizada, existe una derivaci�on

que respeta con la misma complejidad.

122

( ( )) ( ( )) 0 =

( ( = 0 ))

( ) ( ) (0) = (

( = (0) )) ( )

( ) 0 = (0) ( ( = 0 ))

� 1

( ) = � � 1

Pasamos, a continuaci�on, a establecer la correcci�on y completitud de nuestra pro-

puesta para la EP de programas l�ogico-funcionales. Enunciamos, en primer lugar,

una serie de de�niciones y lemas previos. La siguiente de�nici�on introduce una no-

ci�on de complejidad asociada con una derivaci�on, similar a la que puede encontrarse

en [OMI95].

( )

( = )

La completitud fuerte del condicional se puede formular como sigue.

B�asicamente, nuestro enunciado establece que la completitud y la completitud fuerte

coinciden, cuando nos restringimos a sustituciones normalizadas.

(

) (

)

. La prueba es est�andar, ver e.g. [OMI95].

Introducimos ahora algunas transformaciones de aplanamiento que facilitan nues-

tras pruebas de completitud. Las demostraciones de Lloyd y Shepherdson en [LS91]

no usan este tipo de transformaciones, sino que se basan en el uso de una forma

general de resoluci�on que emplea uni�cadores que no son los m�as generales. La t�ecni-

ca introducida en nuestras demostraciones podr��a tambi�en simpli�car las pruebas de

[LS91].

Informalmente, un aplanamiento del objetivo se consigue reemplazando una ocu-

rrencia de un t�ermino no variable de por una variable nueva , y a~nadiendo la

ecuaci�on ( = ) al objetivo resultante. Denotamos por

( ) el conjunto de ocurren-

cias no variables de que no referencian ni ecuaciones ni la expresi�on completa, i.e.

( = = ) =

( = = ) � 1 .

uu

;

;

;

;

0 0

j

0

0

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

!

f 2 j �

g

R

! (

!

!

! (

h i h f gi

h f gi

h f gi

h> f gi

R

De�nici�on 6.3.6 (aplanamiento simple)

Ejemplo 23

g

flat Goal }Goal

flat g g Goal g g x; g x ; x

u O g :

f x a x b; x c

d b

d c

b c f d a

g f d a

f d a; � d b; d c; a a ; x=d

b b; d c; a a ; x=d

b b; c c; a a ; x=d

; x=d

g d x; f x a

g

Dado un objetivo no vac��o , de�nimos

la funci�on como sigue:

donde es una variable nueva

y la ocurrencia pertenece a

narrowing

narrowing

Sea el siguiente programa con uente y noetheriano:

Dado el objetivo , existe la siguiente derivaci�on de �exito:

que computa la respuesta (normalizada) . Consideramos ahora el objetivo aplanado

. Resulta inmediato comprobar que es imposible construir una

derivaci�on de �exito para el objetivo en que aplique las reglas en el mismo orden

que las de la derivaci�on original, sin plegar de nuevo el t�ermino extra��do a la posici�on

anidada que ocupaba dentro del objetivo original.

sharing

123

:

( ) = ( = [ ] )

( )

La transformaci�on de aplanamiento se demuestra correcta y completa en conjun-

ci�on con el procedimiento de b�asico [NRS89] bajo las condiciones de comple-

titud para �este. En el caso de la relaci�on de condicional, la transformaci�on

es trivialmente completa. Basta pensar que es su�ciente \plegar" el subt�ermino apla-

nado a su posici�on original (haciendo uso de la regla de uni�caci�on sint�actica) y, a

continuaci�on, imitar en su mismo orden los pasos de la derivaci�on para el objetivo

original. La transformaci�on de aplanamiento resulta clave para nuestra prueba de

correcci�on de la EP (y no nos interesa invertirla), como tambi�en lo es el que las deri-

vaciones a partir del objetivo aplanado utilicen las reglas del programa en el mismo

orden que las de la derivaci�on original. Sin embargo, si excluimos las derivaciones

que invierten en alg�un momento dicha transformaci�on inicial, plegando de nuevo el

t�ermino a su posici�on original (derivaciones que no son de inter�es), las restantes deriva-

ciones que parten del objetivo aplanado podr��an no aplicar las reglas del programa en

el mismo orden que las del objetivo original, incluso aunque el programa considerado

sea con uente y sin variables extra. El siguiente ejemplo ilustra esta di�cultad.

( ) = =

( ) =

( ( ) = )

( ) = ( = = = )

( = = = )

( = = = )

( = ( ) = )

Intuitivamente, el problema que se presenta en el ejemplo anterior se debe a que

la transformaci�on de aplanamiento consigue un efecto similar a la t�ecnica de com-

partici�on de variables ( ) utilizada en la programaci�on funcional, ya que el

;

;

Lema 6.3.7

0

0

� 0

0 0 � 0 0 0

Demostraci

on

h i

h> i

D � h i h> i 2

D � h i h> i D

D

!

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

x

g g g

g

g; �

; ��

g

g; � ; �� g flat g

g ; � ; �� � � V ar g

x x true

sharing na-

rrowing

sharing

narrowing

sharing

sharing

narrowing

narrowing

Sea un objetivo ecuacional. Si existe una derivaci�on de narrowing

condicional de �exito entonces, para todo objetivo ,

existe una derivaci�on tal que y emplea

las mismas reglas y en el mismo orden que (sobre las posiciones correspondientes),

m�as una aplicaci�on extra de la regla .

124

subt�ermino desanidado no se \propaga" (cuando se aplican reglas del programa) a las

m�ultiples copias de �este que puedan ser introducidas en el objetivo derivado a trav�es

de la parte derecha de la cabeza y el cuerpo de la regla empleada, sino que en su lugar

se generan m�ultiples copias de la variable nueva (que sustituye al t�ermino aplanado).

Cuando se trabaja con una implementaci�on basada en , la estrategia de

condicional no es completa bajo las condiciones habituales de con uencia (y

noetherianidad) del programa. En el ejemplo anterior, el t�ermino al que se instancia

la variable de la primera regla deber��a ser reducido a dos t�erminos distintos, lo que

es imposible si se mantiene el t�ermino desanidado (como lo ser��a tambi�en, de alguna

forma, en una implementaci�on basada en ). Resulta interesante observar la

estrecha relaci�on existente entre la relaci�on de b�asico y la t�ecnica de com-

partici�on de variables por . Concretamente, la estrategia b�asica no permite

la reducci�on de los t�erminos introducidos por instanciaci�on con lo que, trivialmente,

una implementaci�on basada en esta forma de no afecta a la completitud del

c�alculo. El programa del Ejemplo 23 se usa en [MH94] para ilustrar la incompleti-

tud del condicional b�asico bajo el requerimiento est�andar de programas

con uentes y noetherianos, y c�omo se recupera la completitud al exigir adicionalmen-

te que los programas sean decrecientes (o con uentes por niveles, alternativamente)

cuando no hay variables extra [MH94]. Resulta inmediato comprobar que esta misma

condici�on asegura que no se pierde completitud como consecuencia del aplanamiento

en las derivaciones de condicional. En el resto de esta secci�on, excepto que

se impongan expl��citamente otras condiciones, consideramos que los programas con

los que se trabaja son con uentes y tambi�en decrecientes.

Los siguientes lemas establecen una forma de equivalencia, respecto a las sus-

tituciones de respuesta computada, entre las derivaciones para un objetivo y para

cualquiera de sus formas aplanadas. El primer resultado muestra que, dado un ob-

jetivo y uno de sus aplanamientos , toda respuesta computada para es una

respuesta computada tambi�en para . Por abuso, usamos la terminolog��a \deriva-

ci�on de �exito" para denotar derivaciones que parten de un estado y alcanzan un

estado . Considerar este tipo de estados iniciales resulta conveniente cuando

se plantea aplicar este lema a la prueba por inducci�on de resultados posteriores.

( ) ( )

( ) = [ ( )]

( = )

. La prueba es inmediata.

Para aplicar la propiedad de completitud fuerte a las derivaciones que parten de un

� ( )

� ( )

;

;

;

;

;

;

Demostraci

on

up

uu

V ar g

uu

V ar g

Ejemplo 24

Lema 6.3.8

0

j

0

0

0

0

0

j

0 0 � 0

0

j

0

S

0 �

0

0 0

0

j

0

j

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

� 2

R

!

!

!

� �

2 R

h i h f gi

h f gi

h f gi

h> f gi

R

R

R S

� 2

D � h i h> i

D � h i

h> i S

D

� 2

g g x; g x flat g �

g

x

g

f c z z

f h z z

h z c z

g f c y g c y

x; f x flat g g

c y x; f x ; � c y h z ; z ; x=h z

c y h ; true ; x=h ; z=

c y c ; true ; x=h ; z=

; x=h ; z= ; y= :

g

g

g

g g x; g x flat g

g ; � ; �

x

� g ; �

; �

x �

g g x; g x flat g

x

g

narrowing

Sea el siguiente programa con uente (y decreciente):

y un objetivo ecuacional. Dado el aplanamiento simple

, existe la siguiente derivaci�on de �exito para en :

Resulta inmediato comprobar que no es posible construir una refutaci�on para el ob-

jetivo original en , haciendo uso de las mismas reglas que en la derivaci�on de

�exito anterior (sobre las posiciones correspondientes), ya que no es posible aplicar la

segunda regla del programa en ninguna derivaci�on que parte de .

Sea un programa y una funci�on de selecci�on. Sea un objetivo

y . Entonces, para toda derivacion de narrowing

condicional de �exito en la que los t�erminos introducidos por

la instanciaci�on de la variable no han sido reducidos por narrowing con posterioridad

a la instanciaci�on y est�a normalizada, existe una derivaci�on

que respeta .

narrowing

narrowing

narrowing

125

objetivo ( = [ ] ) ( ) y computan respuestas que, restringidas a

las variables de , est�an normalizadas, es necesario exigir que los t�erminos introducidos

por la instanciaci�on de la variable nueva no hayan sido reducidos por en la

correspondiente derivaci�on para el objetivo . Como consecuencia de ello, el resultado

contrario del Lema 6.3.7 no es cierto en general, tal y como ilustra el siguiente ejemplo.

( ( ))

( ( ))

( ) ( )

( ( ( )) = 0) ( ( ) =

( ) = 0) ( )

( ( ) = ( ) = 0) ( ( ) = ( ) = 0) ( )

( ( ) = (0) ) (0) 0

( ( ) = (0) ) (0) 0

(0) 0 0

El siguiente lema establece la requerida propiedad de completitud fuerte para los

objetivos aplanados.

( = [ ] ) ( )

( )

(

)

. El resultado se prueba, de forma inmediata, siguiendo las l��neas de

la demostraci�on de la completitud fuerte del ordinario respecto a respuestas

normalizadas [OMI95], explotando el hecho de que el t�ermino asociado a la variable

nueva en no se reduce por en .

El siguiente lema establece la direcci�on contraria del Lema 6.3.7, es decir, dada

una derivaci�on de �exito para el objetivo aplanado ( = [ ] ) ( ) en la

que los t�erminos introducidos por la instanciaci�on de la variable no han sido redu-

cidos por con posterioridad a la instanciaci�on y est�a normalizada,

entonces dicha respuesta se computa tambi�en para el objetivo original .

n n

i

� �

0

00

0

Lema 6.3.9

1 1 2 2 1 1

1

1

1 1

Demostraci

on

;

;

;

; ; ;

;

;

;

;

;

;

;

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

0

0 0 � 0

0

0

j

� 0

0

0

j

0 � 0

0 0

0 0 0 0 0

0

0

j

0

0

j

j

0

j

0

j ! j

j j

0 0

j

0

j

0

j

0 00 0 �

j

j j

00

� ( )

0

[ ]

1

1[ ] [ ]

1

1 + 1

1

1 2

0

1 1 2 1 2� ( )

1

0

[1 = ]

� ( )

1

1

1 1 1

[ ]1 1 1 1 1 1

1

1

1

1 1 2� ( )

2� ( )

2� ( )

1 1

1 2 1

1

V ar g

uu

w ;r w ;r w ;r

n

n

n i i i i i i

i

i

wi

uu

u V ar g

uu

;x x true u

u V ar g

u uw u

u u:w ;ru:w

n nV ar g

nV ar g

nV ar g

n

n

R 2

D � h i h> i

D � h i h> i D

D

� 2

S

h i h> i S

h i

h i � h i h i h i � h> i

� ! ( R 2

f g �

� �

! h i � h i

h i h> i f g

� � h i � h i h f gi

f g

� � 2 �

2 h i h i � h i

2 D � h i h> i

� [ f g

D

f g h i

h> i h i h> i

g g flat g

g ; � ; ��

V ar g V ar g

g; � ; �� � � V ar g

g g x; g x u O g x

g ; � ; ��

g ; � �

g ; � g ; � g ; �� : : : g ; �� : : :� ; ��

� � : : : � r � � C << w O g

� mgu g � i ; : : : ; n n n

g

n

n w w

x x true g ; � g x; g x ; �

g; �� ; �� � � x= g � mgu g �

n >

w g ; � g x; g x ; � g; � x=g

x=g �

w : :w w O g g C ; g � x; g x �

w O g g; � C ; g � � ; �� g ; ��

g flat g g ; �� ; �� : : : � � : : : �

� : : :� x=t � : : : �

t

x=t g ; ��

; �� # # � : : :� V ar g g; � ; ��

� � : : :� V ar g

Sea un programa, un objetivo y . Entonces, para toda

derivacion de narrowing condicional de �exito en la que los

t�erminos introducidos por la instanciaci�on de la variable de no han

sido reducidos por narrowing con posterioridad a la instanciaci�on y est�a nor-

malizada, existe una derivaci�on tal que y

emplea las mismas reglas que (sobre las posiciones correspondientes).

narrowing

narrowing

narrowing

126

( )

( )

( ) ( )

( ) = [ ( )]

. El resultado se sigue directamente del Lema 6.3.8, que establece

la completitud fuerte del c�alculo de condicional para objetivos aplanados

bajo las condiciones impuestas por el lema.

Sea ( = [ ] ), con

( ) y una variable nueva. Por el Lema 6.3.8,

para cualquier funci�on de selecci�on existe una derivaci�on de condicional

de �exito ( ) que respeta . Sin p�erdida de generalidad, considera-

mos la siguiente derivaci�on para , que computa la sustituci�on de acuerdo a

una regla que selecciona las ecuaciones de izquierda a derecha:

con = , donde ( ) ,

( ), y

= ( = ), = 1 , 2. N�otese que es mayor o igual

que 2, ya que el n�umero de ecuaciones en el objetivo aplanado es mayor o igual

que 2. La prueba se realiza por inducci�on sobre el n�umero de pasos de la derivaci�on.

Sea = 2. En este caso, 1, 2, y la regla de uni�caci�on sint�actica

( = ) ha sido aplicada dos veces. Entonces, ( = [ ] )

, donde = ( ) y = ( ) = y, por tanto,

se cumple el resultado enunciado.

Consideremos ahora el caso inductivo 2. Tenemos dos posibilidades:

Sea 1. Entonces = [ ] ,

y el resultado se cumple ya que = .

Sea 1 1 , con

( ). Entonces ( [ ] = [ ] ) .

Ya que

( ), entonces ( [ ] ) ,

y ( ). Sea ( ), con ( )

(( ) ). Entonces, ( ) est�a normalizada y

el t�ermino no se ha reducido por en con posterioridad a la aplica-

ci�on del enlace . Por la hip�otesis de inducci�on, se cumple que

, con = ( )[ ( )] y, por tanto, , con

= ( )[ ( )].

b

b

b

b

� ( )

� ( )

; ;

; ;

; ;

Demostraci

on

uu

V ar g

p

n

p

V ar g

n

0 0

j

0

� 0 0 �

0

0 0

0

j

0 0

0

0

0 0 0 0 � 0 0 0

0

0

j

0

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

De�nici�on 6.3.10 ( -aplanamiento)

Lema 6.3.11

Lema 6.3.12

� T !

f j � 2 g

2

D � h i h> i D � h i

h> i

� D

D

D

!

R � 2

D � h i h i h> i � h> i

D

! R

h i h i h> i � h> i

g s

s g s g

s x g

s g s

flat Goal }Goal

flat g; s g g s x; ; g x ; u O g ; g s :

g

s

g s g flat g; s

g; � ; �� g ; �

; ��

V ar g V ar g

� � � V ar g

x x true

g

g

s

g g s x; ; g x

flat g; s

g ; � C; t x; ; g x # ; �# ; �# � ; ��

V ar g

V ar g

x x true g

g; � h; �# ; �#� ; ��

Sea un objetivo ecuacional y un t�ermino.

De�nimos la funci�on como sigue:

Sea un objetivo ecuacional, un t�ermino y . Enton-

ces, sii existe una derivaci�on de �exito

en la que los t�erminos introducidos por la instanciaci�on de las variables

de no han sido reducidos por narrowing en con posterioridad

a la instanciaci�on, est�a normalizada, y emplea las mis-

mas reglas que (sobre las posiciones correspondientes), m�as un n�umero �nito de

aplicaciones extra de la regla .

Sean un programa, un objetivo ecuacional y

tales que existe una derivaci�on de la forma:

en la que los t�erminos introducidos por la instanciaci�on de las variables de

no han sido reducidos por narrowing con posterioridad a la instanciaci�on,

est�a normalizada, y las ecuaciones de se reducen en haciendo uso �uni-

camente de la regla . Entonces, existe una derivaci�on para en

de la forma:

127

Dado un objetivo ecuacional y un t�ermino m�as general que alg�un subt�ermino

de , de�nimos un -aplanamiento de como un nuevo objetivo que contiene la

ecuaci�on ( = ) y puede construirse a partir de aplicando una secuencia (�nita) de

aplanamientos simples.

:

( ) = ( = [ ] )

( ) =

El siguiente lema establece la equivalencia entre un objetivo y cualquiera de sus

-aplanamientos respecto a los conjuntos de respuestas normalizadas computadas.

( )

( ) (

)

( ) ( )

= [ ( )]

( = )

. Inmediata a partir de los Lemas 6.3.7 y 6.3.9, ya que puede

obtenerse a partir de aplicando una secuencia �nita de aplanamientos simples.

Intuitivamente, el inter�es de construir objetivos -aplanados es facilitar la tarea de

reordenar las derivaciones que parten de un objetivo dado, para imitar la secuencia de

pasos que se aplican para construir los resultantes para los t�erminos parcialmente eva-

luados. De esta forma, se pueden reemplazar algunos de dichos pasos en la derivaci�on

original por un �unico paso, obtenido por la aplicaci�on del resultante correspondiente.

El siguiente resultado es auxiliar.

( = [ ] )

( )

( = [ ] )

( )

( )

( = )

1 1

1 1

1 1

1 1

1 1

Demostraci

on

;

;

;

;

;

;

;

;

;

;

; ; ;

;

;

b

b b

b

b b

b b b

b b

b

b

b

b

b

b b

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

0 0 0

0

0

0 0 0

0 0

� 0 0 0 0

� 0

0 0 � 0 0 0 0

0 0 0

0 0

0 0

0 0

0 0

0 0

0 0 0 0 � 0

� 0

2

h i h i

D

D

h i � h i h i

h i

h i

h> i �

h i h i

h i � h i h i

h i

h i h i h i

\ ;

2

2

h i h> i

h i h> i

p

n

p p

n n p

n n

n n p

n n n n

n n p

n n

n n p

n n n n

p p

n n p

n n

n n

n n

n

n n

n

n n p

n n

n

n

n n p

n n

n

n n p

n n n n

n n

tal que , y la subderivaci�on

emplea las mismas reglas y en el mismo orden que los primeros

pasos de la derivaci�on (en las posiciones correspondientes).

narrowing

� � V ar g C; t x; g x # mgu # flat h

g; � h; �# n

g ; � s x; ; g x ; � C ; s x; ; g x # ; �#

: : :

C ; s x; ; g x # ; �#

C ; s x; g x # mgu # ; �# mgu #

; �� ; n

C ; s x; ; g x # ; �# C ; s x; g x # mgu # ; �# mgu #

g ; � s x; ; g x ; � C ; s x; ; g x # ; �#

: : :

C ; s x; ; g x # ; �#

g; � g ; �# : : : g ; �#

# mgu # #

# mgu # # V ar g Dom V ar g

C ; s x; g x # mgu # flat g

g p g

C ; s x; g x # mgu # flat g

C ; s x; g x # mgu # ; �# mgu # ; ��

g ; �# ; � � � V ar g

n

128

= [ ( )] ( = [ ] ) ( ) ( )

. Por el Lema 6.3.8, podemos considerar (sin p�erdida de generali-

dad) que la derivaci�on tiene la forma:

( = [ ] ) ( = [ ] )

( = [ ] )

( = [ ] ) ( ) ( )

1

donde los pasos de :

( = [ ] ) ( = [ ] ) ( ) ( )

s�olo emplean la regla de uni�caci�on sint�actica.

En estas condiciones, para probar el lema es su�ciente con veri�car que, para toda

derivaci�on de la forma:

( = [ ] ) ( = [ ] )

( = [ ] )

existe una derivaci�on:

que emplea las mismas reglas y en el mismo orden que en la derivaci�on anterior

(sobre las posiciones correspondientes) y tal que ( ) = (con lo que

( ) = [ ( )], ya que ( ) ( ) = ), y

( = [ ] ) ( ) ( )

haciendo uso en de la ocurrencia de para realizar el aplanamento simple.

Entonces, ya que ( = [ ] ) ( ) ( ) y

( = [ ] ) ( ) ( )

se cumple, por el Lema 6.3.9, que con = [ ( )].

Realizamos la demostraci�on del anterior argumento por inducci�on sobre la longi-

tud de las derivaciones.

�n

C

4

1

;

;

; ;

; ;

;

narrowing

b b

b

b

d

b b

b

b b

b

b

b b

1 1

1 1

1 1

1 1

1

1 1

1 1

1

4

1 1

1 1

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

p u p

p u

p

u

u

u

u

u p

u p u p

u p u p

u p

p n n p

n n

n n

n n

n

n n p

n n

n n

n n p

n n

n n p

n n

0 0 0

j

0

j

0

0 0 0

0

j

j

j

j

0

0 0

0

0 0

0

� �

0

0

� �

0

0

� �

0

0

� �

0

0

0 0

El caso en el que la ocurrencia reducida pertenece a es inmediato.

h i � h i h i

! ( R 2 f g 6�

2 �

*

f g

f g

f g \ ;

f g D

! 6�

6�

h i h i

2

h i � h i h i

h i h i

2

h i h i

n

g ; � s x; ; g x ; � C; s � x; ; g x # ; �#

g s � � C << u O s # mgu s �

fail g flat g; s g g s

# mgu # #

mgu #

mgu mgu s �

mgu s �

mgu s � V ar � Dom

#

# mgu s �

x x true # mgu # fail

# fail

g; � C; g s � #; �#

g

p:u C; s � x; g x # mgu # C; s � x; g x #

C; s � x; g x # C; s � x; g x #

flat C; g s � # p

n >

g ; � s x; ; g x ; � : : : C ; s x; ; g x # ; �#

g; � : : : g ; �#

# mgu # #

C ; s x; g x # mgu # flat g g

p g

C ; s x; ; g x # ; �# C ; s x; ; g x # ; �# ;

129

Sea = 1. Dada la derivaci�on:

( = [ ] ) ( [ ] = [ ] )

donde = , existen ( ) ,

( ) y = ( = )

. Puesto que ( ), entonces [ ] y se cumplen las siguientes

equivalencias:

( ) = (por el Lema 3.2.1)

= ( ) (por el Lema 3.2.1)

= ( ( = ) )

= ( = )

= ( = ) (ya que ( ) ( ) = )

=

donde = ( = ). Ahora, puesto que es una derivaci�on de �exito y las

ecuaciones de se reducen con la regla ( = ), entonces ( )

y, por tanto, . As��, existe la derivaci�on:

( [ [ ] ] )

que emplea la misma regla que la transici�on para (sobre la posici�on correspondiente

). Ahora, dado que ( [ ] = [ ] ) ( ) = ( [ ] = [ ] ) =

( [ ] = [ ] ) , resulta inmediato veri�car que ( [ ] = [ ] )

(( [ [ ] ] ) ), haciendo uso del subt�ermino a la ocurrencia para realizar

el aplanamiento simple.

Consideremos el caso inductivo 1. Por la hip�otesis de inducci�on, dada la deriva-

ci�on:

( = [ ] ) ( = [ ] )

existe la secuencia de pasos de :

en la que se han empleado las mismas reglas y en el mismo orden que en la derivaci�on

anterior (sobre las posiciones correspondientes) y tal que ( ) = y

( = [ ] ) ( ) ( ), haciendo uso en de la ocu-

rrencia de para realizar el aplanamiento simple. Ahora, consideremos la siguiente

transici�on :

( = [ ] ) ( = [ ] )

;

b

d

d

b

d

b

b

b

b

narrowing

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

! ( R 2 f g 6�

*

*

* f g

* f g

* f g \

;

* * f g

* * f g *

* f g

* f g

f g

f g

f g \

;

f g

2

h i � h i

h i � h i

2

D

1 1

1

1 1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1 1

1

1 1

1 1 1

1 1 1

1 1 1

1

1

1 1 1 1

1 1

1 1

1 1 1

1

1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1

1

1 1 1

0

0

j

� �

0 0

0

0 0

0

0

0

0

0

j

0

0

j

0

�j

0

0

0

�j

0

�j

0

0

�j

� �j

� �j

� �j

� � �j

� �j

� �

0

0

� �

� � �

0

0

� � � � � � � �

� � � � � � �

� � �

0 0

0 0

n n

n

u

n n n n u

n n

n n

n

n

n

n

n

u

n

n

n

u

n

nu

n

n

n

nu

n

nu

n n

nu

n nu

n nu

n

n nu

n

n n nu

n

n

n

n nu

n n

p

n n

n n

n n n p

n

n

n n n p n n n n p n

n n n n n p n n

n n n p n n n n

n n n n u n n

n n

n n n p

n n

n n p n n n p n n

� � C << u O s # mgu s # � fail

C C;C s s � # # #

# mgu #

#

# #

# mgu s # �

# mgu mgu s # �

# mgu mgu s � # V ar �

Dom #

# mgu s �

# mgu s �

# mgu # mgu s �

# mgu s �

# mgu mgu s � #

# mgu s � #

# mgu s # � V ar �

Dom #

# #

#

# mgu s # � C ; s

x; g x # mgu # flat g g p

g g C ; g s #

mgu # C ; g s # C ; g s #

g ; �# C ; g s # ; �#

C ; g s # ; �# g ; �#

C C;C s s � # # # # mgu #

# C ; s x; g x # mgu #

C ; s x; g x # C ; s x; g x # flat g

g S

130

con ( ) ,

( ) y = ( ( ) = ) , y

donde = ( ), = [ ] y = . De forma similar al caso base,

es posible demostrar las siguientes equivalencias:

( ) =

= (por el Lema 3.2.1)

( ) =

( ( ( ) = )) =

( ( ( ( ) = ))) =

( ( ( = ) )) = (ya que ( )

( ) = )

( ( = )) = (por el Lema 3.2.1)

( = ) = (por la conmut. y asoc. de )

( ( )) ( = ) = (por el Lema 3.2.1)

( ) ( = ) = (por la hip�otesis de inducci�on)

( ( = ) ) = (por el Lema 3.2.1)

( = ) =

( ( ) = ) = (ya que ( )

( ) = )

=

donde = ( ( ) = ). Por la hip�otesis de inducci�on, ( =

[ ] ) ( ) ( ), haciendo uso en de la ocurrencia de

para realizar el aplanamiento simple. Por tanto, = ( [ ] )

( ) = ( [ ] ) = ( [ ] ) , y podemos

probar la transici�on:

( [ ] )

( [ ] )

donde = ( ), = [ ] , y = . Puesto que ( ) =

, se cumple, de forma an�aloga al caso base, ( = [ ] ) ( ) =

( = [ ] ) = ( = [ ] ) ( ), lo que completa la

demostraci�on.

El siguiente lema es crucial para la demostraci�on de la completitud de nuestra

transformaci�on y establece, esencialmente, que toda derivaci�on de �exito en el pro-

grama original (para un objetivo que es -cerrado), se puede reordenar de forma

que se apliquen los pasos de en el mismo orden que en las derivaciones que

han generado algunos de los resultantes del programa transformado. La forma de

realizar esta reordenaci�on es fundamental ya que, en general, no es posible aplicar los

b

b

;

;

� ( )

1

1

Lema 6.3.13

Demostraci

on

p

p

p p

p

V ar g

k

n

i j

j

j

j j

j

0

0

0 0 �

j

0 � 0 0

0

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

2

D !

D

D

D

D D

D

D

R

R R R [ f g D � h i

h> i R

f g 2

f g �

D

D � h i h> i

2 f g ) 6�

!

D D � D

s

s g

g

s g

g g

S g s s S g

x x true

g

g g

s

g

g

g

S

g S

S g S g; �

; �� g �

W w ; : : : ; w CSet S; g g

S O u ; : : : ; u W W

g

g; � ; �� � � V ar g

O

O i; j ; : : : ; n : i < j u u

n O

n x x

true

narrowing

narrowing

narrowing

narrowing

narrowing

narrowing

Sea un programa, un objetivo ecuacional y un conjunto de t�ermi-

nos. Sea una EP de en tal que es -cerrado. Sea

una derivaci�on de �exito para en tal que est�a normalizada. Sea

un conjunto de ocurrencias de cierre para con

respecto a y el subconjunto de las posiciones de que

se~nalan subt�erminos de que se reducen en . Entonces, existe una derivaci�on

tal que y los subt�erminos apuntados por las

ocurrencias de se explotan dando prioridad a los m�as internos.

131

pasos de empleados en la construcci�on de un resultante para el t�ermino

sobre un subt�ermino de . El motivo es que, si los subt�erminos que aparecen en la

sustituci�on deben reducirse en la derivaci�on para el objetivo , entonces es posible

que sin la reducci�on previa de dichos t�erminos no se pueda imitar la secuencia de

pasos considerada. Intuitivamente, podemos garantizar que los pasos realizados para

construir un resultante para el t�ermino se pueden aplicar sobre el subt�ermino de

cuando se cumplen las siguientes condiciones: 1) es una instancia de alg�un t�ermi-

no de , i.e. = , ; 2) alguno de los t�erminos de se reduce por

en usando, al menos, una regla distinta de ( = ); y 3) los t�erminos de

no se reducen por en la derivaci�on . De alguna forma, las anteriores

condiciones determinan un subt�ermino de que se puede considerar, respecto a la

derivaci�on , un t�ermino \innermost". Esto no signi�ca que los t�erminos de deban

ser necesariamente constructores. Simplemente no deben haber sido reducidos por

en la derivaci�on . De este modo, las tres condiciones impuestas sobre

el subt�ermino de , garantizan que efectivamente se pueden reordenar los pasos

de la derivaci�on , dando lugar a una nueva derivaci�on , en la que los pasos de

que se realizan en sobre el subt�ermino se pueden realizar, de forma

consecutiva, al inicio de la derivaci�on . El objetivo �nal de esta reordenaci�on es,

l�ogicamente, obtener una derivaci�on para el objetivo que siga la misma secuencia

de pasos de que la derivaci�on que ha generado alguno de los resultantes del

programa especializado. Como resultado preparatorio, el siguiente lema establece la

equivalencia entre una derivaci�on a partir del objetivo y cualquier reordenaci�on de

la misma en la que se reduzcan los subt�erminos de (que permiten demostrar que el

objetivo es -cerrado) de forma \innermost".

(

)

= ( )

=

( ) = [ ( )]

. Consideramos, sin p�erdida de generalidad, que las ocurrencias del

conjunto veri�can que para todo 1 ( ). Realizamos

la prueba por inducci�on sobre el n�umero de elementos de .

El caso base = 0 es trivial, ya que entonces s�olo se ha aplicado la regla ( =

) en la derivaci�on y, por tanto, basta con considerar .

1

2

00

00

;;

; ;

; ;

;

;

;

1

� ( )

1

2

1

� ( )

+

b

b

z }| {

b

| {z }

b

u

u

V ar g

k

u u

u

k

u

u

u

V ar g

u

u

u

s

Lema 6.3.14 (resultante)

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

j

0

0 00

00

j

0

00

00 0

D

0 0 � 0 0 0 0

0 0 0 0 � 00

D

00 0 0

00

0 � 0

0 00

00

0

0

0

00 0 0

j

0

0

0

� 0

� 2

D

� 2

R

D � h ih > i h > > i

h > f g f gi h> i

D

D

D � h i h i h> i

D

h i

h> i

D

� f g

D D

D

D �

h i h> i

R � ! (

R

D � h i h i

narrowing

narrowing

Sea un programa y un resultante

para en , originado por la siguiente derivaci�on:

n > u u g s s S

O

g s x; ; g x flat g; s s g

g �

V ar g V ar g

� � V ar g

g ; �; t x; ; g x # ; �# ; t x; ; g x # � ; �# �

; g t # � x=t ; �# � x=t ; ��

� mgu #

t

g

g; � g t #; �# ; ��

� � V ar g k

k

g t #; �#

; ��

k g x

S O O u

t �

# g t

g t # n

O

g t #; �# ; ��

r s� t C

s

s y; � C; t y ; � :

132

Sea 0. Consideramos la ocurrencia , donde = , . Por el orden

impuesto sobre el conjunto , se cumple de manera inmediata que los t�erminos de

no se reducen en .

Sea ( = [ ] ) ( ) un -aplanamiento del objetivo . Por el Lema

6.3.11, existe una derivaci�on de �exito para en que computa una soluci�on , tal

que est�a normalizada, los t�erminos introducidos por la instanciaci�on de las

variables de ( ) ( ) no han sido reducidos por con posterioridad

a la instanciaci�on y = [ ( )]. Por el Lema 6.3.8, podemos restringirnos, sin

p�erdida de generalidad, a derivaciones de la forma:

( = [ ] ) ( = [ ] )

( [ ] )

donde en s�olo se emplea la regla de uni�caci�on sint�actica (es decir, = ( ))

y en no se reduce el t�ermino .

Ahora, aplicando el Lema 6.3.12, existe la siguiente derivaci�on para :

( [ ] )

tal que = [ ( )] y emplea en los primeros pasos exactamente las mismas

reglas y en el mismo orden que los primeros pasos de la derivaci�on .

Finalmente, para aplicar la hip�otesis de inducci�on sobre la derivaci�on ( [ ] )

, debemos veri�car que el n�umero de posiciones reducibles del objetivo ha

disminuido tras los primeros pasos de la derivaci�on . En primer lugar, [ ]

es -cerrado haciendo uso del conjunto de ocurrencias = . Por cons-

trucci�on de la derivaci�on , el t�ermino no se reduce en y, dado que

est�a normalizada, los t�erminos introducidos por la aplicaci�on de en [ ] tampoco

deben reducirse en . En estas condiciones, las posiciones que deben reducirse en

del objetivo ( [ ] ) son los 1 subt�erminos apuntados por los elementos de

. El resultado se sigue, por tanto, aplicando la inducci�on sobre la subderivaci�on

( [ ] ) .

El siguiente lema establece una propiedad b�asica de los resultantes. Concretamen-

te, establece la equivalencia entre una derivaci�on que emplea una secuencia de pasos

de , y otra en la que se utiliza el resultante asociado a dicha derivaci�on.

( )

= ( = )

;

;

;

;

0

0

0 0

+

� ( ) � ( )

u

s

V ar g V ar g

r

Demostraci

on

Demostraci

on

j

0 0

0 00

0 00

R

Rj

j

0

R R

R R

0

R

0

Rf g

0

R R R

R

R

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

Teorema 6.3.15 (correcci�on y completitud de la EP)

(Correcci�on)

h i h i

D

f g 6�

h i h i

O

R

R

O f j h i h> i g

R R

R

2 O ) 9 2 O �

O � O R [ f g

E R

2 R

E j E

R

E j E j E j

E E

E

h i h> i R

� 2 O

g g s

g; � g ; �

mgu s s� fail

g; � g ; �

r � � V ar g

:

g g

g � g; � ; � ; � :

g S

S

: � g g � V ar g :

: g g ; g S

r

g

g� g� �

g

g; � ;

� V ar g g

Sea un objetivo ecuacional, tal que , para el que existe la derivaci�on:

que utiliza las mismas reglas que la derivaci�on , en el mismo orden y sobre las

posiciones correspondientes. Entonces, se cumple que y es

posible probar el paso de narrowing:

empleando el resultante , de forma que .

narrowing

Sea un programa, un objetivo, un conjunto �nito de t�erminos y una EP de

con respecto a . Entonces, se cumple:

(Correcci�on) tal que

(Completitud fuerte) si es -cerrado.

narrowing

narrowing

narrowing

narrowing

133

=

( = )

= [ ( )]

. La prueba es est�andar. Ver, por ejemplo, la t�ecnica empleada

en el Lema 4 12 de [LS91] que demuestra un resultado an�alogo para el caso de los

programas l�ogicos.

Finalmente, podemos enunciar y demostrar uno de los resultados principales de

este cap��tulo: la correcci�on y completitud de la EP de los programas l�ogico-funcionales

usando condicional. En esta secci�on, consideramos que la sem�antica ope-

racional s�olo observa las sustituciones de respuesta computada normalizadas, es

decir, dado un programa y un objetivo ecuacional , la sem�antica operacional de

en se de�ne como:

( ) = est�a normalizada

1 ( ) ( ) [ ( )]

2 ( ) ( )

.

. Denotamos por la teor��a ecuacional presentada por . La correc-

ci�on del c�alculo de condicional implica que, para todo resultante ,

se cumple = . As��mismo, si es una sustituci�on de respuesta computada

normalizada para en , por la correcci�on del c�alculo de condicional

tenemos que = y, por tanto, = = , lo que signi�ca que es

un -uni�cador de en . Ahora, ya que condicional es un algoritmo

completo de -uni�caci�on para programas con uentes (respecto a sustituciones nor-

malizadas), existe una derivaci�on de condicional ( ) en

tal que [ ( )] y, por tanto, ( ).

b

0

1 1

1 1

i

i

k k

k k

narrowing ;

;

; ; ;

;

; ; ;

; ;

(Completitud fuerte

j

� 00 0

00

�j

0

j

0 � 0

0

0

0

j

0

j

0

0

0 0 � 0

0

0 0

V ar g

m m

m i i i i iu

i

i i i i u i

u

u

u

uu ;r u ;r

w ;r w ;r

0� ( )

0 0

0

0 1 1 1

1 + 1

+1 0

0

0

0

0 0

0

0

+

0

0 0

0 0[ ] [ ]

[ ] [ ]

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

h i h> i R

h i h> i R

D � h i h i h i � h> i

! ( R f g

� �

R

2 8 2 9 2 �

R

D � h i h> i

D

D !

R

D

D !

D

D � h i � h i h i h> i

D

� ! ( 2 R

h i h i

g ; � ; �� �

g ; � ; �� g

� � V ar g

g ; � g ; �� : : : g ; �� : : : � ; ��

� � : : : � � � C << � mgu g �

g C ; g � � i g S

g

g S

g S

O CSet S; g u O: s S: s g

g

g ; � ; ��

O

n

n x x true

n > u O g

g g s

s x x true

g ; � g s ; � : : : h; �� ; ��

r s# t C

s y; � : : : C; t y ; # ; k >

134

). Vamos a probar que, para toda derivaci�on de �exito de

condicional ( ) en , tal que est�a normalizada,

existe una derivaci�on de �exito correspondiente ( ) para en tal

que = [ ( )].

Consideremos la derivaci�on:

( )

con = , donde ( ) , = ( = ),

( [ ] ) , 0, y el objetivo inicial es -cerrado.

En primer lugar, por el Lema 6.3.13, sabemos que es posible construir una derivaci�on

de �exito para que computa la misma respuesta que la derivaci�on original y reduce

uno de los conjuntos de subt�erminos que permiten demostrar que es -cerrado,

siguiendo un orden \innermost". Este hecho garantiza que es posible aplicar las

mismas secuencias de pasos que se han empleado en la construcci�on de algunos de los

resultantes de , sin que se produzcan con ictos en el c�omputo de los uni�cadores

m�as generales. Formalmente, ya que es -cerrado, existe al menos un conjunto de

ocurrencias de cierre ( ) tal que . Por el Lema

6.3.13, existe la siguiente derivaci�on de �exito para en :

en la que los subt�erminos apuntados por se reducen dando prioridad a los m�as in-

ternos. Realizamos la prueba por inducci�on sobre la complejidad de la derivaci�on .

Si = 0, entonces s�olo se ha empleado en la regla ( = ) y, por tanto,

la misma derivaci�on puede construirse tambi�en en .

Consideremos el caso inductivo 0. Sea la ocurrencia del conjunto tal que

es el primer subt�ermino de que es reducido en . Entonces = , donde el

t�ermino se reduce en empleando al menos una regla distinta de ( = )

y los subt�erminos que aparecen en no se reducen en la refutaci�on. Consideremos

que tiene la forma:

( [ ] )

Dado que es una derivaci�on de �exito, podemos asegurar que existir�a un resultante:

( )

construido a partir de la derivaci�on:

= ( = ) 0

0; ;

Ejemplo 25

uu;r

u

u

u

u

u

u

0 0[ ]

0

0 0

0

0

0

0

0

0

0 0

00 00 � 00

00 0 00 00 0

00 0

00

0

0 00

00

0

0

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

D

R � ! ( 2 R

h i � h i h i h> i

f g 6�

D

D

R

R

!

f g R R

!

!

R [ f g

f g R [ f g

k

k

r s# t C

g ; � g s ; � C; g t � ; �� ; ��

� mgu s s# fail � � V ar g h C; g t � �

� V ar g terms r S

t C S g s S

O g x S

O g x

#

C; g t � S

f x x

S f ; f x S

f

f x x

f z z S

z= f z z

Dado el siguiente programa :

y el conjunto , una EP de con respecto a es el programa :

Es inmediato veri�car que es -cerrado y tiene una refutaci�on con

respuesta computada , mientras que s�olo es capaz de computar

una soluci�on m�as general.

135

que aplica exactamente las mismas reglas y en el mismo orden que los primeros

pasos de la derivaci�on . Ahora, por el Lema 6.3.14, podemos sustituir los pasos

realizados con las reglas de por la aplicaci�on del resultante ( ) ,

obteniendo:

[ ] ( [ ] )

donde = ( = ) , = [ ( )], = ( [ ] ) y =

[ ( )]. Ahora, puesto que los t�erminos de ( ) son -cerrados, entonces

y son -cerrados. Adem�as, si [ ] es -cerrado con el conjunto de ocurren-

cias de cierre , entonces [ ] tambi�en se puede demostrar -cerrado usando las

correspondientes ocurrencias del conjunto que corresponden a t�erminos de [ ] .

Por �ultimo, la sustituci�on s�olo puede introducir t�erminos que aparecen en , que

por construcci�on no deben reducirse en la derivaci�on , o bien t�erminos de , que

tampoco pueden ser reducidos en , ya que en ese caso la respuesta no ser��a

normalizada. Por tanto, todos los t�erminos que deben ser reducidos por las reglas de

en el objetivo ( [ ] ) son -cerrados. Finalmente, aplicando la hip�otesis de

inducci�on, se completa la demostraci�on.

El resultado anterior no permite establecer a�un la equivalencia fuerte entre las

sem�anticas de respuestas computadas del programa original y el programa parcial-

mente evaluado. Esta es una situaci�on similar a la que ocurre en el caso de la pro-

gramaci�on l�ogica, donde el programa especializado puede generar m�as soluciones que

el programa original. Veamos un ejemplo que ilustra esta situaci�on en el caso de los

programas l�ogico-funcionales.

( )

= (0) ( )

(0) 0

( )

( ) =

0 ( ) =

En el marco para la EP de programas l�ogicos presentado en [LS91], se introduce

una condici�on de independencia sobre el conjunto de �atomos evaluados parcialmente

que evita la generaci�on de respuestas adicionales en el programa especializado. Infor-

malmente, la condici�on de independencia se formula exigiendo que no exista un par

de �atomos uni�cables en el conjunto de �atomos evaluados parcialmente. El siguiente

u u

u

0

0

j j

j

f g

R

!

!

R

!

!

!

!

2 ff gg

f g R

f g

6�

2

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

Ejemplo 26

De�nici�on 6.3.16 (solapamiento )

De�nici�on 6.3.17 (independencia)

S f h x ; f x ; h

f x

h x x

S

f h x f x

f h x

f x

h

g f h z z S

f h x S CSet S; g : g

z=x

g z=

S h h x f h x

S

g S

s t

s s s t s t

s s u

S

s; t S s

t

136

ejemplo ilustra la necesidad de una noci�on de independencia m�as fuerte en el caso de

los programas l�ogico-funcionales.

( ( )) ( ) (0)

( ) 0

( )

( ( )) ( )

( ( )) 0

( ) 0

(0) 0

( ( ( )) = )

( ( )) ( ) = 1 1

0

(0) ( ) ( ( ))

Con el �n de formular una noci�on de independencia adecuada recordamos, en

primer lugar, el concepto est�andar de entre t�erminos.

[Klo92]

As�� pues, nuestra condici�on de independencia sustituye la condici�on de \no uni-

�cabilidad" entre los elementos del conjunto, por la condici�on (m�as fuerte) de \no

solapamiento". La siguiente de�nici�on formaliza el concepto de independencia.

indepen-

diente

Los siguientes resultados formalizan algunas propiedades de los conjuntos de t�ermi-

nos independientes.

Sea el conjunto de t�erminos . Una EP del pro-

grama :

respecto a , es el programa :

Sea un objetivo que s�olo puede demostrarse -cerrado usando el

t�ermino (es decir, ). Por tanto, s�olo deber��a

computar la soluci�on en . Sin embargo, usando los anteriores resultantes, el

objetivo es capaz de computar tambi�en la soluci�on que, adem�as, est�a norma-

lizada. El problema se debe, intuitivamente, a que el solapamiento entre los t�erminos

de (concretamente, entre el t�ermino y el subt�ermino de ) pue-

de producir interferencias entre las reglas, de forma que el objetivo puede reducirse

con alg�un resultante que no se origin�o a partir de los t�erminos de que permiten

demostrar que es -cerrado, lo cual produce respuestas indeseadas.

solapamiento

Dos t�erminos y se superponen (so-

lapan) si existe un subt�ermino no variable de tal que y uni�can. Si ,

entonces exigimos que sea un subt�ermino propio de (i.e. ).

Un conjunto de t�erminos se dice

sii no contiene dos t�erminos (no necesariamente distintos) tales que

y se superponen.

1

1

1

1

i

k

k k

k k

i

i

Lema 6.3.18

Lema 6.3.19

Demostraci

on

Demostraci

on

j

0

0

j j

0 0

0

0

j j

j

j j

j

j

j

j j

j j

j j

j j j

j j j j

j

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

u

u u

u u

u

u u

u

n i iu

n k ku

u u

k ku u

k

n

n

i iu

iw

iu

i iw u

i iw u u

iw

iw

2

[

2 2

2

2 6�

f g 2 8 2 f g 9 2 �

� 2 f g � � � �

2 6�

6� �

� 62 f g

f g

� � � 62

� �

6� �

62

S

t S CSet S; t

t S

t t

s; s S

�; � t s� t s �

S # � �

s# s # S

S t S

t t u O t t s S

s t

t t u O t t

s S s t

u ; : : : ; u CSet S; t i ; : : : ; n : s S: s t

n

u u ; : : : ; u k k n u u s t

s S t s s t

s s s t t s

s s S

u u ; : : : ; u

u ; : : : ; u i

i n w u u :w s t s V

s t u :w u s t

s s s t s t s

s s V S

Si es un conjunto de t�erminos independiente, entonces la forma en

que un t�ermino puede ser -cerrado es �unica, es decir, el conjunto es

unario.

Sea un conjunto de t�erminos independiente, un t�ermino -cerrado

y un subt�ermino de , donde . Si uni�ca con alg�un t�ermino ,

entonces .

137

( )

. Demostramos el resultado por reducci�on al absurdo.

Supongamos que existe un t�ermino que puede ser -cerrado de dos formas dis-

tintas. Por la De�nici�on 6.3.2, esto s�olo es posible si existe un subt�ermino de que

es instancia de dos t�erminos (distintos) . Por tanto, existen dos sustituciones

tales que = y = . Ahora, dado que las variables de los t�erminos

de se consideran renombradas aparte, podemos formar la sustituci�on = tal

que = , lo que contradice la hip�otesis sobre la independencia de .

El siguiente lema formaliza una propiedad fundamental de los conjuntos de t�ermi-

nos independientes que permitir�a probar que el programa especializado no genera so-

luciones adicionales, lo cual es esencial para la demostraci�on del Teorema 6.3.20 que

establece la correcci�on y completitud fuertes de la EP de programas l�ogico-funcionales.

( )

. Demostramos el resultado por reducci�on al absurdo.

Supongamos que existe un subt�ermino de ,

( ), tal que uni�ca con

y .

Sea ( ). Entonces 1 ,

0. Por el Lema 6.3.18, dicho conjunto de ocurrencias es �unico. Ahora, podemos

considerar dos casos:

. Entonces, existe un , 1 , tal que y .

Ahora, puesto que existe un t�ermino tal que uni�ca con pero ,

entonces . Por �ultimo, dado que y uni�ca con , entonces

y uni�can, lo que contradice la hip�otesis acerca de la independencia de .

. En este caso, por la De�nici�on 6.3.2 (cierre) y el hecho

de que el conjunto de ocurrencias de cierre es �unico, existe un ,

1 , y un tales que = , y . Ahora, puesto que

y = , entonces . Finalmente, podemos distinguir dos

posibilidades:

a) . Dado que y uni�ca con , entonces uni�ca con

, y, por tanto, existe solapamiento entre dos t�erminos de , lo

que contradice la hip�otesis de independencia.

0

0

0

0

[ ]

[ ]

;

;

;

;

;

Demostraci

on

iw u u

w

u;ru

n

u

u;ru

u

n

u u

u u

u

n

j j j

j

0

0

R R

R R

0 0

0 0

0

0 0

j

0

j j

j j

j

CAP��TULO 6. FUNDAMENTOS DE LA EP DE PROGRAMAS

� �

R R

R R [ f g

O � O

O � O

h i h i

R

h i h i

R

h i h i 2

� ! ( R f g 6�

R

h i h i

2

h i h i

Teorema 6.3.20 (correcci�on y completitud fuertes de la EP)

s s s t t s

s s s

S

g S

S g S

: g g ; S

: g g :

t S

t z; � C; t � z �; ��

r

t z; � C; t � z � ; ��

� � V ar t

t z; � C; t � z �; �� u O t

r s# � C << � mgu t s# fail

r s y

s y; � C; � y ; # :

t s# s S t s

s t s t

t

s y; � C; � y ; #

Sea un programa, un objetivo, un conjunto �nito de t�erminos y una EP de

con respecto a tal que es -cerrado. Entonces, se cumple:

(Correcci�on fuerte) si es independiente.

(Completitud fuerte)

narrowing

narrowing

138

b) . Entonces y, dado que uni�ca con , existe un

subt�ermino propio de que uni�ca con , contradiciendo de nuevo la

independencia de .

Finalmente, el siguiente resultado muestra que, cuando se exige la independencia

del conjunto de t�erminos respecto al cual se realiza la EP, la sem�antica de respuestas

computadas del programa original y el programa especializado coinciden.

1 ( ) ( )

2 ( ) ( )

. La completitud fuerte ha sido ya probada en el Teorema 6.3.15.

Respecto a la correcci�on fuerte, �esta se sigue de forma inmediata a partir del siguiente

argumento. Dado un t�ermino cerrado con respecto a , tal que existe el paso de

:

= ( [ ] = )

en el que se ha empleado la regla del programa especializado , entonces existe la

siguiente derivaci�on de :

= ( [ ] = )

usando las reglas del programa original , de forma que = [ ( )].

En primer lugar, dado que = ( [ ] = ) , existen

( ),

( ) , y = ( = ) . Consideramos que el

resultante ha sido generado por la siguiente derivaci�on para = en :

= ( = )

Puesto que uni�ca con , , entonces tambi�en uni�ca con . Por el Lema

6.3.19, se cumple que y, por tanto, existe una sustituci�on tal que = .

Esto nos permite asegurar que no se van a producir respuestas adicionales, ya que no

es posible emplear resultantes formados a partir de t�erminos m�as instanciados que el

subt�ermino seleccionado.

Ahora, por un argumento similar al empleado en la demostraci�on del Lema 6.3.12,

resulta inmediato que, dado que existe la derivaci�on:

= ( = )

;

u

n

u

j

0 0

0

R f g f g 6�

h i h i

6.3. CORRECCI

ON Y COMPLETITUD DE LA EP

� mgu t s# mgu s s# fail

t z; � C; t � z � ; ��

s y

� � V ar t

139

en , y se cumple que = ( = ) = ( = ) , entonces es

posible tambi�en construir la derivaci�on:

= ( [ ] = )

usando las mismas reglas y en el mismo orden que en la derivaci�on para ( = ) (sobre

las posiciones correspondientes), de forma que = [ ( )].

El Teorema 6.3.15 y el Teorema 6.3.20 nos han permitido establecer, de forma

precisa, la relaci�on existente entre un programa y una EP del mismo. Sin embargo,

dichos teoremas no proporcionan ninguna informaci�on acerca de c�omo debe reali-

zarse en la pr�actica la EP de un programa, ni c�omo pueden garantizarse, a trav�es

de un proceso autom�atico, las condiciones de cierre e independencia requeridas. En

el siguiente cap��tulo, presentamos un algoritmo gen�erico para la especializaci�on de

programas l�ogico-funcionales que da respuesta a estas cuestiones.

Cap��tulo 7

Un Marco General para la EP

de Programas

narrowing

homeomorphic embedding ordering

narrowing

Este �ultimo cap��tulo est�a dedicado a la formalizaci�on de un m�etodo gen�erico y au-

tom�atico para la EP de programas l�ogico-funcionales. El esquema que presentamos

sigue las l��neas generales del marco para asegurar la terminaci�on global de la deduc-

ci�on parcial, formulado por Martens y Gallagher en [MG95]. Nuestro algoritmo es

param�etrico respecto a la relaci�on de que construye los �arboles de b�usque-

da, una regla de desplegado, que determina c�omo y cu�ando detener la construcci�on

de los �arboles, y un operador de abstracci�on, que asegura que el conjunto de t�ermi-

nos obtenido durante la EP es �nito (lo cual garantiza la terminaci�on del proceso)

mientras a�un se consigue un nivel adecuado de especializaci�on.

Para el algoritmo gen�erico, y para todas sus instancias, demostramos la propie-

dad de cierre del programa parcialmente evaluado. En cambio, la terminaci�on del

proceso depende de la elecci�on realizada para la regla de desplegado y para el opera-

dor de abstracci�on. Presentamos una instancia del m�etodo que se basa en el uso de

una extensi�on del orden de subsumci�on est�andar (

[DJ90]) para controlar la expansi�on de los �arboles, junto con el uso del operador de

\generalizaci�on m�as especi�ca" [LMM88] para realizar la operaci�on de abstracci�on.

De esta forma, disponemos de una instancia del algoritmo que, mediante una estra-

tegia simple pero efectiva, garantiza la terminaci�on del proceso y es independiente de

la estrategia de empleada para construir los �arboles de b�usqueda.

La organizaci�on del cap��tulo es la siguiente. En la Secci�on 7.1 introducimos la

idea intuitiva del m�etodo, que se presenta formalmente en la Secci�on 7.2. En primer

lugar, formulamos una relaci�on de transici�on entre con�guraciones que representa el

n�ucleo del algoritmo gen�erico de EP. A continuaci�on demostramos que, si el operador

de abstracci�on propaga correctamente la informaci�on de cierre, es posible establecer,

141

0

0

0

0 0

0

0

0

R

R

R R

R

R R

R [f g

7.1 Introducci�on

g g

S g

S S

S

S S

S

S S

S S

g S

S

narrowing

narrowing

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS142

de manera gen�erica, el cierre del programa resultante respecto al conjunto de t�ermi-

nos evaluados parcialmente. En la Secci�on 7.3, presentamos una instancia particular

del m�etodo que garantiza la terminaci�on de la EP, siendo a�un independiente de la

estrategia de empleada. Posteriormente, en la Secci�on 7.4, se trata el pro-

blema de garantizar (de forma autom�atica) la independencia del conjunto de t�erminos

parcialmente evaluado, y se esboza un procedimiento de renombramiento para el pro-

grama especializado. Ilustramos nuestro m�etodo con varios ejemplos representativos

que consiguen: especializaci�on (en particular, la generaci�on de un programa para el

emparejamiento de patrones e�ciente) y eliminaci�on de estructuras de datos interme-

dias. Por �ultimo, en la Secci�on 7.5, mostramos que nuestro m�etodo pasa el test KMP,

es decir, el programa que resulta de especializar un programa ine�ciente de empare-

jamiento de patrones con respecto a un patr�on �jo, posee la e�ciencia del algoritmo

de Knuth, Morris y Pratt [KMP77] que construye un aut�omata determinista.

Presentamos en primer lugar una descripci�on informal, en el estilo de [Gal93], del

procedimiento de EP que formalizaremos en la Secci�on 7.2, con la idea de introducir

los principales problemas que se plantean al intentar la automatizaci�on. El procedi-

miento a seguir puede formularse informalmente como sigue. Dado un programa

y un objetivo ecuacional , una EP de con respecto a se computa siguiendo los

siguientes pasos:

1. Inicializar el conjunto con los t�erminos que aparecen en el objetivo .

2. Actualizar el conjunto con los t�erminos de .

3. Computar una EP de en .

4. Formar un nuevo conjunto con los t�erminos de y los t�erminos de que

no son -cerrados.

5. Repetir los pasos 2 4 hasta que se cumpla = .

Asumiendo que el procedimiento anterior termina, �este computa un conjunto de t�ermi-

nos y un conjunto de reglas (la EP de con respecto a ) tales que se veri�ca

la condici�on de cierre para con respecto a . N�otese que, siguiendo el marco

de [MG95], no consideramos en el algoritmo la cuestion de la independencia del con-

junto . Esta se puede conseguir mediante alg�un tipo de t�ecnica de renombramiento

posterior (ver e.g. [BL90, BH93] para el caso de programas l�ogicos) que depende de

la estrategia de utilizada, tal y como comentamos en la Secci�on 7.4. El

siguiente ejemplo ilustra el m�etodo.

Ejemplo 27

f g f g f gf g fgf g

0

0

y=x s s z=s z=y=x s y=x

7.1. INTRODUCCI

ON

+ ( (0)) (0) 0+ (0) + 0

0

1

0

1

1

2

1

R

!

!

f g

R f ! g

f g

R

R f ! ! g

f g R

R

!

!

!

R

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

x s s y

true s x s y

x s y

true s x y

x y

true x y

x s s y x s y x y

x x

x s z s x z

x s s y

S x s s

x s s s x s :

x s S

S x s s ; x s x s y

S

x s s s x s ; x s s x :

x S

S x s s ; x s ; x S

x s s s x s

x s s x

x x

S

t

S t S

143

+ ( (0)) =

( + (0)) =

+ (0) =

( + 0) =

+ 0 =

=

(a) (b) (c)

( + ( (0)) = ) ( + (0) = ) ( + 0 = )

+ 0

+ ( ) ( + )

( + ( (0)) = )

= + ( (0))

= + ( (0)) ( + (0))

+ (0)

= + ( (0)) + (0) ( + (0) = )

= + ( (0)) ( + (0)) + (0) ( + 0)

+ 0

= + ( (0)) + (0) + 0

+ ( (0)) ( + (0))

+ (0) ( + 0)

+ 0

Es interesante destacar que, de la misma forma que el hecho de que sea una

instancia de alg�un t�ermino en no garantiza que sea -cerrado (ver Ejemplo 21),

la completitud tampoco se asegura para instancias cualesquiera del objetivo inicial,

contrariamente a lo que ocurre en programaci�on l�ogica. El siguiente ejemplo ilustra

este punto.

Figura 7.1: Arboles parciales para , , y .

Consideremos de nuevo el programa del Ejemplo 18:

y el objetivo inicial . Consideramos �arboles de b�usqueda (parciales)

muy simples, construidos por derivaciones \un paso" a partir del objetivo inicial.

Partiendo del conjunto , construimos el �arbol de la Figura 7.1 (a)

y extraemos los resultantes asociados, derivando el programa:

Ahora, dado que el t�ermino no es -cerrado, formamos el nuevo conjunto

. El �arbol correspondiente al objetivo se

puede ver en la Figura 7.1 (b). Entonces, la EP de con respecto a es el programa

Por �ultimo, dado que el t�ermino no es -cerrado, obtenemos el conjunto de

t�erminos , de forma que la EP de en es el

siguiente programa especializado :

Dado que todos los t�erminos en son -cerrados, el algoritmo concluye.

0

0

0

R R

R f g

R

Ejemplo 28 g S

g w s s y g S

� w=s z ; y=s s s z

S

S

S

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

Consideremos que , , y son los de�nidos en el Ejemplo 27.

El objetivo , que es instancia de pero no es -cerrado,

tiene una refutaci�on en con respuesta computada ,

mientras que esta respuesta no puede obtenerse usando las reglas de .

narrowing

144

(0 + ) + ( (0)) =

= ( ) ( ( (0 + )))

Hay dos cuestiones involucradas en la correcci�on de un procedimiento de EP: ter-

minaci�on {dado un objetivo de entrada, la ejecuci�on debe alcanzar un estado en el

que no hay posibilidad de continuar{ y correcci�on parcial {si la ejecuci�on termina,

entonces la sem�antica operacional con respecto al programa especializado y con res-

pecto al programa original debe coincidir{. Disponer de un mecanismo de control

autom�atico para realizar el proceso de EP es un punto crucial en el desarrollo de un

sistema real para la especializaci�on de programas.

Un evaluador parcial puede entrar en ciclo de dos formas: por entrar en un proceso

in�nito de desplegado de una llamada, o bien por crear in�nitas de�niciones especia-

lizadas. Siguiendo la aproximaci�on de [MG95], diferenciamos dos niveles en el control

de la terminaci�on del proceso:

El primer nivel, se corresponde con la construcci�on de los �arboles de

que generan las evaluaciones parciales para los t�erminos individuales que for-

man el conjunto . Habitualmente, nos referiremos a las cuestiones de control

involucradas en este proceso como el \control local" de la EP.

El segundo nivel, el as�� llamado \control global" de la EP, hace referencia a las

decisiones acerca de qu�e t�erminos deben ser considerados para ser parcialmente

evaluados. En este nivel, se debe garantizar que se alcanza la condici�on de cierre,

pero manteniendo un grado de especializaci�on apropiado. Como hemos visto,

para alcanzar la condici�on de cierre suele ser necesario aumentar el conjunto

de t�erminos que aparecen en el objetivo inicial. De esta forma, el control

de la terminaci�on global se puede ver como el proceso de garantizar que dicho

conjunto se mantiene �nito. Para ello, generalmente se necesita hacer uso de

un operador de abstracci�on que permita \simpli�car" algunos de los t�erminos

que se introducen.

En la pr�actica, los dos niveles de terminaci�on suelen presentarse combinados, en

el sentido de que las decisiones tomadas en un nivel in uyen en el otro. Sin embargo,

conceptualmente (y, a menudo, tambi�en en la pr�actica), resulta interesante tratar

ambos niveles de manera independiente. Tanto a nivel local como a nivel global,

debemos guiar el proceso de EP de forma que el proceso completo obtenga la m�axima

ganancia en e�ciencia (i.e. la mayor especializaci�on posible). Pero, a la vez, resulta

fundamental garantizar la terminaci�on del proceso a ambos niveles, de manera que la

EP siempre termine computando un programa especializado correcto.

t

t

S

msg

msg

7.2 Un Esquema Gen�erico para la EP

7.2. UN ESQUEMA GEN

ERICO PARA LA EP

narrowing

ge-

neralizaci�on m�as especi�ca

narrowing

polivarianza

relaci�on de narrowing

145

La distinci�on entre el control local y global de nuestra aproximaci�on contrasta

con los m�etodos de transformaci�on de�nidos en [GS94, SG95, Tur86] para programas

funcionales, donde estas dos cuestiones no se distinguen expl��citamente. En dichos

trabajos, s�olo se tiene en cuenta el control global, construyendo grandes estructuras de

evaluaci�on (grafos) que equivalen de alguna manera a nuestros �arboles de

locales, junto con las con�guraciones del marco de�nido por Martens y Gallagher

[MG95] para asegurar la terminaci�on global de la deducci�on parcial. Cada llamada

en el grafo produce una funci�on residual, cuyo cuerpo se deriva de los descendientes

de en el grafo. En nuestro caso, al igual que en la deducci�on parcial, el cuerpo de

cada regla residual se construye usando la ra��z y el nodo �nal de una derivaci�on, lo

cual resulta en un n�umero menor de reglas.

Respecto a la terminaci�on local, algunas de las principales herramientas usadas

para controlar la terminaci�on del desplegado en la construcci�on de los �arboles de

b�usqueda son: l��mites de profundidad en la expansi�on del �arbol, grafos de detecci�on

de bucles, y el uso de �ordenes bien fundados [BdSM92]. Respecto a la terminaci�on

global, una primera posibilidad ser��a imponer simplemente un l��mite al n�umero de

t�erminos que puede contener el conjunto . Sin embargo, �esta no parece la soluci�on

m�as adecuada (adem�as, ser��a muy complejo asegurar la condici�on de cierre). En la

Secci�on 7.3.2, de�niremos un operador de abstracci�on basado en la noci�on de

( , \most speci�c generalization" [LMM88]), que nos

permitir�a disponer de un m�etodo m�as racional para asegurar la terminaci�on del pro-

ceso.

En la siguiente secci�on, formalizamos nuestro esquema gen�erico para la EP de

programas l�ogico-funcionales y establecemos las propiedades del mismo. Asumimos

que existe una estrategia de desplegado apropiada que decide qu�e t�erminos desplegar

y c�omo detener el desplegado, y relegamos as�� todas las cuestiones relacionadas con

la terminaci�on del proceso a la Secci�on 7.3.

En esta secci�on, formalizamos un algoritmo general para la EP de programas l�ogico-

funcionales basado en , que siempre termina (para instancias apropiadas) y

que es capaz de soportar un nivel adecuado de {es decir, la posibilidad

de producir varias especializaciones independientes para una llamada a funci�on dada,

usando distintos datos de entrada{, pese al empleo del operador de generalizaci�on

(cuyo uso suele venir acompa~nado de una cierta p�erdida de precisi�on). Nuestro

algoritmo es gen�erico con respecto a los siguientes par�ametros:

1. La , con la que se construyen los �arboles de b�usqueda

parciales.

'

'

1

;

;

1

P P

;

;

;

;

narrowing

'

'

' '

'

'

'

'

' '

'

R

R

R

R

2

R R

R

7�! 7�! � �

2

De�nici�on 7.2.1 (regla de desplegado )

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

U U

U U

s

U s; s

S

U s S S

U U S;

S

Conf; Conf Conf

Conf

c S Conf

S S

c S c

Consideramos, en esta secci�on, que los conceptos asociados a la EP introducidos en el cap��tulo

anterior se extienden, de manera natural, al caso de una relaci�on de gen�erico con estrategia

.

regla de desplegado

con�guraciones

operador de abstracci�on

regla de desplegado

narrowing

Una regla de desplegado es una

funci�on que, dado un programa , un t�ermino y una relaci�on de narrowing ,

computa un conjunto �nito de resultantes que constituyen una EP de en

usando .

Si es un conjunto �nito de t�erminos y es un programa, entonces el conjunto

de resultantes obtenidos aplicando a cada t�ermino , se denomina EP de

en usando en s��mbolos .

146

2. La , que determina cu�ando y c�omo terminar la construcci�on

de los �arboles.

3. El dominio de , que determina la cantidad de informaci�on a

considerar (acerca de los t�erminos parcialmente evaluados) en el nivel global del

procedimiento.

4. El , usado para garantizar que el conjunto de t�erminos

obtenidos durante el proceso de EP se mantiene �nito.

Nuestro procedimiento gen�erico est�a inspirado en el marco para asegurar la ter-

minaci�on global de la deducci�on parcial de programas l�ogicos presentado en [MG95],

pero la extensi�on a un contexto l�ogico{funcional no es en absoluto trivial. Introdu-

cimos, en primer lugar, el concepto gen�erico de . Informalmente,

una regla de desplegado (que denotaremos simplemente por , cuando no haya

confusi�on posible), construye �arboles de b�usqueda �nitos (posiblemente incompletos)

usando la relaci�on de y extrae, de �estos, los resultantes asociados a

las derivaciones del �arbol .

( )

( ( ))

Formulamos nuestro m�etodo para computar una EP de un programa con res-

pecto a un conjunto de t�erminos usando , mediante un sistema de transici�on

( ) cuya relaci�on de transici�on formaliza los pasos

de computaci�on. El conjunto de con�guraciones es un par�ametro de la de�ni-

ci�on, de modo que la noci�on de con�guraci�on es un par�ametro a ser precisado en el

proceso de instanciaci�on. Denotamos por [ ] una con�guraci�on gen�erica,

cuya estructura se deja sin especi�car ya que depende del algoritmo de EP espec���co,

pero que debe contener al menos el conjunto de t�erminos . Cuando est�e claro por

el contexto, denotaremos [ ] simplemente por .

'

'

'

n n

0

0

1 1 2 2

1 1 1

Demostraci

on

P

P

0

P

0

0

P

P

P

P

0

0

0

7.2. UN ESQUEMA GEN

ERICO PARA LA EP

7�!

7�!

R R

7�! R

R

7�!

7�!

P R 7�! 7�!

R

R

2 C f g

De�nici�on 7.2.2 (relaci�on de transici�on )

De�nici�on 7.2.3 (comportamiento del c�alculo )

Lema 7.2.4

U S;

c S abstract c S ; terms

abstract c; T

c T

S

c S U

S

c

abstract

c

Conf

; g S abstract c ; terms g c S c S c S :

S

S S

U

t S S S t S

t

depth t

depth t k k > t

depth t k

t c t ; : : : ; t c closed S ; t ; : : : ; t

De�nimos la relaci�on de transi-

ci�on como la menor relaci�on que satisface:

donde la funci�on extiende (de manera apropiada) la con�guraci�on ac-

tual con el conjunto de t�erminos , dando lugar a una nueva con�guraci�on.

Sea la con�guraci�on

\vac��a" del dominio . El comportamiento de la relaci�on de transici�on

viene determinado por la siguiente funci�on:

si y

Si es -cerrado y es -cerrado, entonces es -cerrado.

147

= ( )

[ ] ( [ ] ( ))

( )

Informalmente, en cada paso de computaci�on, el conjunto de t�erminos (alma-

cenados en [ ]) es parcialmente evaluado (usando ). Entonces, los t�erminos que

aparecen en el programa residual que no sean -cerrados, se introducen (apro-

piadamente) en la con�guraci�on , para ser evaluados en la proxima iteraci�on del

algoritmo. Para asegurar la terminaci�on del proceso, la actualizaci�on de las con�-

guraciones se realiza usando un operador de abstracci�on que debe garantizar que el

conjunto de t�erminos se mantiene �nito. De forma similar a [MG95], la aplicaci�on

del operador en cada iteraci�on nos permite ajustar el nivel de polivarianza

deseado, as�� como controlar el progreso hacia la terminaci�on de la EP del programa.

La siguiente de�nici�on formaliza el n�ucleo de nuestro m�etodo de EP.

( ) = ( ( )) [ ] [ ] [ ]

N�otese que el procedimiento de la De�nici�on 7.2.3 no construye un programa

especializado, sino que computa un conjunto de t�erminos parcialmente evaluados .

Sin embargo, el conjunto de t�erminos determina de forma un��voca la EP de

en (usando ).

El siguiente lema es necesario para demostrar la correcci�on del m�etodo, y muestra

que la noci�on de cierre introducida posee una cierta forma de propiedad de transiti-

vidad.

. Realizamos la prueba por inducci�on estructural sobre la profun-

didad del t�ermino .

Si ( ) = 1, el resultado es trivial.

Si ( ) = + 1, 0, y la propiedad se cumple para todo t�ermino tal que

( ) entonces, por la De�nici�on 6.3.2, podemos considerar dos casos:

1. = ( ), , y ( );

2

2

b

b

d

b

b d b b

b b

Teorema 7.2.5

Demostraci

on

j �

j �

0 0

0 0

P

P

0 0

0 0 0 0

P

n

i

V Dom �

V Dom �

'

'

i i

i

i

j j

2 F 2

2 C

2

2

[

[

R

) [

P R

R [ f g R R

P R

7�! 7�!

R R R

2 R R

7�!

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

1 1 1 1 1

1 1

2 2

1 1

1 2 2 2 2 2 1

2 2 2 2 1 1 1

2 2 1

1 1 2

1 2 1 2 1 1�( ( ))

2 1 1�( ( ))

1 1 2 2 1 2

0

1 1 +1 +1

+1

+1

Sea un programa y un objetivo ecuacional. Sea ` ' un

operador de abstracci�on particular que satisface la siguiente condici�on:

es -cerrado.

Entonces, si la funci�on termina computando un conjunto de t�erminos , se

cumple que es -cerrado, donde .

narrowing

t f t ; : : : ; t f s S : s � t

closed S ; terms �

i ; : : : ; n t S t S

c

s S

s S s S : s � s

closed S ; terms � s � � s � t

closed S ; terms � �

closed S ; terms � closed S

terms � terms � � terms � � �

terms � � terms �

g abstract

abstract c S ; S c S S S S

; g S

g S U S;

; g

S

abstract c ; terms g c S c S c S :

U S; c S abstract c S ; terms

abstract

s terms S S

i ; : : : ; n c S c S

g S i

i

i > g S

abstract j ; : : : ; i S S

148

2. = ( ), , existe un t�ermino = y se veri�ca

( ( ).

Consideremos el primer caso. Por la hip�otesis de inducci�on se cumple que, para todo

= 1 , el t�ermino es -cerrado. Por tanto, por la De�nici�on 6.3.2, es -

cerrado, ya que .

Consideremos el segundo caso. Ya que entonces, por las hip�otesis del le-

ma, es -cerrado y, por tanto, existe un t�ermino = y el pre-

dicado ( ( )) es cierto. Entonces, = = . Finalmen-

te, debemos demostrar que ( ( )) se eval�ua a cierto. Puesto que

( ( )) es cierto entonces, por la hip�otesis de inducci�on, ( ,

( )) tambi�en lo es. Ahora, ya que ( ) = ( ) =

( ) ( ), se cumple el resultado enunciado.

El siguiente teorema establece que el programa transformado es cerrado respecto al

conjunto de t�erminos parcialmente evaluado, siempre que el operador de abstracci�on

considerado propague correctamente la informaci�on de cierre.

( [ ] ) = [ ] = ( )

( )

= ( )

. Consideremos que ( ) termina computando el conjunto de

t�erminos . Por la De�nici�on 7.2.3, se cumple:

( ( )) [ ] y [ ] [ ]

Por la De�nici�on 7.2.2, = ( ) y [ ] = ( [ ] ( )). Entonces,

por la condici�on sobre el operador impuesta en el teorema, todo t�ermino

( ) es -cerrado y, por tanto, es -cerrado tambi�en (por la De�nici�on

6.3.2).

Mostramos ahora que, para todo = 0 , si [ ] [ ], entonces el

objetivo es -cerrado. Realizamos la prueba por inducci�on sobre la longitud de

la computaci�on. El caso base = 0 es trivial, as�� que consideramos el caso inductivo

0. Por la hip�otesis de inducci�on, es -cerrado. Por la condici�on impuesta sobre

el operador , para todo = 1 , se cumple que es -cerrado. Por

tanto, el resultado se sigue directamente aplicando el Lema 7.2.4.

El teorema anterior garantiza, en el caso de que la especializaci�on de programas

est�e basada en condicional, la correcci�on parcial del algoritmo (ya que

1 1m n

i i

j

E

E

E

E

E

E

E

7.3 Terminaci�on

7.3. TERMINACI

ON

[

2 � �

� �

� �

pp

� �

ppp p p

p p

De�nici�on 7.3.1 (relaci�on de subsumci�on)

� V x y

x; y V s f s ; : : : ; s g t ; : : : ; t t

f g m n s t i ; : : : ; n

s t j j n

s t s t s

t

u u v w u u u v :

narrowing

narrowing

homeomorphic embedding ordering

La relaci�on de subsumci�on

sobre t�erminos de se de�ne como la menor relaci�on que satisface:

para todo , y , si y s�olo si:

1. (con ) y para todo , o bien

2. , para alg�un , .

149

se satisfacen las condiciones del Teorema 6.3.15). En el caso de otras estrategias

de , nuestras investigaciones han constatado que la condici�on de cierre es

necesaria, pero no su�ciente, para garantizar la completitud de la transformaci�on

[AFJV96a, AFJV96b].

La De�nici�on 7.2.3 representa s�olo el esquema de un m�etodo completo de EP para

lenguajes l�ogico-funcionales. Las evaluaciones parciales resultantes pueden ser a�un

optimizadas eliminando s��mbolos de funci�on redundantes y repeticiones de variables

innecesarias, adaptando, por ejemplo, las t�ecnicas est�andar presentadas en [BH93,

BL90, Gal93, GB90]. En la siguiente secci�on abordamos el problema de garantizar la

terminaci�on (local y global) del algoritmo de EP.

En esta secci�on, instanciamos algunos de los par�ametros de nuestro m�etodo de EP

de programas l�ogico-funcionales, introducido en la De�nici�on 7.2.3, para garantizar la

terminaci�on del proceso. Para ello, introducimos una regla de desplegado, un dominio

de con�guraciones y un operador de abstracci�on particulares, con los que demostramos

la terminaci�on del algoritmo presentado en la De�nici�on 7.2.3. Por supuesto, otras

elecciones ser��an tambi�en posibles, como veremos en algunos ejemplos posteriores. La

estrategia de empleada se mantiene, en cualquier caso, como par�ametro de

la construcci�on.

Las herramientas empleadas habitualmente para demostrar propiedades de termi-

naci�on, suelen estar basadas en el uso de algun tipo de orden. Intuitivamente, utili-

zamos un cuasi-orden bien fundado seg�un el cual un t�ermino que es \sint�acticamente

m�as simple" que otro, se considera m�as peque~no. La siguiente de�nici�on extiende el

orden de subsumci�on est�andar ( [DJ90]) a t�erminos

que (posiblemente) contienen variables.

[SG95]

(� )

( ) ( )

= 1

1

Intuitivamente, est�a subsumido por , i.e. , si se puede obtener a partir

de por eliminaci�on de operadores. Por ejemplo,

( ( + )) ( (( + ) ( + )))

El siguiente teorema, una variante del Teorema de Kruskal [Kru60], es la base para

utilizar dicho orden en el estudio de las propiedades de terminaci�on.

1 2

E

E

E �

i j

� �

2 [ � �

[ f g �

2 [

Demostraci

on

7.3.1 Terminaci�on Local

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

Teorema 7.3.2

De�nici�on 7.3.3 (t�erminos comparables)

t ; t ; : : :

i; j i < j

t t

� V

s; t � V s t s� t�

� �

s; t � V

s t comparable s; t

s t

Para toda secuencia in�nita de t�erminos (constru��da a par-

tir de un n�umero �nito de operadores), existen un par de naturales tal que

y .

narro-

wing

narrowing

ad-

hoc

narrowing

redex

narrowing redexes

redex redex

Dados dos t�erminos ,

decimos que y son comparables, y lo denotamos por , si los s��mbolos

de funci�on m�as externos de y coinciden.

derivaci�on admisible

150

. Sea la sustituci�on que asigna a todas las variables de un

s��mbolo de constante libre . Es inmediato comprobar que, para todo par de t�erminos

(� ), sii , donde es el orden de subsumci�on est�andar sobre

el conjunto de t�erminos b�asicos (� ). Entonces, ya que es un cuasi-orden,

tambi�en lo es , y el resultado se sigue a partir del Teorema de Kruskal.

En los dos siguientes apartados estudiamos, de manera independiente, los pro-

blemas de terminaci�on presentes en el m�etodo de EP. La relaci�on de subsumci�on

ser�a usada, en la Secci�on 7.3.1, para asegurar la terminaci�on de los �arboles de

y, en la Secci�on 7.3.2, para asegurar que el conjunto de t�erminos parcialmente

evaluados permanece �nito.

En esta secci�on, presentamos una estrategia de desplegado que intenta maximizar la

expansi�on del �arbol de , pero manteniendo siempre la terminaci�on (local) del

proceso. Nuestra estrategia es simple, pero menos dr�astica que imponer un l��mite

a la profundidad del �arbol. El m�etodo se inspira en el trabajo de S�rensen y Gl�uck

[SG95], en el que se utiliza un orden de subsumci�on para garantizar la terminaci�on

de la supercompilaci�on positiva.

El siguiente criterio hace uso de la relaci�on de subsumci�on de una forma construc-

tiva para producir �arboles de �nitos. Informalmente, para evitar secuencias

in�nitas de llamadas divergentes, comparamos el seleccionado por la relaci�on

de con los seleccionados en los objetivos anteriores de la misma

derivaci�on. Cuando el �ultimo de la derivaci�on subsume a un anterior de

la misma derivaci�on, detenemos la expasi�on de dicha rama del �arbol de b�usqueda.

En principio, la comparaci�on citada anteriormente puede ser innecesariamente

fuerte. Partiendo del hecho de que existe un n�umero �nito de operadores en �,

podemos limitar la comparaci�on s�olo a ciertos t�erminos, tal y como se formaliza en la

siguiente de�nici�on.

(� )

( )

A continuaci�on introducimos la noci�on auxiliar de .

5

E

E

E

E

E

E

E

E

E

E

� �

� � � �

� �

; ;

; ; ;

; ;

;

;

;

n n

j j

n n n n

n n

i i

j j j j

� �

� �

j j j j

Demostraci

on

0 0 1 1

0 0 2 2 1 1

0 0 2 2

7.3. TERMINACI

ON

0

0 0

[ ] [ ]

0

0 0

0 0 0

[ ] [ ]

1 1

[ ]

0 0

[ ] [ ]

1 1

0

0

0

0

0

D

R D

h i h i

, 8 8 2 8 �

)

R

R R

R f h i h i h i j

h i h i ^

� > _ _

9 2 9 ^ g

R

R R[f g

R

R [ f g

R

D 2 R

D 2 R

'

u ;r

'

u ;r

n n

i

ju

iu

ju

iu

'

'

'

'

u ;r

'

u ;r

n n '

u ;r

n n

'

u ;r

'

u ;r

n n

n n

n iu

nu

iu

nu

'

'

'

'

'

'

'

De�nici�on 7.3.4 (derivaci�on admisible)

De�nici�on 7.3.5 (�arbol de narrowing sin subsumciones )

Teorema 7.3.6 (terminaci�on local)

g

admissible g ; � : : : g ; �

i ; : : : ; n; u ' g ; j ; : : : ; i :

comparable g ; g g g :

g

� g ; g

� g ; g ; � : : : g ; � g ; �

admissible g ; � : : : g ; �

g g

u ' g ; i < n: comparable g ; g g g :

g � g; g

� g ;

g

g

� g ;

� g ;

Sea una derivaci�on de narrowing para

en . Decimos que es admisible sii no contiene un par de redexes comparables

incluidos en la relaci�on . Formalmente,

narrowing

Sea un progra-

ma y un objetivo ecuacional. De�nimos el �arbol de narrowing sin subsumciones

, asociado a y , como sigue:

es una hoja de fallo

redex

redexes redex

redex

narrowing

narrowing

Dado un programa y un objetivo ecuacio-

nal , es un �arbol de narrowing �nito (posiblemente incompleto) para

usando .

narrowing

151

( )

= 1 ( ) = 0 1

( ( ) )

Ahora, haciendo uso de la noci�on de derivaci�on admisible, introducimos un tipo

particular de �arboles de (posiblemente) incompletos, que garantizan la

terminaci�on de todas las derivaciones.

( )

( ) =

( )

(

( ( ) ( ) ))

De acuerdo a la de�nici�on anterior, las derivaciones se detienen cuando �estas tie-

nen �exito, fallan, o alg�un del �ultimo objetivo desplegado subsume alguno de los

anteriores de la misma derivaci�on. Intuitivamente, si se explota un \ma-

yor" (con respecto al orden ) que un seleccionado previamente (de la misma

derivaci�on), no podemos garantizar que el riesgo de generar una derivaci�on in�nita sea

nulo y, por tanto, detenemos la derivaci�on evitando as�� el peligro. Este es un criterio

\seguro", tal y como se establece en el siguiente teorema, y a�un proporciona especia-

lizaciones signi�cativas. N�otese que nuestro m�etodo para construir �arboles �nitos es

independiente de la estrategia de empleada. Obviamente, para estrategias

re�nadas, este criterio se podr��a combinar con otros que exploten las caracter��sticas

particulares de la estrategia de aplicada.

( )

. En primer lugar, podemos a�rmar que ( ) es un �arbol de

(posiblemente incompleto) para usando , puesto que todas y

cada una de las derivaciones (posiblemente incompletas) para en usando

son consideradas.

Ahora, debemos demostrar que toda derivaci�on ( ) es �nita. Demostra-

mos el resultado por reducci�on al absurdo. Sea ( ) una derivaci�on in�nita.

2

0 1

E �

E

0 1

=1

2

;

;

;

;

;

;

Ejemplo 29

j j

0 0 0 0

0 0 0 0

0

S

D

F f g

S

S S

S S

S � �

S

!

!

h i h i

h i

h f gi

h i h i

h i

h f gi

u u

i

n

i

i

i

i

m

m

s s

s s s s

s s

s s s s

s s

s

s s

s

s s s s

s s

s

s s

s

s s

s

s

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

Siguiendo la notaci�on habitual en los programas funcionales, usamos `nil' y `:' como constructores

de listas.

g ; g ; : : :

f

n

f i ; : : : ; n

m n

append=

append nil; y y

append x x ; y x append x ; y

append x ; y y

append x ; y y; � append x ; y y; �

append x ; y y; �

x append x ; y y; x =x x

: : :

append x ; y y; � append x ; y y; �

append x ; y y; �

x append x ; y y; x =x x

append x ; y append x ; y :

redexes

narrowing

Consideremos el cl�asico programa para la concatenaci�on de

dos listas :

y el objetivo inicial . Entonces, existe la siguiente rama

in�nita en el �arbol de narrowing condicional para el objetivo:

Sin embargo, en el �arbol de narrowing sin subsumciones (y de acuerdo con la De�-

nici�on 7.3.5), el desplegado de esta rama se detiene en el cuarto objetivo, ya que la

siguiente subderivaci�on:

es admisible, y el objetivo contiene un

redex que subsume al redex seleccionado en el paso anterior:

152

Esto nos permite construir una secuencia in�nita de t�erminos for-

mada por los seleccionados en cada paso de la derivaci�on . Consideremos

ahora que el conjunto de s��mbolos de funci�on de�nidos es = . Entonces,

podemos dividir la secuencia como m�aximo en subsecuencias (posiblemente in�-

nitas) de t�erminos, cada una de las cuales est�a formada por los t�erminos de cuyo

s��mbolo de funci�on m�as externo es , = 1 . As��, todos los t�erminos en cada

subsecuencia son comparables. Puesto que la secuencia es in�nita y el n�umero

de s��mbolos de funci�on de�nidos es �nito, entonces al menos una de las subsecuencias

es tambi�en in�nita. Sin p�erdida de generalidad, consideramos que , 1

es una subsecuencia in�nita. Por el Teorema 7.3.2, contiene dos t�erminos en la

relaci�on , lo que contradice la hip�otesis de partida.

Veamos ahora un ejemplo que ilustra la De�nici�on 7.3.5, mostrando de qu�e forma

se previenen derivaciones de in�nitas.

2

( )

( : ) : ( )

(1 : 2 : ) =

(1 : 2 : ) = 1 : (2 : ) =

1 : 2 : ( ) =

1 : 2 : : ( ) = :

(1 : 2 : ) = 1 : (2 : ) =

1 : 2 : ( ) =

1 : 2 : : ( ) = :

( ) ( )

Una vez que disponemos de un m�etodo autom�atico para generar �arboles de b�usque-

da �nitos, la regla de desplegado correspondiente se puede de�nir como sigue.

E

E E

1

1

1

� �

m m

n n

n

1 1

1 1

1

8

>

>

<

>

>

:

'

' '

n

n

' n

si �o

si

si

si

��

��

R R R 62

[

[

2

R

f g R

� ; � 2

� f g

f g � 2 C

� 2 F

( ) =

( ( ) )

( ) ( )

( ) ( )

7.3. TERMINACI

ON

7.3.2 Terminaci�on Global

De�nici�on 7.3.7 (regla de desplegado )

De�nici�on 7.3.8 (con�guraciones )

De�nici�on 7.3.9 (operador )

abstract q; T

q T T x V

abstract : : : abstract q; t ; : : : ; t T t ; : : : ; t

abstract q; t ; : : : ; t T c t ; : : : ; t ; c

abs call q; T T f t ; : : : ; t ; f

U

U s; s � s y; y V ar s

Conf

� V

PE Conf � V

nil ;

PE t ; : : : ; t Conf

PE nil

q t ; : : : ; t

q

terms U t ; : : : ; t ;

abstract q; T

abstract q PE T

abstract

De�nimos como la EP de en usando , .

narrowing

Sea el monoide li-

bre est�andar sobre el conjunto de t�erminos, donde la secuencia vac��a de t�erminos

se denota por \ " y la operaci�on de concatenaci�on se denota por \ ". De�nimos

una con�guraci�on como una secuencia de t�erminos . La

con�guraci�on vac��a se denota por .

Sea una con�guraci�on y una ex-

presi�on (un t�ermino o un conjunto de t�erminos). De�nimos inductivamente la funci�on

como sigue:

153

( ) ( = ) ( )

Como ya comentamos, la no terminaci�on del procedimiento de EP puede estar

provocada, no s�olo por la construcci�on de un �arbol de in�nito, sino tam-

bi�en por no alcanzar nunca la condici�on de cierre (y, por tanto, generar un conjunto

in�nito de t�erminos parcialmente evaluados). En la siguiente secci�on abordamos dicho

problema.

La terminaci�on del algoritmo presentado en la De�nici�on 7.2.3 puede garantizarse

de�niendo un dominio de con�guraciones y un operador de abstracci�on apropiados.

En esta secci�on, introducimos un dominio de con�guraciones simple, compuesto por

secuencias de t�erminos, y un operador de abstracci�on que manipula dichas secuencias

de forma que la terminaci�on del proceso est�a garantizada. Posteriormente, mostrare-

mos que esta instancia parcial del algoritmo gen�erico asegura, de una forma sencilla,

la terminaci�on global sin incurrir en una p�erdida importante de especializaci�on. En

[MG95] se puede encontrar un dominio de con�guraciones m�as so�sticado, basado en

el uso �arboles cuyos nodos son los �atomos parcialmente evaluados, con el que se puede

conseguir, en algunos casos, mejorar el nivel de especializaci�on del programa residual.

Introducimos ahora el dominio de con�guraciones , formado por secuencias

(ordenadas) de t�erminos pertenecientes a (� ).

= (� )

( )

Tras cada iteraci�on del algoritmo, la con�guraci�on actual ( ) debe ser

transformada para \cubrir" los nuevos t�erminos que resultan de la EP de en , es

decir, ( ( )). Esta transformaci�on se realiza usando el siguiente

operador de abstracci�on ( ).

n1

E

E

E

0

0

� �

f g

� 0

0

� 0 0

0

0

1

1

=1

=1

1 2

1 1 +1

1 2

6 9 2 f g

9

f g h f gi

f g [ [

si

y

si

y

si

no es una instancia de

y

n i

i

n

j ;:::;n

j

i i

j ;:::;n

j

i i

i

i i n

8

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

<

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

:

b

b b

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

( ) =

( ) =

( ) 1 ( ( )

)

(( ) ) = max ( ( ))

= = ( )

( ) = max ( ( ))

( ) =

( ))

= ( )

con y , donde la funci�on (para un t�ermino T) se de�ne de

la forma:

donde .

m n abs call q; T

q q ; : : : ; q

abstract q; t q

t

t

t

t

t q t

q

t q t

q

t t q

msg t; t

msg

abstract

abs call nil; T T

abs call q; T

q ; : : : ; q ; T i ; : : : ; n : comparable q ; T

q T

abstract q ; : : : ; q ; T i comparable q ; T ;

q T; �: q � T; T terms �

abstract q ; T i comparable q ; T ;

q T; T q ;

msg q ; T w; � ; � ;

q q ; : : : ; q ; q ; : : : ; q ;

T w terms � �

154

1 0 ( )

( )

Informalmente, la funci�on ( ) extiende la con�guraci�on actual con un

nuevo t�ermino de la siguiente forma:

Si es una variable o una constante, simplemente se ignora.

Si es un t�ermino encabezado por un s��mbolo constructor, se realiza una llamada

recursiva para incorporar sus argumentos.

Si es un t�ermino encabezado por un s��mbolo de funci�on de�nido, consideramos

los siguientes casos:

1. no subsume a ning�un t�ermino comparable de . En este caso, se a~nade

directamente a , ya que incrementar�a (posiblemente) la especializaci�on

del programa residual, sin riesgo para la terminaci�on.

2. s�� subsume a alg�un t�ermino comparable de . En este caso, si est�a (par-

cialmente) cerrado por los t�erminos de , se realiza una llamada recursiva

para a~nadir s�olo aquellos subt�erminos que no est�en cerrados.

3. Por �ultimo, si subsume a un cierto t�ermino de la con�guraci�on y no

es instancia del mismo, entonces computamos una generalizaci�on de ambos

t�erminos ( ), y realizamos una llamada recursiva para a~nadir los

t�erminos de la generalizaci�on.

Queremos hacer notar que la p�erdida de precisi�on causada por el uso del operador

de generalizaci�on es bastante razonable y se compensa con la simplicidad del

m�etodo resultante.

Para garantizar que el algoritmo de la De�nici�on 7.2.3 genera realmente un pro-

grama cerrado, es su�ciente comprobar que el operador satisface la premisa

0

m

m

0 1

0 1

Lema 7.3.10

Demostraci

on

7.3. TERMINACI

ON

0 0 1 1

0 0

0

0 0

0

1

0 0 1 0

1 0 1

( )

0 1

0 1

1 0

0 0

0 1 0

S

S mul

mul mul

mul

n

S mul S

m

m

m mS t ;:::;t

mul

S c t ;:::;tS

m

m

m

p

0

� 0

0

0

0 0 0 0 0

0 0 0

0 � �

0

0

� � � �

0

0 � �

� � � �

[f g

[f g

0

0 � �

� � �

� �

[

M

M f j 2 g

M M

M M , 9 � M 9 � M M M � [

8 2 9 2

; ;

[ f g f g

M M

[

2 C

[ f g

[f g

[ [ f g

2 C

[ f g

f g [ f g M

M M

[ [f g

[ [f g [

2 F � [

f g

Sean con�guraciones y un conjunto de t�erminos. Si

, entonces los t�erminos de est�an cerrados con respecto

a .

q; q PE S

abstract q; S q terms q S

terms q

S S

S

depth s s S <

< IN M IN

IN M IN

< ; <

< X ; X X X

n X: n X : n < n

S q abstract q; S abstract q; q

S S s S s ; : : : ; s S

<

terms q S terms abstract q; S

s c q

abstract q; S abstract q; S s abstract abstract q; S ; s

abstract q; S terms q S

terms q

terms q S s

s c t ; : : : ; t c m > q abstract q; S abstract q;

S s abstract abstract q; S ; c t ; : : : ; t abstract abstract q; S ;

t ; : : : ; t abstract q; S t ; : : : ; t <

terms q S t ; : : : ; t terms q

terms q S c t ; : : : ; t terms q S

s f t ; : : : ; t f m q abstract q; S abstract q; S

s abstract abstract q; S ; s abs call abstract q; S ; s

abstract q; S q ; : : : ; q p abstract q; S nil

155

del Teorema 7.2.5, i.e. propaga correctamente la informaci�on sobre el cierre de los

t�erminos.

( ) = ( )

( )

. Probamos el lema por inducci�on bien fundada sobre el conjun-

to . De�nimos la complejidad de como el multiconjunto �nito de n�umeros

naturales correspondiente a la profundidad de los elementos de . Formalmente,

= ( ) . Consideramos el orden total bien fundado so-

bre complejidades extendiendo el orden bien fundado sobre al conjunto ( )

de multiconjuntos �nitos sobre . El conjunto ( ) est�a bien fundado bajo el

orden [DJ90]. Sean complejidades, de�nimos el orden como si-

gue: tales que = ( ) y

.

Si = , entonces = ( ) = ( ) = y la prueba est�a termi-

nada.

Si = , = , y la propiedad se cumple para todo tal

que entonces, por la De�nici�on 7.3.9 y el Lema 7.2.4, los t�erminos de

( ) est�an cerrados con respecto a ( ( )). Consideramos

a continuaci�on tres casos.

Si es una variable o una constante entonces, por la De�nici�on 7.3.9, =

( ) = ( ) = ( ( ) ) =

( ). Por la hip�otesis de inducci�on, los t�erminos de ( ) est�an

cerrados con respecto a ( ) y, por la De�nici�on 6.3.2, tambi�en lo est�an los

t�erminos de ( ) .

Si = ( ), , 0, entonces = ( ) = (

) = ( ( ) ( )) = ( ( )

) = ( ). Puesto que

= entonces, por la hip�otesis de inducci�on, los t�erminos de

( ) est�an cerrados con respecto a ( ) y, por la De�nici�on

6.3.2, tambi�en lo est�an los t�erminos de ( ) ( ) = ( ) .

Si = ( ), , 0, entonces = ( ) = (

) = ( ( ) ) = ( ( ) ). Asumimos que

( ) es ( ), 1, ya que el caso en el que ( ) = es

E

� 0 0

0

0

p

p i

i

i

i i p

1

1

1 2

1 1 +1

1 2

Demostraci

on

9 2 f g

9 2 f g f g h f gi

f g [ [

1

1

0

1 1 1

0

1

0 0

1

0

1 1

( )

1

1

1 2

0

1 0

1 1

0

0 �

� 0

0

0 �

f g

0

0

� �

P P

� P

� �

8

>

>

>

>

>

>

>

>

>

<

>

>

>

>

>

>

>

>

>

:

b

b b

b

b

b

b

b b

p

p

p p p

p

p

p p i

terms �

muls

p

i

p

i

n n

i i

'

i

Teorema 7.3.11 (terminaci�on global)

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

f g

[f g [

f g

[ [ f g [ f g

f g [ f g

M M

f g [ f g

f g [

f g [ f g

f g

f g [ [

7�! 7�!

7�! P R

R �

1) ( )

2) (( ) ( )) donde 1 =

3) ( ) donde 1 ( ) =

no es una instancia de

( ) y

= ( )

El algoritmo de la De�nici�on 7.2.3 termina cuando se usa el operador sobre

el dominio de con�guraciones .

q ; : : : ; q ; s

abstract q ; : : : ; q ; terms � i ; : : : ; p : q � s:

abstract q ; s i ; : : : ; p : msg q ; s w; � ; �

s q ;

q q ; : : : ; q ; q ; : : : ; q ;

s w terms � � :

abs call q ; : : : ; q ;

s q

abs call

abs call q ; : : : ; q ; s

q abs call abstract q; S ; s

abs call abstract q ; : : : ; q ; s q ; : : : ; q ; s terms q q ; : : : q

s terms q S

q ; : : : ; q

terms q S s terms abstract q; S s

q ; : : : ; q s terms q

q abs call abstract q; S ; s

abs call q ; : : : ; q ; s abstract q ; : : : ; q ; terms � q � s

<

q ; : : : ; q terms � terms q s

q terms �

q ; : : : ; q s terms q

q ; s

w terms � �

abstract Conf

abstract

Conf PE

q : : :

q q ; g q abstract nil; terms g

q abstract q ; terms U terms q ; i

156

inmediato. Entonces, tenemos que demostrar que los t�erminos de (( )

) est�an cerrados con respecto a . Ahora podemos distinguir nuevamente tres casos,

que se corresponden con los tres casos de la funci�on en la De�nici�on 7.3.9,

concretamente: (( ) ) =

El caso 1) es inmediato, ya que = ( ( ) ) =

( (( ) ) = ( ) y, por tanto, ( ) =

. Ahora, por la hip�otesis de inducci�on, los t�erminos de ( ) est�an ce-

rrados con respecto a . Por tanto, por el Lema 7.2.4, los t�erminos de

( ) est�an cerrados con respecto a ( ( )) =

= ( ).

Consideramos ahora el caso 2). Entonces, = ( ( ) ) =

(( ) ) = (( ) ( )), donde = . Puesto

que entonces, por la hip�otesis de inducci�on, los t�erminos de

( ) est�an cerrados con respecto a ( ). Ahora, ya que

est�a cerrado con respecto a ( ), por la De�nici�on 6.3.2 y el Lema 7.3.9,

los t�erminos de est�an cerrados con respecto a ( ), lo que

completa la prueba.

Por �ultimo, el caso 3) se demuestra con un argumento similar al caso anterior, haciendo

uso del hecho de que, por la De�nici�on 6.3.2, los t�erminos de est�an cerrados

con respecto a ( ).

El siguiente teorema establece la terminaci�on global del proceso de EP, usando el

operador sobre las con�guraciones del dominio .

. Consideremos la siguiente computaci�on:

originada por la llamada ( ), donde = ( ( ))

y = ( ( ( ( ) ))), 1.

0

i

E

E

7.3. TERMINACI

ON

1

1

0

0

0 0 1 1

0

0 0

0

1

0 0 0

1 0

0 1 0 1

� �

0

� � �

0 � 0 0

� � �

� � � �

i i im

i ij ik ij ik

'

i

i

i i

mul

k

S mul S

p

n

n n

8 2 f g ^ ) 6

� R �

j j � j j

; ;

[ f g f g

M M

[f g

2 C

2 C

f g

PE q q ; : : : ; q

j; k ; : : : ;m : j < k comparable q ; q q q :

PE

terms U terms q ; i

PE

q

i i > q q

n

n q abstract nil; terms g

S terms g <

S q abstract nil; S abstract nil; nil

S S s S s ; : : : ; s S

< q abstract nil; S

abstract nil; S s abstract abstract nil; S ; s

q abstract nil; S q ; : : : ; q p

s c

q abstract abstract nil; S ; s abstract nil; S

s c t ; : : : ; t c n > q

abstract abstract nil; S ; c t ; : : : ; t abstract abstract nil; S ; t ; : : : ; t

157

En primer lugar, demostramos que todas las subsecuencias de t�erminos comparables

en una con�guraci�on ( ) satisfacen la siguiente propiedad (en

adelante, propiedad de no subsumci�on):

1 ( ( )) )

Esto es su�ciente para probar el teorema, ya que entonces el resultado se sigue de los

siguientes hechos:

El n�umero de subsecuencias de t�erminos incomparables que se pueden formar

usando la signatura del programa es �nito.

Por el Teorema 7.3.2 y la propiedad de no subsumci�on enunciada antes, las sub-

secuencias de t�erminos comparables en cualquier con�guraci�on son �nitas.

Por el Teorema 7.3.6, los conjuntos de t�erminos ( ( ( ) )), 1,

son todos �nitos y, por tanto, la computaci�on de cada con�guraci�on es

tambi�en �nita.

Por la De�nici�on 7.3.9, las longitudes de las secuencias nunca disminuyen a

medida que crece, es decir, para 0, .

Ahora, demostramos el resultado por inducci�on sobre la longitud de la computaci�on.

Sea = 0 y = ( ( )). Realizamos la prueba por inducci�on bien

fundada sobre = ( ). Usamos el orden bien fundado total introducido

en la demostraci�on del Lema 7.3.10.

Si = , entonces = ( ) = ( ) = y el resultado es

cierto.

Si = , donde = , y la propiedad se cumple para todo

tal que entonces, por la De�nici�on 7.3.9, = ( ) =

( ) = ( ( ) ) y, por la hip�otesis de induc-

ci�on, la secuencia de t�erminos = ( ) = ( ), 0, cumple la

propiedad de no subsumci�on. Ahora, necesitamos considerar tres casos.

Si es una variable o un s��mbolo de constante entonces, por la De�nici�on 7.3.9,

se cumple = ( ( ) ) = ( ) y el resultado se

sigue directamente por la hip�otesis de inducci�on.

Si es de la forma ( ), , 0, entonces se cumple =

( ( ) ( )) = ( ( ) )

E

0

E

n n

i

0 1 0 1

0

0 1 2

pi i

pi

i

i

i i p

1

1

1 2

1 1 +1

1 2

[f g M M

M

2 F �

[ M

M

M M

R

0 0 0 0

� 0 0 0

� 00 0 0

0

00 0 0

0 0

0

6 9 2 f g

9 2 f g

9 2 f g f g h f gi

f g [ [

8

>

>

>

>

>

>

>

<

>

>

>

>

>

>

>

:

b

b b

b

b b

b

b b

0 1( )

1 0

0 0 0

1

0

1

0 0

1 1

1

1

0 0

1 1

0 0

( )

0

( ) ( )

1

1

1

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

[f g [f g

� �

� �

0 0 �

0 0

0 0 0 0

0 0

0 0

0 0 � 0 0 � �

� 0

[

�f g [f g[ [

nS t ;:::;t

mulS c t ;:::;t

S

n

p

p

p p

p

p

p p

i

S terms �

mul S

S q w terms � �

mul S

n n

'

n

n

1) ( ) si 1 ( ( ) and )

2) (( ) ( )) donde 1 =

3) ( ) donde 1 ( ) =

no es una instancia de

( ) y

= ( )

q ; : : : ; q ; s i ; : : : ; p : comparable q ; s q s :

abstract q ; : : : ; q ; terms � i ; : : : ; p : q � s:

abstract q ; s i ; : : : ; p : msg q ; s w; � ; �

s q ;

q q ; : : : ; q ; q ; : : : ; q ;

s w terms � � :

abstract nil; S t ; : : : ; t <

s f t ; : : : ; t ; f ; n q abstract abstract nil;

S ; s abs call abstract nil; S ; s abstract nil; S

q ; : : : ; q p > abstract nil; S nil

abs call abs call q ; : : : ; q ; s

q abs call abstract nil; S ; s

abs call q ; : : : ; q ; s q ; : : : ; q ; s

q ; : : : ; q

s

q ; : : : ; q

q abs call abstract nil; S ; s

abs call q ; : : : ; q ; s abstract q ; : : : ; q ; terms � abstract abstract nil;

S ; terms � abstract nil; S terms � q � s

< q

<

n > q abstract q ;

terms U terms q ;

q

158

= ( ). Puesto que =

, el resultado es inmediato por la hip�otesis de inducci�on.

Si = ( ) 0, entonces se cumple = ( (

) ) = ( ( ) ). Asumamos que ( ) es igual a

( ), 0, ya que el caso en el que ( ) es igual a es trivial.

Distinguimos ahora tres casos, que se corresponden con los tres casos de la funci�on

de la De�nici�on 7.3.9, concretamente: (( ) ) =

Consideremos el caso 1). Entonces, = ( ( ) ) =

(( ) ) = ( ), y se cumplen los siguientes hechos: i) por

la hip�otesis de inducci�on, los t�erminos comparables de ( ) satisfacen la pro-

piedad de no subsumci�on, y ii) por la premisa del caso 1), el t�ermino considerado

no infringe la propiedad de no subsumci�on con respecto a ninguno de los t�erminos

comparables de ( ).

Consideremos ahora el caso 2). Entonces, = ( ( ) ) =

(( ) ) = (( ) ( )) = ( (

) ( )) = ( ( )), con = . Puesto que

entonces, por la hip�otesis de inducci�on, los t�erminos comparables de sa-

tisfacen la propiedad de no subsumci�on.

El caso 3) se demuestra siguiendo un argumento similar al del caso 2), ya que

.

Consideremos, �nalmente, el caso inductivo 0. Asumamos = (

( ( ( ) ))). Por la hip�otesis de inducci�on, cada subsecuencia de

t�erminos comparables de satisface la propiedad de no subsumci�on, con lo que la

demostraci�on es perfectamente an�aloga a la del caso base.

En este punto, disponemos de una instancia del algoritmo gen�erico de EP que

garantiza, de forma autom�atica, la condici�on de cierre para el programa transformado,

as�� como la terminaci�on del proceso de especializaci�on. A continuaci�on, mostramos

como nuestro m�etodo es capaz de asegurar la terminaci�on, consiguiendo a�un obtener

un buen nivel de especializaci�on en el programa transformado.

E

vs

1

1

Ejemplo 30 R

! (

!

!

!

R R

! (

s s

s s s s

'

s s

s

s s s

7.3. TERMINACI

ON

7.3.3 Especializaci�on Terminaci�on

palindrome x true reverse x x

reverse x rev x; nil

rev nil; y y

rev x x ; y rev x ; x y

palindrome x

U abstract

q abstract nil; palindrome x palindrome x :

palindrome x

palindrome x x true rev x ; x nil x x

narrowing

narrowing

narrowing

narrowing

narrowing

El siguiente programa comprueba si una secuencia de caracteres es

un pal��ndromo, haciendo uso de una funci�on de inversi�on con par�ametro acumulador

auxiliar:

Consideremos el t�ermino inicial . Construimos el programa

especializado mediante el algoritmo de la De�nici�on 7.2.3, haciendo uso de la regla

de desplegado de la De�nici�on 7.3.7, el operador de abstracci�on de la

De�nici�on 7.3.9 y la relaci�on de narrowing condicional con normalizaci�on.

La con�guraci�on inicial es:

La evaluaci�on parcial de en es el siguiente programa :

159

Una cuesti�on esencial a resolver en cualquier m�etodo de EP es el problema de la

terminaci�on. Existen gran variedad de m�etodos de EP que consiguen, en general,

un nivel de especializaci�on elevado, pero que no aseguran la terminaci�on del m�etodo

en todos los casos (ver e.g. [BL89, BL90, GS94, SGJ94]). Por el contrario, imponer

restricciones demasiado fuertes (para garantizar la terminaci�on del proceso) puede

resultar a veces en una p�erdida total de especializaci�on.

Siendo nuestro m�etodo param�etrico respecto a la relaci�on de que cons-

truye los �arboles de b�usqueda, para potenciar los efectos de la especializaci�on vamos a

considerar, en este apartado, la relaci�on de condicional con normalizaci�on.

Este es un re�namiento completo de la relaci�on de para programas con-

uentes y decrecientes [Hus85]. La idea consiste en normalizar el objetivo ecuacional

antes de aplicar cada paso de . Los resultados de correcci�on y completitud

para la EP de programas, establecidos en el cap��tulo anterior, se pueden extender

usando t�ecnicas est�andar para considerar la estrategia de condicional con

normalizaci�on. El siguiente ejemplo muestra c�omo la fase de normalizaci�on es capaz

de incrementar notablemente la especializaci�on del programa residual sin riesgo para

la terminaci�on. De esta forma, el ejemplo pretende evidenciar c�omo nuestro esquema

permite evaluaciones capaces de conseguir e�cazmente ambos objetivos: terminaci�on

y especializaci�on.

( ) ( ) =

( ) ( )

( )

( : ) ( : )

(1 : 2 : )

= ( (1 : 2 : )) = (1 : 2 : )

(1 : 2 : )

(1 : 2 : : ) ( : 2 : 1 : ) = 1 : 2 : :

0 0 0 0

0 0

0 0

0

0

0

R f g

f g

R R

!

!

R f g

f g

R R

!

!

R f g

f g

R R

f g

! (

!

!

R

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

s s

s s s

s s

s

s s

s

s s

s

s s s

s s

s s

s s s s

s s s

s s s

s s s

s s s

s s s

s s s

s s

s s s s

1

2

2

2

3

1 2 3

1 2 3 3

1 2 3 1 2 3

1 2 3 1 2 3

3 1 2 3 1 2 3

4 1 2 3

1 2 3 1 2 3

1 2 3 3

1 2 3 1 2 3

1 2 3 1 2 3

160

( ) = ( : 2 : 1 : ) 1 : 2 : :

= ( (1 : 2 : ) ( : 2 : 1 : ) 1 : 2 : : )

= ( (1 : 2 : ) ( : 2 : 1 : ))

( : 2 : 1 : )

( : 2 : 1 : ) : 2 : 1 :

( : : 2 : 1 : ) ( : : 2 : 1 : )

( ) = : 2 : 1 : ( : : 2 : 1 : )

= (( (1 : 2 : ) ( : 2 : 1 : ))

: 2 : 1 : ( : : 2 : 1 : ) )

= ( (1 : 2 : ) ( : : : ))

( : : : )

( : : : ) : : :

( : : : : ) ( : : : : )

( ) = : : : ( : : : : )

= (( (1 : 2 : ) ( : : : ))

: : : ( : : : : ) )

= ( (1 : 2 : ) ( : : : ))

= (1 : 2 : ) ( )

(1 : 2 : : ) ( : 2 : 1 : ) = 1 : 2 : :

( : : : ) : : :

( : : : : ) ( : : : : )

terms true; rev x ; x nil ; x x

q abstract palindrome x ; true; rev x ; x nil ; x x

palindrome x ; rev x ; x nil :

rev x ; x nil

rev nil; x nil x nil

rev x x ; x nil rev x ; x x nil

terms x nil; rev x ; x x nil

q abstract palindrome x ; rev x ; x nil ;

x nil; rev x ; x x nil

palindrome x ; rev x ; x x x y :

rev x ; x x x y

rev nil; x x x y x x x y

rev x x ; x x x y rev x ; x x x x y

terms x x x y ; rev x ; x x x x y

q abstract palindrome x ; rev x ; x x x y ;

x x x y ; rev x ; x x x x y

palindrome x ; rev x ; x x x y q :

S palindrome x ; rev x ; y

palindrome x x true rev x ; x nil x x

rev nil; x x x y x x x y

rev x x ; x x x y rev x ; x x x x y

palindrome

rev

donde . Entonces, aplicando

el operador de abstracci�on, la nueva con�guraci�on es:

Computamos ahora la EP de en , generando el programa :

donde . La nueva con�guraci�on

es, por tanto:

Ahora, la EP del t�ermino en es el siguiente programa :

donde . Por �ultimo,

obtenemos la siguiente con�guraci�on:

Por tanto, el programa especializado resultante de la EP de con respecto al

conjunto de t�erminos es:

en el que algunas derivaciones innecesarias han sido eliminadas en tiempo de espe-

cializaci�on. Se debe notar que todas las computaciones sobre la parte est�atica de la

estructura de entrada han sido ya realizadas: en el programa especializado , los ele-

mentos conocidos de la lista que se pasa como argumento de la funci�on

han sido transferidos a la lista del segundo argumento de la funci�on . La serie

de inferencias l�ogicas necesarias para realizar esta tarea en tiempo de ejecuci�on, cuyo

n�umero es lineal con respecto al n�umero de elementos conocidos de la lista, han sido

ya realizadas en tiempo de especializaci�on.

narrowing

driving

narrowing

7.4 Renombramiento e Independencia

7.4. RENOMBRAMIENTO E INDEPENDENCIA 161

El procedimiento de supercompilaci�on positiva de [GS94, S�r94, SGJ94] no termina

sobre este ejemplo, debido a la generaci�on in�nita de nuevas llamadas a funci�on, las

cuales, debido al crecimiento particular del par�ametro acumulador, nunca son una

instancia de alguna llamada anterior. Los procedimientos para la deducci�on parcial

de [BH93, BL90] tienen el mismo problema en la correspondiente versi�on l�ogica del

programa. Los m�etodos de [MG95, SG95], sin embargo, aseguran la terminaci�on para

este ejemplo, al igual que nuestro m�etodo.

En la siguiente secci�on, abordamos el problema de c�omo garantizar la condici�on

de independencia de forma autom�atica.

Haciendo uso de las instancias de la regla de desplegado y del operador de abstracci�on

introducidas en la secci�on anterior, el algoritmo formalizado por la De�nici�on 7.2.3

permite generar, de forma autom�atica y en tiempo �nito, un programa especializado

que satisface la condici�on de cierre. Dicho algoritmo puede verse como el n�ucleo de un

evaluador parcial que, teniendo en cuenta la estrategia de empleada, podr��a

completarse de forma adecuada. Un aspecto a tener en cuenta es si resulta posible o

no garantizar que el conjunto de t�erminos producido por el procedimiento de EP es

independiente. En el campo de la deducci�on parcial de programas l�ogicos, se han des-

arrollado diferentes t�ecnicas de renombramiento que consiguen la independencia de

forma autom�atica [BH93, BL90, Gal93, GB90]. En algunos casos, la t�ecnica de renom-

bramiento se aplica de forma din�amica durante el proceso de especializaci�on ([BH93],

Secci�on 3), mientras que habitualmente se considera un post-proceso que debe em-

plearse sobre el programa resultante de la especializaci�on (ver, e.g. [Gal93, GB90] y

la Secci�on 4 de [BH93]). La t�ecnica de supercompilaci�on positiva obtiene un efecto

similar al de [Gal93], gracias a la forma din�amica en que se extraen las de�niciones

para las funciones especializadas a partir del grafo construido por el mecanismo de

[GK93, Tur88]. Presentamos, a continuaci�on, un ejemplo de especializaci�on

que ilustra las di�cultades que se presentan en el proceso de renombramiento cuando

se considera la EP de programas l�ogico{funcionales basada en (alguno de los re�-

namientos de) la relaci�on de . El problema del renombramiento resulta

especialmente interesante en nuestro contexto, ya que las funciones que aparecen co-

mo argumento de las llamadas en modo alguno son estructuras \muertas" sino que

pueden generar nuevas llamadas a funci�on.

El siguiente problema se usa frecuentemente en la literatura relacionada con la

EP de programas, como test para analizar si un m�etodo es capaz de eliminar estruc-

turas de datos intermedias, as�� como de evitar el recorrido m�ultiple de una misma

estructura en tiempo de ejecuci�on. Este mismo efecto se consigue, por ejemplo, con

0

0

!

!

R

!

!

!

!

R

Ejemplo 31

s s

s s s s

s s s

s s s

s s s

s s s s

s s s s s s

s s

s s s s

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

append=

append nil; y y

append x x ; y x append x ; y

append append x ; y ; z

x y z append=

append=

q append append x ; y ; z

append a

append append nil; y ; z append y ; z

append append x x ; y ; z x append append x ; y ; z

append nil; z z

append y y ; z y append y ; z

msg

a x; y

162

los procedimientos de [Wad88], [Chi93] y la supercompilaci�on

positiva de [S�r94].

2

( )

( : ) : ( )

( ( ) )

2

2

= ( ( ) )

( ( ) ) ( )

( ( : ) ) : ( ( ) )

( )

( : ) : ( )

( )

En [SGJ94, S�r94] se conjetura que el problema de p�erdida de especializaci�on,

ilustrado por el ejemplo anterior, s�olo puede evitarse gracias al uso de una estrategia

perezosa en la construcci�on de los �arboles de b�usqueda. Pensamos que dicha conjetura

no es cierta, ya que nuestro m�etodo consigue el efecto deseado gracias a la normali-

zaci�on, independientemente de la estrategia empleada por para realizar las

computaciones.

deforestaci�on tupling

Consideremos de nuevo el programa del Ejemplo 29:

y la llamada que permite computar la concatenaci�on de las

tres listas , y . Si evaluamos dicha expresi�on respecto al programa ,

la computaci�on procede concatenando las dos primeras listas y, posteriormente, con-

catenando a este resultado la tercera lista. Evidentemente, esta forma de computar es

ine�ciente en cuanto a la complejidad espacial (se crea una estructura de datos inter-

media que no forma parte del resultado �nal), y tambi�en en cuanto a la complejidad

temporal (la primera lista se recorre dos veces).

Vamos a especializar el programa mediante el algoritmo que se presenta

en la Secci�on 7.3, usando una relaci�on de narrowing condicional con normalizaci�on

para construir los �arboles de b�usqueda (parciales). Comenzando con la con�guraci�on

inicial , obtenemos los �arboles de la Figura 7.2. N�otese

que ha sido abreviado a \ " en la �gura. Adem�as, los pasos de narrowing se

han representado con l��neas, mientras que el (�unico) paso de normalizaci�on se ha

representado con una echa. El programa especializado es el siguiente:

El nuevo programa es capaz de concatenar las tres listas recorriendo sus argumentos

una sola vez, y sin construir ning�un tipo de estructura intermedia.

En este ejemplo particular, el efecto deseado se ha conseguido, en parte, gracias

a la normalizaci�on. Sin normalizar los nodos del �arbol, el orden de subsumci�on se

habr��a satisfecho demasiado pronto (en la rama de la derecha del �arbol superior de la

Figura 7.2). En este caso, el algoritmo habr��a calculado el del t�ermino de partida

y el t�ermino en este nodo, resultando el t�ermino , lo cual implica que se habr��a

reproducido el programa original y toda la especializaci�on se habr��a perdido.

narrowing

3

! (

0 0

0 0

s� � C s s y

s s s s s

s

s s s s

s

( ( ) ) :

( ) :

1

1

3

1

1

f g

R

R

2

f g

! ( R

! (

f g

f g f g f g

0 0

0 0

f g f g f g

0 0

0

0

0 0

0 0

Figura 7.2: Arboles parciales para , .

7.4. RENOMBRAMIENTO E INDEPENDENCIA

?

P

P

P

P

P

P

P

P

P

P

P

P

P

P

P

P

P

P

P

P

y=a a x ; y ; z x =nil x =x x

s

s s

s

s ss s

s s s

y=a y ; z y =nil y =y y

s

ss

s s

s s s s s

s s s s s

s

s

s

s

s

s

n

x a a x ; y ; z y

a x a x ; y ; z ya y ; z ytrue

a a x ; y ; z y

y a y ; z yz ytrue

a y ; z y

a a x ; y ; z y a x ; y y

append append x ; y ; z ; append x ; y

g

S

S

s S f x ; : : : ; x f

x ; : : : ; x

s

s� � C

f x ; : : : ; x � � C

� C

u ; : : : ; u � S

Para simpli�car la notaci�on, asumimos que cada regla lleva \anotada" la informaci�on de cu�al

es el t�ermino de cuya evaluaci�on parcial ha resultado. De esta forma, expresamos los resultantes en

la forma: ( ), donde es el t�ermino que aparece en el objetivo inicial ( = ) de la

derivaci�on que origin�o la regla.

163

: ( ( ) ) =

( : ( ) ) =( ) =

( ( ) ) =

: ( ) ==

( ) =

( ( ) ) = ( ) =

Aqu�� podemos observar que el conjunto de t�erminos parcialmente evaluados:

( ( ) ) ( )

no es independiente, lo cual hace posible que se produzcan algunas derivaciones inne-

cesarias (que computan respuestas que no se pueden obtener en el programa original).

Para restablecer la independencia del conjunto de t�erminos parcialmente evaluados

y conseguir as�� un programa residual que no produzca respuestas adicionales, ser��a

posible desarrollar un post-proceso de renombramiento en el estilo del de�nido por

[BH93]. Lo que sigue es una extensi�on informal del m�etodo de [BH93] para el caso de

los programas l�ogico{funcionales.

En primer lugar, dado un programa y un objetivo , haciendo uso del algorit-

mo de la De�nici�on 7.2.3 se genera el conjunto de t�erminos , cuya EP da lugar al

programa especializado . Ahora, en el caso de que el conjunto no sea indepen-

diente, asociamos a cada t�ermino una funci�on ( ), donde es un

s��mbolo de funci�on nuevo (i.e. que no aparece en la signatura del programa ni ha

sido empleado anteriormente) y son las variables distintas del t�ermino

en el mismo orden de su primera aparici�on. Entonces, podemos renombrar cada

resultante ( ) del programa de la forma:

( )

donde se construye como sigue (el proceso para obtener es totalmente an�alogo).

Sea un conjunto de ocurrencias de cierre para en , i.e. para todo

1

i i

i

i

i

j j

0

j

0

00

7.5 Test KMP

2

R

)

)

R

!

!

!

!

f g

R

narrowing

narrowing

ui

ui i

u

s

s i

s s s s s s

s s s s

s s s s

s s s s s s

s s

s s s s

s s s s s

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

� s S � s � i ; : : : ; n

� �

f x ; : : : ; x �

S

append append x ; y ; z append x ; y ; z

append x ; y append x ; y

append nil; y ; z append y ; z

append x x ; y ; z x append x ; y ; z

append nil; z z

append y y ; z y append y ; z

append=

append append x ; y ; z ; append x ; y

S

S S

p

s p s

164

subt�ermino existe un t�ermino tal que = , = 1 . Entonces el

t�ermino renombrado se obtiene sustituyendo recursivamente los subt�erminos

por la correspondiente funci�on ( ), aplicando al t�ermino resultante de

cada sustituci�on.

Si aplicamos dicho procedimiento al programa del Ejemplo 31, considerando el

siguiente renombramiento para los t�erminos del conjunto (no independiente) :

( ( ) ) = 3( )

( ) = 2( )

se obtiene el programa renombrado :

3( ) 2( )

3( : ) : 3( )

2( )

2( : ) : 2( )

que produce el mismo conjunto de respuestas computadas que el programa original

2 para cualquier objetivo que est�e cerrado (m�odulo renombramiento) por el

conjunto de t�erminos ( ( ) ) ( ) .

Es importante observar que la t�ecnica de renombramiento, tal como se ha ex-

puesto, no es en general un proceso determinista. La causa del indeterminismo es,

esencialmente, el hecho de que un t�ermino -cerrado puede tener asociados distintos

conjuntos de cierre con respecto a (excepto si es independiente, en cuyo caso la

transformaci�on de renombramiento no ser��a necesaria).

La correcci�on de la t�ecnica de renombramiento esbozada debe demostrarse para

cada estrategia de particular. En [AFJV96a, AFJV96b] puede encontrarse

la de�nici�on formal de una t�ecnica de renombramiento que sigue las l��neas del m�etodo

aqu�� expuesto, y cuya correcci�on se demuestra bajo las condiciones de completitud de

la relaci�on de perezoso.

Una manera habitual de comprobar la potencia de un evaluador parcial, consiste en

realizar el as�� llamado \test KMP". Terminamos este cap��tulo con una �ultima seccion,

en la que mostramos que nuestro m�etodo es capaz de superar satisfactoriamente dicho

test.

Un ejemplo est�andar en la literatura sobre evaluaci�on parcial, es la generaci�on de

un programa e�ciente para el emparejamiento de patrones a partir de la EP de una

versi�on simple (pero ine�ciente) del programa, especializado para un patr�on �jo dado

[Jon94, SGJ94]. El siguiente programa , comprueba si una cadena de caracteres

aparece dentro de otra cadena comparando iterativamente con un pre�jo de . En

narrowing

7.5. TEST KMP

!

!

!

!

! (

!

!

!

!

R

continue

shift string

restart loop

s

s

match p; s loop p; s; p; s

loop nil; ss; op; os true

loop p pp; nil; op; os false

loop p pp; p ss; op; os loop pp; ss; op; os

loop p pp; s ss; op; os next op; os p s false

next op; nil false

next op; s ss loop op; ss; op; ss

false

false

PE

abstract

165

caso de que no emparejen, se elimina el primer elemento de y el proceso se reinicia

con el resto de elementos de . Por simpli�car, consideramos que el emparejamiento

se de�ne �unicamente sobre cadenas de bits, i.e. cadenas que s�olo est�an compuestas

de ceros y unos.

( ) ( )

( )

( : )

( : : ) ( ) %

( : : ) ( ) ( = ) = %

( )

( : ) ( ) %

(0 = 1)

(1 = 0)

El c�odigo de este programa es muy ine�ciente, ya que varios elementos de la

cadena pueden ser explorados varias veces. Concretamente, dado un patr�on �jo como

el 001, si tras comprobar la aparici�on de la secuencia 00 en la cadena objetivo aparece

nuevamente un cero, el programa reinicia la b�usqueda del patr�on completo 001 desde

la segunda posici�on de la cadena, mientras que ser��a su�ciente con buscar un 1 en la

cuarta posici�on. La capacidad de especializaci�on de un m�etodo de transformaci�on se

puede veri�car comprobando si es capaz de obtener autom�aticamente un algoritmo

similar al desarrollado por Knuth, Morris y Pratt [KMP77], cuando se especializa el

anterior programa respecto a un patr�on dado. A menudo, se hace referencia a esta

prueba como el \test KMP". El ejemplo es particularmente interesante, porque es un

tipo de transformaci�on que no se puede obtener autom�aticamente usando la t�ecnica

de deforestaci�on, ni por las t�ecnicas de EP tradicionales (para programas funcionales)

[SGJ94]. La deducci�on parcial de programas l�ogicos, as�� como la supercompilaci�on

positiva, s�� son capaces de superar el test (ver [S�r94] para referencias). Mostramos,

a continuaci�on, c�omo nuestro m�etodo es tambi�en capaz de resolver satisfactoriamente

el problema.

Suponemos un patr�on 001 de entrada �jado, con respecto al cual realizamos la

especializaci�on. En el proceso de EP empleamos el algoritmo de la De�nici�on 7.2.3,

instanciado con los siguientes par�ametros:

la relaci�on de condicional con normalizaci�on, para construir los �arbo-

les de b�usqueda;

las con�guraciones (De�nici�on 7.3.8), junto con el operador de abstracci�on

(De�nici�on 7.3.9), para garantizar la terminaci�on global; y

4

4

false

0

00

0

00

!

!

! (

!

! (

!

! (

R

R

R

!

!

! (

!

! (

!

! (

R

R �

0 0 0 0

0 0 0 0 0 0 0 0 0

00 00

00 00 00 00 00 00 00 00 00

CAP��TULO 7. UN MARCO GENERAL PARA LA EP DE PROGRAMAS

No consideramos, por simplicidad, las reglas que de�nen reducciones a .

match ; s

match s loop s

loop ss loop ss

loop s ss loop ss s false

loop ss loop ss

loop s ss loop s ss s false

loop ss true

loop s ss loop s ss s false

O n n

s O m n

m p

(001 ) (001 001 )

(001 0 : 001 0 : ) (01 001 0 : )

(001 : 001 : ) (001 001 ) (0 = ) =

(01 0 : 001 00 : ) (1 001 00 : )

(01 : 001 0 : : ) (001 : 001 : ) (0 = ) =

(1 1 : 001 001 : )

(1 : 001 00 : : ) (01 : 001 0 : : ) (1 = ) =

match ; s loop ; s; ; s

loop ; ss; ; ss loop ; ss; ; ss

loop ; s ss; ; s ss loop ; ss; ; ss s false

loop ; ss ; ; ss loop ; ss ; ; ss

loop ; s ss ; ; s ss loop ; s ss ; ; s ss s false

loop ; ss ; ; ss true

loop ; s ss ; ; s ss loop ; s ss ; ; s ss s false

166

una regla de desplegado consistente en expandir un s�olo nivel del �arbol de

b�usqueda (al igual que en el Ejemplo 27), para garantizar la terminaci�on lo-

cal.

Entonces, la EP de con respecto al t�ermino (001 ) produce el siguiente pro-

grama especializado :

Es posible eliminar algunas redundancias del c�odigo generado aplicando el post-

proceso de renombramiento esbozado en la secci�on anterior, dando lugar al siguiente

programa residual :

( ) 001( )

001(0 : ) 01( )

001( : ) 001( ) (0 = ) =

01(0 : ) 1( )

01( : ) 001( : ) (0 = ) =

1(1 : )

1( : ) 01( : ) (1 = ) =

La cantidad de especializaci�on conseguida por es esencialmente an�aloga a la

obtenida por el algoritmo de [SG95]. La complejidad del algoritmo es ( ), donde es

la longitud de la cadena . La complejidad del programa original es ( ), donde

es la longitud del patr�on . En esencia, �este es un programa para el emparejamiento

de patrones en el estilo KMP.

Conclusiones y Trabajo

Futuro

observable

narrowing

narrowing

En esta tesis formalizamos las bases sem�anticas para algunas optimizaciones impor-

tantes de los lenguajes l�ogico{funcionales. Las principales aportaciones se pueden

resumir tal y como sigue.

En primer lugar, se ha formalizado un esquema para el an�alisis est�atico de progra-

mas l�ogico-funcionales, que permite obtener una aproximaci�on �nita del comporta-

miento operacional del programa, entendido en t�erminos de un basado en

el conjunto de las respuestas computadas. El an�alisis se de�ne de manera param�etrica

respecto a la estrategia de y una versi�on \abstracta" del programa. Se ha

demostrado la correcci�on y terminaci�on del an�alisis resultante para aquellas estrate-

gias que sean independientes del entorno. El an�alisis es de prop�osito bastante general

y permite distintas aplicaciones, algunas de las cuales han sido desarrolladas y su

e�cacia probada a trav�es de una implementaci�on preliminar del sistema.

En segundo lugar, hemos introducido una t�ecnica de evaluaci�on parcial de progra-

mas l�ogico{funcionales y hemos demostrado la correcci�on y completitud de la trans-

formaci�on.

Esta se basa directamente en el uso del propio mecanismo operacional de

durante el proceso de especializaci�on, y constituye la primera aproxima-

ci�on totalmente autom�atica, correcta y �nita para la evaluaci�on parcial de programas

l�ogico{funcionales.

Son varias las l��neas de trabajo abiertas por esta tesis. El autor se declara espe-

cialmente interesado en aqu�ellas que est�an m�as relacionadas con la segunda parte del

trabajo. La formalizaci�on de t�ecnicas basadas en la sem�antica para la especializaci�on

de programas l�ogico{funcionales es un campo de investigaci�on incipiente y atractivo.

Tenemos previsto extender el trabajo desarrollado teniendo en cuenta las siguientes

ideas, que son argumento de varias tesis doctorales estrechamente relacionadas con la

nuestra y actualmente en desarrollo en nuestro grupo:

- El desarrollo de un �algebra de programas l�ogico{funcionales, que englobe la compo-

167

narrowing

narrowing

narrowing

call-by-name

narrowing

narrowing

abiertos

sicionalidad AND y OR en un marco �unico, y la formulaci�on de una sem�antica para

los programas combinados con los operadores del �algebra. As��, la t�ecnica de an�alisis se

puede incorporar en un esquema m�as general que permita disfrutar de los bene�cios

aportados por ambos tipos de composicionalidad.

- La t�ecnica de supercompilaci�on de Turchin no s�olo propaga la informaci�on positiva,

sino que tambi�en es capaz de propagar informaci�on negativa a trav�es del entorno.

Esta informaci�on negativa restringe los valores que pueden tomar las variables du-

rante la EP, permitiendo as�� obtener una especializaci�on m�as precisa [SGJ94, Tur86].

Pensamos que en nuestro caso se podr��a conseguir un efecto similar, usando alg�un

procedimiento de con (restricciones de) desigualdad, como los de�nidos en

[AGL94, Fer92, RF93].

- Otra l��nea de trabajo interesante, consiste en de�nir instancias del m�etodo gen�erico

de EP para estrategias de e�cientes, y demostrar la correcci�on y completi-

tud de la transformaci�on para dichas estrategias. El comportamiento del m�etodo es

independiente del car�acter impaciente o perezoso del procedimiento de uti-

lizado. Podemos, as��, de�nir un evaluador parcial (basado en un c�alculo

de condicional perezoso), cuya e�ciencia ha de ser indudablemente supe-

rior a la del evaluador parcial presentado aqu��. Esta instancia podr��a emplearse, en la

pr�actica, para la optimizaci�on del proceso de compilaci�on del lenguaje l�ogico-funcional

Babel [MR92], cuya sem�antica operacional est�a basada en una forma de

perezoso. Hemos comenzado ya algunas investigaciones en esta l��nea, cuyos primeros

resultados se recogen en [AFJV96a, AFJV96b].

- Nuestros resultados tambi�en son relevantes para la de�nici�on de una sem�antica

composicional para programas l�ogico{funcionales, que sea de utilidad para el an�alisis

y transformaci�on de programas modulares. Para tal �n, nos proponemos estudiar la

de�nici�on de una sem�antica por desplegado, haciendo uso de evaluaci�on parcial con

una estrategia de desplegado que detiene las derivaciones que alcanzan s��mbolos de

funci�on (i.e. s��mbolos de�nidos en otro m�odulo del programa).

168

Bibliograf��a

Proc. 21st ACM Symp. on Principles of Programming Languages,

Portland

Proc. of the 1996 Joint Conf. on Declarative Pro-

gramming, APPIA-GULP-PRODE'96

Proc. of JICSLP'96 Post Conference Workshop on Multi-Paradigm

Logic Programming, MPLP'96

Theoretical Computer Science

Journal of Logic Programming

Proc. of PLILP'93, Tallinn (Estonia)

Proc. of the 8th Italian Conf. on Logic Programming, GULP'93,

Gizzeria Lido (Italy)

[AEH94] S. Antoy, R. Echahed, and M. Hanus. A Needed Narrowing Strategy.

In

, pages 268{279, 1994.

[AFJV96a] M. Alpuente, M. Falaschi, P. Juli�an, and G. Vidal. Call-by-Name Partial

Evaluation of Functional{Logic Programs. In P. Lucio, M. Martelli, and

M. Navarro, editors,

, pages 17{28. U. del Pa��s Vasco,

1996.

[AFJV96b] M. Alpuente, M. Falaschi, P. Juli�an, and G. Vidal. Call-by-Name Specia-

lization of Functional{Logic Programs. In Tetsuo Ida and Yike Guo, edi-

tors,

. TU Berlin, 1996. To appear.

[AFL95] M. Alpuente, M. Falaschi, and G. Levi. Incremental Constraint Satisfac-

tion for Equational Logic Programming. ,

142(1):27{57, 1995.

[AFM95] M. Alpuente, M. Falaschi, and F. Manzo. Analyses of Unsatis�abi-

lity for Equational Logic Programming. ,

22(3):221{252, 1995.

[AFRV93a] M. Alpuente, M. Falaschi, M.J. Ramis, and G. Vidal. Narrowing Appro-

ximations as an Optimization for Equational Logic Programs. In J. Pen-

jam and M. Bruynooghe, editors, ,

pages 391{409. Springer LNCS 714, 1993.

[AFRV93b] M. Alpuente, M. Falaschi, M.J. Ramis, and G. Vidal. Using Narrowing

Approximations to Optimize Equational Logic Programs. In D. Sacc�a,

editor,

, pages 127{142. Universit�a di Calabria, 1993.

169

H E

BIBLIOGRAF��A

Proc. of 6th IEEE Int'l Conf. on Computer Languages, ICCL'94

Proc. of the ILPS'93,

Vancouver, Canada

Proc. of Fifth Int'l Conf. on Algebraic and Logic Programming,

ALP'94

Theoretical Computer

Science

Proc.

of the 6th European Symp. on Programming, ESOP'96

Proc. of PLILP'94

Proc. of Fourth IEEE Int'l Symp. on Logic Programming

El Lenguaje CLP( / ): una Aproximaci�on basada en

Restricciones a la Integraci�on de la Programaci�on L�ogica y Funcional

Journal of Logic Programming

Lisp and Symbolic Computation

170

[AFRV94] M. Alpuente, M. Falaschi, M.J. Ramis, and G. Vidal. A Compositional

Semantics for Conditional Term Rewriting Systems. In H.E. Bal, editor,

, pages

171{182. IEEE, New York, 1994.

[AFV93] M. Alpuente, M. Falaschi, and G. Vidal. Incremental Equational Cons-

traint Analyses. In V. Dahl and D. Miller, editors,

. The MIT Press, Cambridge, MA, 1993. (Poster).

[AFV94] M. Alpuente, M. Falaschi, and G. Vidal. Compositional Analysis for

Equational Horn Programs. In G. Levi and M. Rodr��guez-Artalejo, edi-

tors,

, pages 77{94. Springer LNCS 850, 1994.

[AFV95] M. Alpuente, M. Falaschi, and G. Vidal. Narrowing-driven Specialization

of Functional Logic Programs. Technical Report DSIC-II/5/95, UPV,

1995. Submitted for publication.

[AFV96a] M. Alpuente, M. Falaschi, and G. Vidal. A Compositional Semantic Basis

for the Analysis of Equational Horn Programs.

, 165(1):97{131, Sept. 1996.

[AFV96b] M. Alpuente, M. Falaschi, and G. Vidal. Narrowing-driven Partial Eva-

luation of Functional Logic Programs. In H. Riis Nielson, editor,

, pages 45{61.

Springer LNCS 1058, 1996.

[AGL94] P. Arenas, A. Gil, and F. L�opez. Combining Lazy Narrowing with Di-

sequality Constraints. In , pages 385{399. Springer

LNCS 844, 1994.

[ALN87] H. A��t-Kaci, P. Lincoln, and R. Nasr. Le Fun: Logic, equations, and

Functions. In ,

pages 17{23. IEEE, New York, 1987.

[Alp91] M. Alpuente.

.

PhD thesis, Departamento de Sistemas Inform�aticos y Computaci�on,

Universidad Polit�ecnica de Valencia, 1991.

[AN86] H. A��t-Kaci and R. Nasr. LOGIN: a logic programming language with

built-in inheritance. , 3:185{215, 1986.

[AN89] H. A��t-Kaci and R. Nasr. Integrating Logic and Functional Program-

ming. , 2(1):51{89, 1989.

BIBLIOGRAF��A

Journal of Logic

Programming

Journal of the ACM

New Generation Computing

Proc. of First European Symp.

on Programming, ESOP'86

Proc. of the ICLP'94 Post-

Conference Workshop on Integration of Declarative Paradigms

Proc. of the Int'l Logic Programming Symposium, ILPS'95

et al.

Arti�cial Intelligence

Proc.

of Third Int'l Workshop on Static Analysis, WSA'93

Theoretical Computer Science

Journal of Logic and Computation

Science of Computer Programming

Journal of Logic Programming

171

[BC93] A. Bossi and N. Cocco. Basic Transformation Operations which preserve

Computed Answer Substitutions of Logic Programs.

, 16:47{87, 1993.

[BD77] R.M. Burstall and J. Darlington. A Transformation System for Develo-

ping Recursive Programs. , 24(1):44{67, 1977.

[BdSM92] M. Bruynooghe, D. de Schreye, and B. Martens. A General Criterion for

Avoiding In�nite Unfolding. , 11(1):47{79,

1992.

[BE86] D. Bert and R. Echahed. Design and implementation of a generic, logic

and functional programming language. In

, pages 119{132. Springer LNCS 213, 1986.

[BE94] D. Bert and R. Echahed. Integrating Disequations in the Algebraic

and Logic Programming Language LPG. In

. MPI-I-

94-224, Saarbrucken, 1994.

[BE95] D. Bert and R. Echahed. Abstraction of Conditional Term Rewriting

Systems. In ,

pages 162{176. The MIT Press, Cambridge, MA, 1995.

[Bec76] L. Beckman A Partial Evaluator, and Its Use as a Programming

Tool. , 7(4):319{357, 1976.

[BE�93] D. Bert, R. Echahed, and B.M. �stvold. Abstract Rewriting. In

, pages 178{192.

Springer LNCS 724, 1993.

[BGM88] P. Bosco, E. Giovannetti, and C. Moiso. Narrowing vs. SLD-resolution.

, 59:3{23, 1988.

[BH93] K. Benkerimi and P.M. Hill. Supporting Transformations for the Par-

tial Evaluation of Logic Programs. ,

3(5):469{486, 1993.

[BHA86] G. Burn, C. Hankin, and S. Abramsky. Strictness Analysis for Higher

Order Functions. , 7:249{278, 1986.

[BL86] M. Bellia and G. Levi. The relation between logic and functional lan-

guages. , 3:217{236, 1986.

BIBLIOGRAF��A

Proc. of the 1990

North American Conf. on Logic Programming

Journal of Logic Program-

ming

Proc. of PLILP'93, Tallinn (Es-

tonia)

Proc. of Third Int'l Workshop

on Static Analysis, WSA'93

Journal of Logic Programming

Conditional Term Rewriting Systems,

CTRS'94, Jerusalem

Proc. of Fourth ACM Symp. on Principles of Programming

Languages

Proc. of Sixth ACM Symp. on Principles of Programming

Languages

Journal of Logic Programming

LISP and

Symbolic Computation

Proc. of 20th Annual ACM Symp. on

172

[BL89] K. Benkerimi and J.W. Lloyd. A Procedure for the Partial Evaluation of

Logic Programs. Technical Report TR-89-04, Department of Computer

Science, University of Bristol, Bristol, England, May 1989.

[BL90] K. Benkerimi and J.W. Lloyd. A Partial Evaluation Procedure for Logic

Programs. In S. Debray and M. Hermenegildo, editors,

, pages 343{358. The MIT

Press, Cambridge, MA, 1990.

[Bol93] R. Bol. Loop Checking in Partial Deduction.

, 16(1&2):25{46, 1993.

[Boy93] J. Boye. Avoiding Dynamic Delays in Functional Logic Languages. In

J. Penjam and M. Bruynooghe, editors,

, pages 12{27. Springer LNCS 714, 1993.

[BPM93] J. Boye, J. Paakki, and J. Maluszynski. Synthesis of Directionality Infor-

mation for Functional Logic Programs. In

, pages 165{177. Springer LNCS 724, 1993.

[Bru91] M. Bruynooghe. A Practical Framework for the Abstract Interpretation

of Logic Programs. , 10:91{124, 1991.

[BW95] A. Bockmayr and A. Werner. LSE Narrowing for Decreasing Conditio-

nal Term Rewrite Systems. In

. Springer LNCS 968, 1995.

[CC77] P. Cousot and R. Cousot. Abstract Interpretation: A Uni�ed Lattice Mo-

del for Static Analysis of Programs by Construction or Approximation of

Fixpoints. In

, pages 238{252, 1977.

[CC79] P. Cousot and R. Cousot. Systematic Design of Program Analysis Fra-

meworks. In

, pages 269{282, 1979.

[CC92] P. Cousot and R. Cousot. Abstract Interpretation and Application to

Logic Programs. , 13(2&3):103{179, 1992.

[CD93] C. Consel and O. Danvy. Partial Evaluation in Parallel.

, 5(4):315{330, 1993.

[CDG93] M. Codish, S.K. Debray, and R. Giacobazzi. Compositional Analysis

of Modular Logic Programs. In

BIBLIOGRAF��A

Principles of Programming Languages

Declarative Pro-

gramming. Workshops in Computing

ACM Transactions on Programming Languages

and Systems

Proc. of Partial

Evaluation and Semantics-Based Program Manipulation, Copenhagen,

Denmark, June 1993

et al

Proc. of the 8th Int'l Conf. on Logic

Programming, ICLP'91

Proc. of RTA'91

Proc. of

CONCUR'90

Proc. of the Conf. on Rewrite Techniques and Applications, RTA'89

Handbook of Theoretical Computer Science

Logic Programming, Functions,

Relations and Equations

Proc. of Se-

cond Int'l Conf. on Algebraic and Logic Programming

173

, pages 451{464. ACM, New York,

1993.

[CF92] P.H. Cheong and L. Fribourg. A survey of the implementations of na-

rrowing. In J. Darlington and R. Dietrich, editors,

, pages 177{187. Springer-Verlag

and BCS, 1992.

[CFM94] M. Codish, M. Falaschi, and K. Marriott. Suspension Analyses for Con-

current Logic Programs.

, 16(3):649{686, 1994.

[Chi93] W. Chin. Towards an Automated Tupling Strategy. In

, pages 119{132. ACM, New York, 1993.

[Cos91] V.S. Costa . The Andorra-I Engine: A Parallel Implementation

of the Basic Andorra Model. In

, pages 825{839, 1991.

[CR91] J. Chabin and P. R�ety. Narrowing directed by a graph of terms. In

G. Goos and J. Hartmanis, editors, , pages 112{123.

Springer LNCS 488, 1991.

[dBP90] F.S. de Boer and C. Palamidessi. On the Asynchronous Nature of Com-

munication in Concurrent Logic Languages: A Fully Abstract Model

Based on Sequences. In J.C.M. Baeten and J.W. Klop, editors,

, pages 175{194. Springer LNCS 458, 1990.

[DG89] J. Darlington and Y. Guo. Narrowing and uni�cation in functional pro-

gramming: an evaluation mechanism for absolute set abstraction. In

,

pages 92{108. Springer LNCS 355, 1989.

[DJ90] N. Dershowitz and J.-P. Jouannaud. Rewrite Systems. In J. van Leeu-

wen, editor, , volume B: For-

mal Models and Semantics, pages 243{320. Elsevier, Amsterdam, 1990.

[DL86] D. DeGroot and G. Lindstrom, editors.

. Prentice Hall, Englewood Cli�s, NJ, 1986.

[DL90] N. Dershowitz and N. Lindenstrauss. An Abstract Concurrent Machine

for Rewriting. In H. Kirchner and W. Wechler, editors,

, pages 318{331.

Springer LNCS 463, 1990.

BIBLIOGRAF��A

Journal of Logic Programming

Proc. of the Int'l Workshop

on Partial Evaluation and Mixed Computation

Machine

Intelligence

Journal of Symbolic Computation

Proc. of First Int'l

Workshop on Conditional Term Rewriting

Proc. of CA-

AP'88

Proc. of the Int'l Workshop on Partial Evaluation and

Mixed Computation

Information Pro-

cessing Letters

Acta Cybernetica

Formal Description of Programming Concepts

Proc. of the Int'l Workshop on Partial Evaluation

and Mixed Computation

174

[DM85] P. Deransart and J. Maluszy�nski. Relating Logic Programs and Attribute

Grammars. , 2:119{156, 1985.

[DP88a] J. Darlington and H. Pull. A Program Development Methodology Based

on a Uni�ed Approach to Execution and Transformation. In D. Bj�rner,

A.P. Ershov, and N.D. Jones, editors,

, pages 117{131. North-

Holland, Amsterdam, 1988.

[DP88b] N. Dershowitz and A. Plaisted. Equational Programming.

, 11:21{56, 1988.

[DR93] N. Dershowitz and U. Reddy. Deductive and Inductive Synthesis of

Equational Programs. , 15:467{494,

1993.

[DS87] N. Dershowitz and G. Sivakumar. Solving Goals in Equational Lan-

guages. In S. Kaplan and J. Joaunnaud, editors,

, pages 45{55. Springer LNCS

308, 1987.

[Ech88] R. Echahed. On completeness of narrowing strategies. In

, pages 89{101. Springer LNCS 299, 1988.

[EJ88] A.P. Ershov and N.D. Jones. Two Characterizations of Partial Evalua-

tion and Mixed Computation. In D. Bj�rner, A.P. Ershov, and N.D.

Jones, editors,

, pages xxiii{xxix. North-Holland, Amsterdam, 1988.

[Ers77] A.P. Ershov. On the Partial Computation Principle.

, 6(2):38{41, 1977.

[Ers78a] A.P. Ershov. Mixed Computation in the Class of Recursive Program

Schemata. , 4(1):19{23, 1978.

[Ers78b] A.P. Ershov. On the Essence of Compilation. In E.J. Neuhold, editor,

, pages 391{420. North-

Holland, Amsterdam, 1978.

[Ers88] A.P. Ershov. Opening Key-note Speech. In D. Bj�rner, A.P. Ershov, and

N.D. Jones, editors,

, pages xxiii{xxix. North-Holland, Amsterdam,

1988.

BIBLIOGRAF��A

Proc of 4th

Int'l Conf. on Automated Deduction

Applicable Algebra in Engineering, Communication and Compu-

ting

Proc. of Second IEEE Int'l Symp.

on Logic Programming

Systems, Computers, Controls

et al.

RIMS Symposia on Software Science and Engineering, Kyoto,

Japan, 1982

Proc. Int'l Conf. on Fifth Generation Computer Systems

Proc. of

Partial Evaluation and Semantics-Based Program Manipulation, Copen-

hagen, Denmark, June 1993

Proc. of 2nd

Workshop on Meta-Programming in Logic

Proc. of CSL'91

Proc. of 3rd Int'l Workshop on Static Analysis,

WSA'93

Proc.

175

[Fay79] M. Fay. First Order Uni�cation in an Equational Theory. In

, pages 161{167, 1979.

[Fer92] M. Fern�andez. Narrowing Based Procedures for Equational Disuni�ca-

tion.

, 3:1{26, 1992.

[Fri85] L. Fribourg. SLOG: a logic programming language interpreter based on

clausal superposition and rewriting. In

, pages 172{185. IEEE, New York, 1985.

[Fut71] Y. Futamura. Partial Evaluation of Computation Process { An Approa-

ch to a Compiler-Compiler. , 2(5):45{50,

1971.

[Fut83] Y. Futamura. Partial Computation of Programs. In E. Goto ,

editor,

, pages 1{35. Springer LNCS 147, 1983.

[Fut88] Y. Futamura. Program Evaluation and Generalized Partial Computa-

tion. In , pages

1{8. ICOT, Tokyo, 1988.

[Gal93] J. Gallagher. Tutorial on Specialisation of Logic Programs. In

, pages 88{98. ACM, New York, 1993.

[GB90] J. Gallagher and M. Bruynooghe. Some Low-Level Source Transfor-

mations for Logic Programs. In M. Bruynooghe, editor,

, pages 229{246. Department

of Computer Science, KU Leuven, Belgium, 1990.

[GHR92] J.C. Gonz�alez-Moreno, M.T. Hortal�a-Gonz�alez, and M. Rodr��guez-

Artalejo. Denotational versus Declarative Semantics for Functional Pro-

gramming. In , pages 134{148. Springer LNCS 626,

1992.

[GK93] R. Gl�uck and A.V. Klimov. Occam's Razor in Metacomputation: the

Notion of a Perfect Process Tree. In P. Cousot, M. Falaschi, G. Fil�e,

and A. Rauzy, editors,

, pages 112{123. Springer LNCS 724, 1993.

[GL91] M. Gabbrielli and G. Levi. On the Semantics of Logic Programs. In

J. Leach-Albert, B. Monien, and M. Rodr��guez-Artalejo, editors,

BIBLIOGRAF��A

of the 18th Int'l Colloquium on Automata, Languages and Programming

Foundations of Logic and Functional Programming

Journal of Logic Programming

Proc. Int'l Symp. on Programming Language Implementation

and Logic Programming, PLILP'94

Proc. of 2nd

Int'l Workshop on Programming Language Implementation and Logic

Programming

Proc. Int'l Workshop on Processing Declarative Knowledge

Proc. of

PLILP'92, Leuven (Belgium)

Proc.

of 6th Int'l Symp. on Programming Language Implementation and Logic

Programming

Journal of Logic Programming

Proc. of Fifth Int'l Conf. on Compiler Construction

A Program Manipulation System Based on Partial Eva-

luation

176

,

pages 1{19. Springer LNCS 510, 1991.

[GM86] E. Giovannetti and C. Moiso. A completeness result for E-uni�cation

algorithms based on Conditional Narrowing. In M. Boscarol, L. Carlucci,

and G. Levi, editors, ,

pages 157{167. Springer LNCS 306, 1986.

[GR89] J.H. Gallier and S. Raatz. Extending SLD-resolution to equational Horn

clauses using E-uni�cation. , 6:3{43, 1989.

[GS94] R. Gl�uck and M.H. S�rensen. Partial Deduction and Driving are Equi-

valent. In

, pages 165{181. Springer LNCS 844,

1994.

[Han90] M. Hanus. Compiling Logic Programs with Equality. In

, pages 387{401. Springer LNCS 456, 1990.

[Han91] M. Hanus. E�cient Implementation of Narrowing and Rewriting. In

, pages 344{

365. Springer LNAI 567, 1991.

[Han92] M. Hanus. Improving Control of Logic Programs by Using Functional

Logic Languages. In M. Bruynooghe and M. Wirsing, editors,

, volume 631, pages 1{23. Springer LNCS

631, 1992.

[Han94a] M. Hanus. Combining Lazy Narrowing with Simpli�cation. In

, pages 370{384. Springer LNCS 844, 1994.

[Han94b] M. Hanus. The Integration of Functions into Logic Programming: From

Theory to Practice. , 19&20:583{628,

1994.

[Han94c] M. Hanus. Towards the Global Optimization of Functional Logic Pro-

grams. In , pages

68{82. Springer LNCS 786, 1994.

[Har77] A. Haraldsson.

. PhD thesis, Link�oping University, Sweden, 1977. Link�oping

Studies in Science and Technology Dissertations 14.

BIBLIOGRAF��A

Proc. of 5th ACM Symp. on Principles of

Programming Languages, POPL'78

Proc. of the 1996 Joint

Conf. on Declarative Programming, APPIA-GULP-PRODE'96

Foundations of Equational Logic Programming

New Generation Computing

Proc. of the 1989 North American Conf. on Logic Pro-

gramming

Journal of Logic Programming

Proc of 5th Int'l Conf.

on Automated Deduction

Proc.

of EUROCAL'85

Proc. of 1st Int'l Static Analysis Symposium, SAS'94

Conclog: A Methodological Approach to Concurrent Logic

Programming

Partial Evaluation and Auto-

matic Program Generation

177

[Har78] A. Haraldsson. A Partial Evaluator, and its Use for Compiling Itera-

tive Statements in Lisp. In

, pages 195{202. ACM, New York,

1978.

[HL96] M. Hanus and S. Lucas. A denotational semantics for needed narrowing.

In P. Lucio, M. Martelli, and M. Navarro, editors,

, pages

259{270. U. del Pa��s Vasco, 1996.

[H�ol89] S. H�olldobler. . Springer

LNAI 353, 1989.

[HP91] P. Van Hentenryck and T. Le Provost. Incremental Search in Constraint

Logic Programming. , 9:257{275, 1991.

[HR89] M. Hermenegildo and F. Rossi. On the Correctness and E�ciency of In-

dependent And-Parallelism in Logic Programs. In E. Lusk and R. Over-

beck, editors,

, pages 369{389. The MIT Press, Cambridge, MA, 1989.

[HR95] M. Hermenegildo and F. Rossi. Strict and Non-Strict Independent And-

Parallelism in Logic Programs: Correctness, E�ciency and Compile-

Time Conditions. , 22:1{46, 1995.

[Hul80] J.M. Hullot. Canonical Forms and Uni�cation. In

, pages 318{334. Springer LNCS 87, 1980.

[Hus85] H. Hussmann. Uni�cation in Conditional-Equational Theories. In

, pages 543{553. Springer LNCS 204, 1985.

[HW92] W. Hans and S. Winkler. Abstract Interpretation of Functional Lo-

gic Languages. Technical Report 92-43, Technical University of Aachen

(RWTH Aachen), 1992.

[HZ94] M. Hanus and F. Zartmann. Mode Analysis of Functional Logic Pro-

grams. In , pages

26{42. Springer LNCS 864, 1994.

[Jac89] J.-M. Jacquet.

. PhD thesis, University of Namur, Belgium, 1989.

[JGS93] N.D. Jones, C.K. Gomard, and P. Sestoft.

. Prentice-Hall, Englewood Cli�s, NJ, 1993.

BIBLIOGRAF��A

Proc.

of 14th Annual ACM Symp. on Principles of Programming Languages

Proc. of the 1989 North American Conf. on Logic Programming

Journal of Logic Programming

Formal

Descriptions of Programming Concepts

Proc. of Fourth Int'l Conf. on Logic

Programming

Proc. of LOPS-

TR'92

Proc. of the Int'l Workshop on Partial Evaluation and Mixed Computa-

tion

Logic,

Language and Computation

Abstract Interpretation of Declarative Languages

Journal of Symbolic Computation

Aachener Informatik-Bericht

178

[JL87] J. Ja�ar and J.-L. Lassez. Constraint Logic Programming. In

,

pages 111{119. ACM, 1987.

[JL89] D. Jacobs and A. Langen. Accurate and E�cient Approximation of Va-

riable Aliasing in Logic Programs. In E. Lusk and R. Overbeck, editors,

, pages

154{165. The MIT Press, Cambridge, MA, 1989.

[JLM84] J. Ja�ar, J.-L. Lassez, and M.J. Maher. A theory of complete logic

programs with equality. , 3:211{223, 1984.

[JLM86] J. Ja�ar, J.-L. Lassez, and M.J. Maher. PROLOG-II an instance of

the logic programming language scheme. In M. Wirsing, editor,

. North-Holland, 1986.

[JM87] J. Ja�ar and S. Michaylov. Methodology and Implementation of a CLP

System. In J.-L. Lassez, editor,

. The MIT Press, Cambridge, MA, 1987.

[JMM93] J.A. Jim�enez-Martin, J. Mari~no-Carballo, and J.J. Moreno-Navarro. Ef-

�cient Compilation of Lazy Narrowing into Prolog. In

, pages 370{384. Springer LNAI, 1993.

[Jon88] N.D. Jones. Automatic Program Specialization: A Re-Examination from

Basic Principles. In D. Bj�rner, A.P. Ershov, and N.D. Jones, editors,

, pages 225{282. North-Holland, Amsterdam, 1988.

[Jon94] N.D. Jones. The Essence of Program Transformation by Partial Evalua-

tion and Driving. In N.D. Jones, M. Hagiya, and M. Sato, editors,

, pages 206{224. Springer LNCS 792, 1994.

[JS87] N.D. Jones and H. S�ndergaard. A Semantics-based Framework for

the Abstract Interpretation of Prolog. In S. Abramsky and C. Hankin,

editors, , pages 123{142.

Ellis Horwood, Chichester, 1987.

[Kap87] S. Kaplan. Simplifying Conditional Term Rewriting Systems: Uni�ca-

tion, Termination and Con uence. ,

4:295{334, 1987.

[KH91] H. Kuchen and W. Hans. An AND-Parallel Implementation of the Func-

tional Logic Language Babel. In , volu-

me 12, pages 119{139, RWTH Aachen, 1991.

BIBLIOGRAF��A

Introduction to Metamathematics

Proc.

of ESOP'90

Proc. of the Int'l Conf. on

Algebraic and Logic Programming

Handbook of Logic in Computer Science

Proc. of PLILP'92, Leuven, Belgium

SIAM Journal of Computation

Proc. of 9th ACM Symp. on Principles of

Programming Languages

Transactions of the American Mathematical Society

Foundations of Logic Programming

Proc. of PLILP'93, Tallinn (Estonia)

179

[Kle52] S.C. Kleene. . D. van Nostrand, Prin-

ceton, NJ, 1952.

[KLMR90a] H. Kuchen, R. Loogen, J.J. Moreno-Navarro, and M. Rodr��guez-Artalejo.

Graph-based Implementation of a Functional Logic Language. In

, pages 279{290. Springer LNCS 432, 1990.

[KLMR90b] H. Kuchen, R. Loogen, J.J. Moreno-Navarro, and M. Rodr��guez-Artalejo.

Lazy Narrowing in a Graph Machine. In

, pages 298{317. Springer LNCS 463,

1990.

[Klo92] J.W. Klop. Term Rewriting Systems. In S. Abramsky, D. Gabbay, and

T. Maibaum, editors, , volume I,

pages 1{112. Oxford University Press, 1992.

[KMH92] H. Kuchen, J.J. Moreno-Navarro, and M. Hermenegildo. Independent

AND-Parallel Implementation of Narrowing. In M. Bruynooghe and

M. Wirsing, editors, , pages 24{38.

Springer LNCS 631, 1992.

[KMP77] D.E. Knuth, J.H. Morris, and V.R. Pratt. Fast Pattern Matching in

Strings. , 6(2):323{350, 1977.

[Kom82] H.J. Komorowski. Partial Evaluation as a Means for Inferencing Data

Structures in an Applicative Language: A Theory and Implementation

in the Case of Prolog. In

, pages 255{267, 1982.

[Kru60] J.B. Kruskal. Well-quasi-ordering, the Tree Theorem, and Vazsonyi's

Conjecture. , 95:210{

225, 1960.

[Lan75] D.S. Lankford. Canonical Inference. Technical Report ATP-32, Univer-

sity of Texas at Austin, 1975.

[Llo87] J.W. Lloyd. . Springer-Verlag, Berlin,

1987. Second edition.

[LLR93] R. Loogen, F. L�opez-Fraguas, and M. Rodr��guez-Artalejo. A Demand

Driven Computation Strategy for Lazy Narrowing. In J. Penjam and

M. Bruynooghe, editors, , pages

184{200. Springer LNCS 714, 1993.

BIBLIOGRAF��A

Foundations of Deductive Databases and Logic Pro-

gramming

Advances in Computers, vol. 8

The Program-

ming Language Lisp: Its Operation and Applications

Proc. of MFCS'75

Journal of Logic Programming

Proc. of Third IEEE Symp. on Logic In

Computer Science

Acta Informatica

Computer Programming and For-

mal Systems

180

[LMM88] J.-L. Lassez, M. J. Maher, and K. Marriott. Uni�cation Revisited. In

J. Minker, editor,

, pages 587{625. Morgan Kaufmann, Los Altos, Ca., 1988.

[Lom67] L.A. Lombardi. Incremental Computation. In F.L. Alt and M. Rubino�,

editors, , pages 247{333. Academic Press,

New York, 1967.

[LR64] L.A. Lombardi and B. Raphael. Lisp as the Language for an Incremental

Computer. In E.C. Berkeley and D.G. Bobrow, editors,

, pages 204{219.

The MIT Press, Cambridge, MA, 1964.

[LS75] G. Levi and F. Sirovich. Proving Program Properties, Symbolic Eva-

luation and Logical Procedural Semantics. In , pages

294{301. Springer LNCS 32, 1975.

[LS87] J.W. Lloyd and J.C. Shepherdson. Partial Evaluation in Logic Pro-

gramming. Technical Report CS-87-09, Computer Science Department,

University of Bristol, 1987. Revised version 1989, in [LS91].

[LS91] J.W. Lloyd and J.C. Shepherdson. Partial Evaluation in Logic Program-

ming. , 11:217{242, 1991.

[Mah88] M.J. Maher. Complete Axiomatizations of the Algebras of Finite, Ra-

tional and In�nite Trees. In

, pages 348{357. Computer Science Press, New York,

1988.

[Mah90] M.J. Maher. On Parameterized Substitutions. Technical Report RC

16042, IBM - T.J. Watson Research Center, Yorktown Heights, NY,

1990.

[Mar93] K. Marriott. Frameworks for Abstract Interpretation. ,

30:103{129, 1993.

[McC64] J. McCarthy. A Basis for a Mathematical Theory of Computation. In

P. Bra�ord and D. Hirschberg, editors,

, pages 33{70. North-Holland, Amsterdam, 1964.

[MG94] B. Martens and J. Gallagher. Ensuring Global Termination of Partial De-

duction while Allowing Flexible Polyvariance. Technical Report CSTR-

94-16, Computer Science Department, University of Bristol, December

1994.

+

BIBLIOGRAF��A

Proc. of ICLP'95

Proc. of the 1989 North

American Conf. on Logic Programming

Applicable Algebra in Engineering, Communication and Compu-

ting

Programs as Data Objects

Proc. of the 2nd Int'l Conf.

on Algebraic and Logic Programming, ALP'90

Proc. of PLILP'93, Tallinn (Es-

tonia)

Babel: dise~no, sem�antica e implementaci�on de

un lenguaje que integra la programaci�on funcional y l�ogica

Journal of Logic

Programming

Information Processing 89

Journal of Logic Programming

Information and Computation

181

[MG95] B. Martens and J. Gallagher. Ensuring Global Termination of Partial

Deduction while Allowing Flexible Polyvariance. In K. Furukawa and

K. Ueda, editors, , pages 597{611, 1995.

[MH89] K. Muthukumar and M. Hermenegildo. Determination of Variable De-

pendence Information at Compile-Time Through Abstract Interpreta-

tion. In E. Lusk and R. Overbeck, editors,

, pages 166{189. The MIT Press,

Cambridge, MA, 1989.

[MH94] A. Middeldorp and E. Hamoen. Completeness Results for Basic Narro-

wing.

, 5:213{253, 1994.

[MJ86] A. Mycroft and N.D. Jones. A Relational Framework for Abstract Inter-

pretation. In , pages 536{547. Springer LNCS

154, 1986.

[MKLR90] J.J. Moreno-Navarro, H. Kuchen, R. Loogen, and M. Rodr��guez-Artalejo.

Lazy Narrowing in a Graph Machine. In

, pages 298{317. Springer

LNCS 463, 1990.

[MKM 93] J.J. Moreno-Navarro, H. Kuchen, J. Mari~no-Carballo, S. Winkler, and

W. Hans. E�cient Lazy Narrowing using Demandedness Analysis. In

J. Penjam and M. Bruynooghe, editors,

, pages 167{183. Springer LNCS 714, 1993.

[Mor89] J.J. Moreno-Navarro.

. PhD thesis,

Facultad de Inform�atica, Universidad Complutense de Madrid, 1989.

[MR92] J.J. Moreno-Navarro and M. Rodr��guez-Artalejo. Logic Programming

with Functions and Predicates: the Language BABEL.

, 12(3):191{223, 1992.

[MS89] K. Marriott and H. S�ndergaard. Semantics-based Data ow Analysis of

Logic Programs. In G. Ritter, editor, , pages

601{606. North-Holland, 1989.

[MS92] K. Marriott and H. S�ndergaard. Bottom-up Data ow Analysis of Nor-

mal Logic Programs. , 13:181{204, 1992.

[Nie88] F. Nielson. Strictness Analysis and Denotational Abstract Interpreta-

tion. , 76:29{92, 1988.

BIBLIOGRAF��A

Journal of

Symbolic Computation

Proc. of the 20th Colloquium

on Trees in Algebra and Programming

Computing in Horn Clause Theories EATCS

Monographs on Theoretical Computer Science

Proc. of 17th Int'l Colloquium on Automata, Lan-

guages and Programming

Proc. of Second IEEE Int'l Symp. on Logic Programming

Proc. of the Conf. on

Rewriting Techniques and Applications

Proc. of Third Int'l Wor-

kshop on Extensions of Logic Programing ELP'92

Proc. of RTA'85

Partial Evaluation

and Semantics-Based Program Manipulation

Proc. of 6th Int'l Joint Conf. on Theory and Practice of Software

Development, TAPSOFT'95

182

[NRS89] W. Nutt, P. R�ety, and G. Smolka. Basic narrowing revisited.

, 7:295{317, 1989.

[OMI95] S. Okui, A. Middeldorp, and T. Ida. Lazy Narrowing: Strong Comple-

teness and Eager Variable Elimination. In

, pages 394{408. Springer LNCS

915, 1995.

[Pad88] P. Padawitz. , volume 16 of

. Springer-Verlag, Berlin,

1988.

[Pal90] C. Palamidessi. Algebraic Properties of Idempotent Substitutions. In

M.S. Paterson, editor,

, pages 386{399. Springer LNCS 443, 1990.

[Plo81] G. Plotkin. A structured approach to operational semantics. Technical

Report DAIMI FN-19, Computer Science Department, Aarhus Univer-

sity, 1981.

[Red85] U.S. Reddy. Narrowing as the Operational Semantics of Functional Lan-

guages. In ,

pages 138{151. IEEE, New York, 1985.

[R�et87] P. R�ety. Improving basic narrowing techniques. In

, pages 228{241. Springer LNCS

256, 1987.

[RF93] M.J. Ram��rez and M. Falaschi. Conditional Narrowing with Constructive

Negation. In E. Lamma and P. Mello, editors,

, pages 59{79. Springer

LNCS 660, 1993.

[RKKL85] P. R�ety, C. Kirchner, H. Kirchner, and P. Lescanne. NARROWER: A

new algorithm for uni�cation and its applications to logic programming.

In , pages 141{157. Springer LNCS 202, 1985.

[Rom91] A. Romanenko. Inversion and metacomputation. In

, pages 12{22. Sigplan No-

tices, 26(9), ACM, New York, September 1991.

[San95a] D. Sands. Proving the Correctness of Recursion-Based Automatic Pro-

gram Transformations. In P. Mosses, M. Nielsen, and M. Schwartzbach,

editors,

, pages 681{695. Springer LNCS 915, 1995.

BIBLIOGRAF��A

Proc. of the 22nd Annual ACM SIGPLAN-SIGACT Symp. on

Principles of Programming Languages, POPL'95

Proc. of 18th ACM Symp. on Principles of Programming

Languages

Proc. of ICALP'82

Proc. of ILPS'95

Proc. of the 5th European Symp. on Programming, ESOP'94

Journal of Symbolic Computation

Journal of the ACM

Proc. of 7th Italian Conf. on Logic Programming

GULP'92

Proc. of ProDe'93

Sigplan Notices

Denotational Semantics: The Scott-Strachey Approach to Pro-

gramming Language Theory

183

[San95b] D. Sands. Total Correctness by Local Improvement in Program Transfor-

mation. In

, pages 221{232. ACM,

New York, 1995.

[Sar91] V.A. Saraswat. Semantic Foundation of Concurrent Constraint Pro-

gramming. In

. ACM, New York, 1991.

[Sco82] D. Scott. Domains for Denotational Semantics. In ,

pages 577{613. Springer LNCS 140, 1982.

[SG95] M.H. S�rensen and R. Gl�uck. Generalization in Positive Supercompila-

tion. In J.W. Lloyd, editor, , pages 465{479. The MIT

Press, Cambridge, MA, 1995.

[SGJ94] M.H. S�rensen, R. Gl�uck, and N.D. Jones. Towards Unifying Partial

Evaluation, Deforestation, Supercompilation, and GPC. In D. Sannella,

editor, ,

pages 485{500. Springer LNCS 788, 1994.

[Sie89] J.H. Siekmann. Uni�cation Theory. ,

7:207{274, 1989.

[Sla74] J.R. Slagle. Automated Theorem-Proving for Theories with Simpli�ers,

Commutativity and Associativity. , 21(4):622{642,

1974.

[S�r94] M.H. S�rensen. Turchin's Supercompiler Revisited: An Operational

Theory of Positive Information Propagation. Technical Report 94/7,

Master's Thesis, DIKU, University of Copenhagen, Denmark, 1994.

[SR92] F. S�aenz and J.J. Ruz. Parallelism Identi�cation in BABEL Funtional

Logic Programs. In

, pages 409{423, 1992.

[SR93] F. S�aenz and J.J. Ruz. An�alisis de Independencia de Programas Babel.

In , pages 21{38, 1993.

[SS88] P. Sestoft and H. S�ndergaard. A bibliography on partial evaluation.

, 23(2):19{27, Feb 1988.

[Sto77] J.E. Stoy.

. The MIT Press, Cambridge, MA, 1977.

BIBLIOGRAF��A

Proc. of Second Int'l Conf. on Logic

Programming

Auto-

matizirovannaya Sistema Upravlenya Stroitelstvom, vol. VI

Basic Refal and its Implementation on Computers

SIGPLAN Notices

Semantics-Directed Compiler Gene-

ration

Proc of 7th Int'l Conf. on Automata, Languages and Programming,

Noordwijkerhout, The Netherlands

ACM Transactions on

Programming Languages and Systems

Proc. of the Int'l

Workshop on Partial Evaluation and Mixed Computation

Refal-5, Programming Guide & Reference Manual

Journal of Logic Programming

Proc of the European Symp. on Programming, ESOP'88

Proc. of PLILP'90

184

[TS84] H. Tamaki and T. Sato. Unfold/Fold Transformations of Logic Pro-

grams. In S. T�arnlund, editor,

, pages 127{139, 1984.

[Tur74] V.F. Turchin. Equivalent Transformations of Refal Programs. In

, pages 36{68.

TsNIPIASS, Moscow, 1974. (In Russian).

[Tur77] V.F. Turchin, editor. .

GOSSTROI SSSR, TsNIPIASS, Moscow, 1977. (In Russian).

[Tur79] V.F. Turchin. A Supercompiler System Based on the Language Refal.

, 14(2):46{54, February 1979.

[Tur80a] V.F. Turchin. Semantic de�nitions in Refal and automatic production

of compilers. In N.D. Jones, editor,

, pages 441{474. Springer LNCS 94, 1980.

[Tur80b] V.F. Turchin. The Use of Metasystem Transition in Theorem Proving

and Program Optimization. In J. De Bakker and J. van Leeuven, edi-

tors,

, pages 645{657. Springer LNCS 85,

1980.

[Tur86] V.F. Turchin. The Concept of a Supercompiler.

, 8(3):292{325, July 1986.

[Tur88] V.F. Turchin. The Algorithm of Generalization in the Supercompiler.

In D. Bj�rner, A.P. Ershov, and N.D. Jones, editors,

, pages 531{

549. North-Holland, Amsterdam, 1988.

[Tur89] V.F. Turchin. . New

England Publishing Co., Holyoke, MA, 1989.

[vEY87] M.H. van Emden and K. Yukawa. Logic Programming with Equations.

, 4:265{288, 1987.

[Wad88] P.L. Wadler. Deforestation: transforming programs to eliminate trees. In

, pages 344{358.

Springer LNCS 300, 1988.

[WS90] B. Wang and R.K. Shyamasundar. Methodology for Proving the Termi-

nation of Logic Programs. In , pages 204{221. Springer

LNCS 456, 1990.

BIBLIOGRAF��A

World Scienti�c

Journal of Symbolic Computation

ACM Sigplan Notices

185

[Yan87] R. Yang. P-Prolog: A Parallel Logic Language. , 1987.

[You89] Y.H. You. Enumerating Outer Narrowing Derivations for Constructor-

Based Term Rewriting Systems. ,

7:319{343, 1989.

[Zha94] K. Zhang. A Review of Exploitation of AND-Parallelism and Combi-

ned AND/OR-Parallelism in Logic Programs. ,

29(2):25{32, 1994.

H E

Indice de Materias

PE

append

Conf

Conf

Eqn

Goal

Srtc

State

Sub

narrowing

narrowing

narrowing

narrowing

narrowing

abstracci�on de programas, 68

abstracci�on, funci�on de, 56

ALF, 25

algoritmo gen�erico de EP, 146, 147

an�alisis

composicional, 76

correcci�on parcial, 67

correcci�on total, 72

enlaces de variables, 99

An�alisis Sem�antico, 3

aplanamiento simple, 122

aportaciones, 8

�arbol sin subsumciones, 151

Babel, 26

cierre, 109, 119, 120

CLP, 91

CLP( / ), 92

complejidad de una derivaci�on, 122

completitud

\innermost", 24

b�asico, 23

composicional, 50

perezoso, 29

completitud fuerte, 44

composici�on paralela, 32

composici�on paralela ecuacional, 33

composicionalidad, 31, 43

concretizaci�on, funci�on de, 56

con�guraciones, 146

con�guraciones , 153

conjunto de �exitos, 18

abstracto, 64

composicional, 47

composicional abstracto, 81

gen�erico, 21

parcial, 86

conjunto de ocurrencias de cierre, 121

constructores, 15

contracciones, 111

control global, 144

control local, 144

deducci�on parcial, 108

deforestaci�on, 111, 162

derivaci�on admisible, 150

derivaci�on de , 18

descripci�on, 56

de estados inducida, 57

de objetivos, 61

de programas inducida, 62

de sustituciones, 61

de t�erminos, 61

desplegado, 109

doble , 162

dominio

, 146

, 153

, 12

, 14

, 14

, 20

, 13

187

E

E

INDICE DE MATERIAS

fail

abstract

abstract

depth

mgu

solve

sub

terms

goal

subs

driving

narrowing

narrowing

narrowing

narrowing

narrowing

narrowing

narrowing

narrowing

don't care

don't know

narrowing

188

dominios abstractos, 59

de estados, 57

de objetivos, 59

de programas, 62

de sustituciones, 61

de t�erminos, 59

, 110, 112

eager-Babel, 25

ecuaciones, 11, 12

-igualdad, 16

emparejamiento, 1

generalizado, 111

entorno, 20

esqueleto, 20

estrategia de reducci�on, 20

b�asico, 22

\innermost", 24

ordinario, 21

perezoso, 28

estrategias de , 19, 21

estrechamiento, 1

-uni�cadores, 16

evaluaci�on parcial, 116

evaluaci�on perezosa, 25

, 12

forma normal, 14

forma resuelta, 13

funci�on

, 147

, 153

, 12

, 13

, 13

, 13

, 120

, 57

, 57

funci�on de abstracci�on, 56

funci�on de restricci�on, 20

b�asico, 22

\innermost", 24

perezoso, 28

funci�on de selecci�on, 44

Futamura, proyecciones de, 107

generalizaci�on m�as espec���ca, 13, 145

grafo-U, 73

grafos

de dependencias entre t�erminos, 73

de detecci�on de bucles, 68

de prevenci�on de bucles, 62, 68, 69

HOPE, 110

igualdad estricta, 26

independencia, 109, 119, 136

independencia de variables, 100

independencia del entorno, 38

indeterminismo

, 19

, 19

insatisfacibilidad ecuacional, 86

Interpretaci�on Abstracta, 3, 55

Kleene, 107

Kruskal, 149

linealidad por la izquierda, 26

LPG, 23

, 17

abstracto, 64

b�asico, 22

composicional, 46

composicional abstracto, 78

con normalizaci�on, 159

gen�erico con estrategia, 20

\innermost", 23

perezoso, 26

s

CA

CS

iCA

iCS

INDICE DE MATERIAS

narrowing

redex

redex

189

re�nado, 89

condicional, 18

no ambig�uedad, 26

Objetivo de la Tesis, 5

objetivo ecuacional, 14

ocurrencia b�asica, 22

ocurrencias, 12

operadores abstractos

composici�on paralela abstracta, 63

uni�caci�on abstracta, 63

orden pre�jo, 12

Organizaci�on de la Memoria, 6

paralelismo conjuntivo, 32

plegado, 109

polivarianza, 145

posici�on demandada, 25

post-proceso de renombramiento, 161

problema de uni�caci�on lineal, 27

programa, 14

programa abstracto, 70

proyecciones de Futamura, 107

, 18

b�asico, 22

reescritura abstracta, 82

reescritura condicional, 14

Refal, 111

regla de desplegado, 146, 152

regla de re exi�on, 25

relaci�on de aproximaci�on, 57

relaci�on de compatibilidad, 88

renombramiento, 161

resoluci�on CLP

incremental, 93

perezosa, 95

perezosa incremental, 96

respuestas computadas, 18

respuestas parciales, 86

resultante, 112, 115

-aplanamiento, 127

s��mbolo de�nido, 15

s��mbolo irreducible, 15

satisfacci�on de restricciones

relaci�on , 96

relaci�on , 93

relaci�on , 97

relaci�on , 94

sistema de transici�on abstracto, 58

SLOG, 23, 25

solapamiento, 136

SRT, 14

SRTC, 14

basado en constructores, 23

can�onico, 15

can�onico por niveles, 15

completamente de�nido, 23

con uente, 15

con uente por niveles, 15

decreciente, 15

noetheriano, 15

subsumci�on, 149

supercompilaci�on, 107, 110

supercompilaci�on positiva, 111, 162

sustituciones, 12, 13

constructora, 24

normalizada, 15, 19

vac��a, 13

sustituciones abstractas, 61

t�ermino \innermost", 23

t�erminos, 11

teor��a de Horn ecuacional, 14

teorema s-m-n, 107

terminaci�on, 149

global, 144

local, 144, 150, 153

terminaci�on del an�alisis, 68

terminos comparables, 150

test KMP, 164

true

INDICE DE MATERIAS190

Transformaci�on de Programas, 4

, 11

tupling, 162

Turchin, 107

uni�cador m�as general, 13

uni�cadores sem�anticos, 16

uni�cadores sint�acticos, 12

variables extra, 14