Login: A logic programming language with built-in inheritance
Journal of Logic Programming
A theory of diagnosis from first principles
Artificial Intelligence
A new implementation technique for flat GHC
Logic programming
Moded flat GHC and its message-oriented implementation technique
New Generation Computing
Finding the source of type errors
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Experiences with Strong Moding in Concurrent Logic/Constraint Programming
PSLS '95 Proceedings of the International Workshop on Parallel Symbolic Languages and Systems
I/O Mode Analysis in Concurrent Logic Programming
TPPP '94 Proceedings of the International Workshop on Theory and Practice of Parallel Programming
Resource-Passing Concurrent Programming
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
A Pure Meta-interpreter for Flat GHC, a Concurrent Constraint Language
Computational Logic: Logic Programming and Beyond, Essays in Honour of Robert A. Kowalski, Part I
An integrated framework for the diagnosis and correction of rule-based programs
Theoretical Computer Science
Hi-index | 0.01 |
We study how constraint-based static analysis can be applied to the automated and systematic debugging of program errors. Strongly moding and constraint-based mode analysis are turning to play fundamental roles in debugging concurrent logic/constraint programs as well as in establishing the consistency of communication protocols and in optimization. Mode analysis of Moded Flat GHC is a constraint satisfaction problem with many simple mode constraints, and can be solved efficiently by unification over feature graphs. We have proposed a simple and efficient technique which, given a non-well-moded program, diagnoses the "reasons" of inconsistency by finding minimal inconsistent subsets of mode constraints. Since each constraint keeps track of the symbol occurrence in the program that imposed the constraint, a minimal subset also tells possible sources of program errors. The technique is quite general and can be used with other constraint-based frameworks such as strong typing. Based on the above idea, we study the possibility of automated debugging in the absence of mode/type declarations. The mode constraints are usually imposed redundantly, and the constraints that are considered correct can be used for correcting wrong symbol occurrences found by the diagnosis. As long as bugs are near-misses, the automated debugger can propose a rather small number of alternatives that include the intended program. Search space is kept small because constraints effectively prune many irrelevant alternatives. The paper demonstrates the technique by way of examples.