A Transformation System
for Lazy Functional Logic Programs
M. Alpuente, M. Falaschi, G. Moreno, G. Vidal
Needed narrowing is an optimal and complete operational principle
for modern declarative languages which integrate the best features of
(lazy) functional and logic programming.
We define a transformation methodology for
functional logic programs based on needed narrowing.
We provide (strong) correctness results for the transformation system
w.r.t. the set of computed values and
answer substitutions and show that the
prominent properties of needed narrowing
carry over to the transformation process and the transformed
We illustrate the power of the system by taking on
in our setting
two well-known transformation strategies (composition
We also provide an implementation
of the transformation system which, by means of some experimental results,
highlights the benefits of our approach.
program transformation, functional logic programming,