  Scientists form hypotheses and experimentally test them. If a hypothesis
fails (is refuted), scientists try to explain the failure to eliminate other
hypotheses. We introduce similar explanation techniques for inductive logic
programming (ILP). We build on the ILP approach learning from failures. Given a
hypothesis represented as a logic program, we test it on examples. If a
hypothesis fails, we identify clauses and literals responsible for the failure.
By explaining failures, we can eliminate other hypotheses that will provably
fail. We introduce a technique for failure explanation based on analysing
SLD-trees. We experimentally evaluate failure explanation in the Popper ILP
system. Our results show that explaining failures can drastically reduce
learning times.
