In Logic Programming, a thread of input/output variables is often used to carry state information through the body literals of the clauses that make up a logic program. When using Inductive Logic Programming (ILP) to synthesise logic programs, the standard refinement operators that define the search space cannot enforce this pattern and non-conforming clauses have to be discarded after being constructed. We present a new refinement operator that defines a search space that only includes Horn clauses that conform to this pattern of input/output variable threads, dramatically narrowing the search space and ILP run times. We further support our theoretical justification of the new operator with experimental results over a variety of datasets.
展开▼