A Debugging Scheme for Functional Logic Programs
M. Alpuente, F. Correa, M. Falaschi
In Proc. of the International Workshop on Functional and (Constraint) Logic Programming (WFLP 2001)
, Report No. 2017, University of Kiel
Abstract
We present a general framework for the declarative debugging of
functional logic programs, which is valid both for eager as well
as lazy programs. We associate to our programs a semantics based
on a (continuous) immediate consequence operator which models
computed answers. Then we show that, given the intended
specification of a program $P$, it is possible to check the
correctness of $P$ by a single step of the immediate consequence
operator.
Our methodology can be used for both bottom-up as well as
top-down (abstract) debugging and is particularly suitable when
pure functional logic programs are used as specification of other
more efficient functional logic programs, going back to the
origins, i.e. looking at declarative languages as languages for
both rapid prototyping and implementation.
We also present
a more effective methodology which is based on abstract interpretation.
By approximating the intended specification of the success set
we derive a finitely
terminating debugging method, which can be used statically.
Our framework is parametric w.r.t. to the chosen approximation
of the success set. We present one specific example of
approximation.
We provide an implementation of our debugging system which shows
experimentally on a wide set of benchmarks that we are able to find
some common errors in the user programs.