Foundations of logic programming
Foundations of logic programming
Negation and control in Prolog
Negation and control in Prolog
From unification to constraints
Proceedings of the 6th Conference on Logic programming '87
A characterization of non-floundering logic programs
Proceedings of the 1990 North American conference on Logic programming
Declarative diagnosis of missing answers
New Generation Computing
Analyzing logic programs with dynamic scheduling
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Communications of the ACM
Algorithmic Program DeBugging
Rational Debugging in Logic Programming
Proceedings of the Third International Conference on Logic Programming
Practical aspects of declarative debugging in Haskell 98
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
A three-valued semantics for logic programmers
Theory and Practice of Logic Programming
Declarative debugging of missing answers in constraint functional-logic programming
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Declarative diagnosis of wrong answers in constraint functional-logic programming
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Hi-index | 0.00 |
Many logic programming languages have delay primitives which allow coroutining. This introduces a class of bug symptoms --- computations can flounder when they are intended to succeed or finitely fail. For concurrent logic programs this is normally called deadlock. Similarly, constraint logic programs can fail to invoke certain constraint solvers because variables are insufficiently instantiated or constrained. Diagnosing such faults has received relatively little attention to date. Since delay primitives affect the procedural but not the declarative view of programs, it may be expected that debugging would have to consider the often complex details of interleaved execution. However, recent work on semantics has suggested an alternative approach. In this paper we show how the declarative debugging paradigm can be used to diagnose unexpected floundering, insulating the user from the complexities of the execution.