The aim of this paper is to provide theoretical foundations for the declarative debugging of wrong answers in lazy functional
logic programming. We rely on a logical framework which formalizes both the intended meaning and the execution model of programs
in a simple language which combines the expressivity of pure Prolog and a significant subset of Haskell. As novelties w.r.t.
to previous related approaches, we deal with functional values both as arguments and as results of higher order functions,
we obtain a completely formal specification of the debugging method, and we extend known soundness and completeness results
for the debugging of wrong answers in logic programming to a substantially more difficult context. A prototype implementation
of a working debugger is planned as future work.
Work partially supported by the Spanish CICYT (project CICYT-TIC98-0445-C03-02/97 ‘TREND’)
Acknowledgement We are grateful to the anonymous referees for their constructive remarks.