© 2003 by Oxford University Press
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Original Article |
Uniform Lazy Narrowing
1 DSIC, Technical University of Valencia, Camino de Vera s/n, E-46022 Valencia, Spain. E-mail: alpuente{at}dsic.upv.es, 2 DMI, Università di Udine, Via delle Scienze 206, 33100 Udine, Italy. E-mail: falaschi{at}dimi.uniud.it, 3 Dpto. de Informática, Universidad de Castilla - La Mancha, Paseo de la Universidad 4, 13071 Ciudad Real, Spain. E-mail: pjulian{at}inf-cr.uclm.es, 4 DSIC, Technical University of Valencia, Camino de Vera s/n, E-46022 Valencia, Spain. E-mail: gvidal{at}dsic.upv.es
Needed narrowing is a complete and optimal operational principle for modern declarative languages which integrate the best features of lazy functional and logic programming. We investigate the formal relation between needed narrowing and another (not so lazy) narrowing strategy which is the basis for popular implementations of lazy functional logic languages. We demonstrate that needed narrowing and lazy narrowing are computationally equivalent over the class of uniform programs. We also introduce a complete refinement of lazy narrowing, called uniform lazy narrowing, which is still equivalent to needed narrowing over the aforementioned class. Since actual implementations of functional logic languages are based on the transformation of the original program into a uniform onewhich is then executed using a lazy narrowing strategyour results can be thought of as a formal basis for the correctness of these implementations.
Keywords: Functional logic programming; narrowing strategies
Received 30 January 2002.