We explore the use of Mercury for Inductive Logic Programming and present IMP0.5, the product of our research. Mercury is a compiled logic programming language with modern features, which requires the user to write type, mode and determinism declarations for each of their predicates. This information is used by the Mercury compiler to optimise generated code, which, amongst other things, enables Mercury to provide faster execution than Prolog. IMP0.5 is an ILP system, and an ILP software library, which contains re-usable modules of ILP related code. Our aim in creating IMP0.5 as a software library was to significantly reduce the effort required to implement new ILP algorithms. We feel this has been achieved and provide implementations of some typical ILP algorithms, the most notable being the Aleph default algorithm. Since Mercury is a purely declarative language run-time assertion of induced hypotheses is prohibited. Therefore, hypotheses are represented as ground terms, and, to enable fast cover testing, interpreted with a problem specific interpreter, which is generated at compile-time. We also use a cover set representation based on RL-Trees, which is very space efficient and thus beneficial for large searches. Empirical results are generally good, especially for complex background knowledge, and in one case shows a 56 times speed-up compared with Aleph.
|Publication status||Published - 1 Mar 2009|