Abstract. The algorithm SPECTREspecializes logic programs withrespect topositive and negativeexamples by applying the transforma-tionruleunfolding together withclauseremoval. Themethod IMPUTpresented in this paper gives a modified version of this algorithm byintegrating the algorithmic debugging system IDTS with SPECTRE.The main idea of the IMPUT method is that the identification ofaclause to be unfolded has a crucial importance in the effectivenessof the specialization process. The debugging system IDTS is used toidentify this buggy clause 4. Keywords. Logic and Constraint Programming, Machine Learning 1 Introduction In this paper we present a method for the interactive revision ofmultiple predicates of logic programs. The method (called IMPUT)is based on the interactive debugging technique IDTS introduced in[6] and the specialization algorithm SPECTRE presented in [4]. Themainidea ofIMPUT isthat by combining adebugger withSPECTREan improvement of the specialization process can be achieved.The IDTS system improves Shapiro’s original algorithmic debug-ging method [12] by reducing the number of questions put to theoracle. The validity of results of a procedure call is not asked fromthe oracle if it can be inferred from a Category Partition Test con-figuration [9]. Another improvement in IDTS is that only relevantprogram execution paths that may affect the value of an incorrectoutput are analyzed [10].The problem of specializing a logic program w.r.t positive andnegative examples can be viewed as the problem of pruning an SLD-tree so that all refutations of negative examples and no refutationsof positive examples are excluded. The actual pruning can be per-formed by applying unfolding and clause removal. The algorithmSPECTRE is based on this idea, and it specializes clauses defining atarget predicate by using different strategies for selecting the literal toapply unfolding upon (e.g. the leftmost, randomly, using an impuritymeasure).The main idea of the IMPUT system is that the identification ofa clause to be unfolded has a crucial importance in the effectivenessof the specialization process. If a negative example is covered by thecurrent version of the initial program there is supposedly at least one
[1]
John W. Lloyd,et al.
Foundations of Logic Programming, 1st Edition
,
1984
.
[2]
Shan-Hwei Nienhuys-Cheng,et al.
Machine Learning and knowledge acquisition
,
1994
.
[3]
John C. Shepherdson,et al.
Unfold/fold transformations of logic programs
,
1992,
Mathematical Structures in Computer Science.
[4]
Marc J. Balcer,et al.
The category-partition method for specifying and generating fuctional tests
,
1988,
CACM.
[5]
J. W. Lloyd,et al.
Foundations of logic programming; (2nd extended ed.)
,
1987
.
[6]
J. Lloyd.
Foundations of Logic Programming
,
1984,
Symbolic Computation.
[7]
Luc De Raedt,et al.
Belief Updating from Integrity Constraints and Queries
,
1992,
Artif. Intell..
[8]
Ehud Shapiro,et al.
Algorithmic Program Debugging
,
1983
.
[9]
Zoltán Alexin,et al.
The IDT system and its application for learning Prolog programs
,
1995
.
[10]
Luc De Raedt,et al.
RUTH: an ILP Theory Revision System
,
1994,
ISMIS.
[11]
Henrik Boström.
Specialization of Recursive Predicates
,
1995,
ECML.