Cost-Sensitive Diagnosis of Declarative Programs

D. Ballis, M. Falaschi, C. Ferri, J. Hernández-Orallo, M.J. Ramírez-Quintana
2003 Electronical Notes in Theoretical Computer Science  
Diagnosis methods in debugging aim at detecting bugs of a program, either by comparing it with a correct specification or by the help of an oracle (typically, the user herself). Debugging techniques for declarative programs usually exploit the semantical properties of programs (and specifications) and generally try to detect one or more "buggy" rules. In this way, rules are split apart in an absolute way: either they are correct or not. However, in many situations, not every error has the same
more » ... onsequences, an issue that is ignored by classical debugging frameworks. In this paper, we generalise debugging by considering a cost function, i.e. a function that assigns different cost values to each kind of error and different benefit values to each kind of correct response. The problem is now redefined as assigning a real-valued probability and cost to each rule, by considering each rule more or less "guilty" of the overall error and cost of the program. This makes possible to rank rules rather than only separate them between right and wrong. Our debugging method is also different from classical approaches in that it is probabilistic, i.e. we use a set of ground examples to approximate these rankings.
doi:10.1016/s1571-0661(04)80695-9 fatcat:rpphte5w6bhd7k5vbs2oe3svee