Introduction to combinators and &lgr;-calculus
Introduction to combinators and &lgr;-calculus
Conditional rewriting logic as a unified model of concurrency
Selected papers of the Second Workshop on Concurrency and compositionality
Combining functional and logic programming languages
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Theoretical Foundations for the Declarative Debugging of Lazy Functional Logic Programs
FLOPS '01 Proceedings of the 5th International Symposium on Functional and Logic Programming
A Complete Narrowing Calculus for Higher-Order Functional Logic Programming
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
TOY: A Multiparadigm Declarative System
RtA '99 Proceedings of the 10th International Conference on Rewriting Techniques and Applications
A demand-driven narrowing calculus with overlapping definitional trees
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Higher-order narrowing with definitional trees
Journal of Functional Programming
A new generic scheme for functional logic programming with constraints
Higher-Order and Symbolic Computation
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
A higher-order demand-driven narrowing calculus with definitional trees
ICTAC'07 Proceedings of the 4th international conference on Theoretical aspects of computing
Declarative constraint programming with definitional trees
FroCoS'05 Proceedings of the 5th international conference on Frontiers of Combining Systems
A modular semantics for higher-order declarative programming with constraints
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
Hi-index | 0.00 |
In this paper, we extend the well-known Naish's declarative debugging scheme for diagnosing wrong computed answers in first-order lazy functional-logic programs to the higher-order setting of the simply typed λ-calculus, where programs are presented by conditional pattern rewrite systems. Our approach generalizes and combines declarative debugging techniques previously developed for less expressive declarative programming paradigms involving applicative rewrite rules instead of λ-abstractions and decidable higher-order unification. Debugging starts with the observation of a wrong computed answer which the user regards as incorrect w.r.t. an intended model that provides a declarative description of the program's semantics. Debugging proceeds by exploring an abridged proof tree built on a higher-order rewriting logic with λ-abstractions that provides a purely declarative view of the computation. Finally, debugging ends with the detection of a defined function rule in the program that is incorrect w.r.t. the intended model. We prove the logical correctness of the debugging method for any sound goal solving system whose computed answers are logical consequences of the program.