Learn More
This article presents an improved approach to assist diagnosis of failures in software (fault localisation) by ranking program statements or blocks in accordance with to how likely they are to be buggy. We present a very simple single-bug program to model the problem. By examining different possible execution paths through this model program over a number(More)
  • Lee Naish
  • Journal of Functional and Logic Programming
  • 1997
We present a very simple but flexible declarative debugging scheme. A Abstract-1 declarative debugger can be defined in Prolog with a single clause, and relies on the definition of just two additional predicates. With suitable definitions of these predicates, the debugger can diagnose several classes of bugs in many languages. We give examples of diagnoses(More)
This paper investigates the role of coroutining in the termination of logic programs. We deene a variant of SLD resolution, in which the execution of atoms may be suspended indeenitely, and give some basic results concerning success, nite failure and oundering. Next we discuss how correct procedures can be combined to form new procedures using disjunction,(More)
This paper describes an extension to NU-Prolog which allows evaluable functions to be deened using equations. We consider it to be the most pragmatic way of combining functional and relational programming. The implementation consists of several hundred lines of Prolog code and the underlying Prolog implementation was not modiied at all. However, the system(More)
More specific versions of definite logic programs are introduced. These are versions of a program in which each clause is further instantiated or removed and which have an equivalent set of successful derivations to those of the original program, but a possibly increased set of finitely failed goals. They are better than the original program because failure(More)
Declarative debugging has many advantages over conventional approaches to de-bugging for logic and functional programs. This paper extends a previously deened scheme for declarative debugging in which computations were considered either correct or erroneous. We argue that a third value, \inadmissible", should be supported and show how this can be done. Two(More)