hide
Free keywords:
-
Abstract:
Logic programs with elegant and simple declarative semantics
have become very common in many areas of artificial intelligence
such as knowledge acquisition, knowledge representation and
common sense and legal reasoning. For example, in Human GENOME
project, logic programs are used in the analysis of amino acid
sequences, protein structure and drug design etc.
In this paper, we investigate the problem of learning logic
(Prolog) programs from examples and present an inference
algorithm for a class of programs.
This class of programs (called one-recursive programs)
is based on the divide-and-conquer approach and mode/type annotations.
Our class is very rich and includes many programs from Sterling and
Shapiro's book including {\tt append, merge, split, insert,
insertion-sort, preorder} and {\tt inorder} traversal of
binary trees, polynomial recognition, derivatives, sum of a list of
natural numbers etc., whereas earlier results can only deal with
very simple programs without local variables and at most two
clauses and one predicate \cite{colt92}.
Further, our algorithm does not need examples for auxiliary
predicates, but only for the target predicate.