# Learning logic programs by explaining their failures

arXiv: https://arxiv.org/abs/2102.12551 · HTML: https://mlsanity.com/paper/2102.12551/

## Key facts

- No citing papers in the map yet (data through 14 Oct 2026).
- Builds on 11 of its 52 references that are in the map.
- First posted on arXiv 18 Feb 2021.

## Builds on (most cited first, 11 of 11)

- [Learning Explanatory Rules from Noisy Data](https://mlsanity.com/paper/1711.04574/) (2017)
- [Learning programs by learning from failures](https://mlsanity.com/paper/2005.02259/) (2020)
- [Clingo = ASP + Control: Preliminary Report](https://mlsanity.com/paper/1405.3694/) (2014)
- [Few-Shot Bayesian Imitation Learning with Logical Program Policies](https://mlsanity.com/paper/1904.06317/) (2019)
- [Making sense of sensory input](https://mlsanity.com/paper/1910.02227/) (2019)
- [Program Synthesis using Conflict-Driven Learning](https://mlsanity.com/paper/1711.08029/) (2017)
- [Randomised Gaussian Process Upper Confidence Bound for Bayesian Optimisation](https://mlsanity.com/paper/2006.04296/) (2020)
- [Inductive general game playing](https://mlsanity.com/paper/1906.09627/) (2019)
- [Best-Effort Inductive Logic Programming via Fine-grained Cost-based Hypothesis Generation](https://mlsanity.com/paper/1707.02729/) (2017)
- [Answering the "why" in Answer Set Programming - A Survey of Explanation Approaches](https://mlsanity.com/paper/1809.08034/) (2018)
- [Playgol: learning programs through play](https://mlsanity.com/paper/1904.08993/) (2019)

## Abstract (arXiv)

Scientists form hypotheses and experimentally test them. If a hypothesis fails (is refuted), scientists try to explain the failure to eliminate other hypotheses. The more precise the failure analysis the more hypotheses can be eliminated. Thus inspired, we introduce failure explanation techniques for inductive logic programming. Given a hypothesis represented as a logic program, we test it on examples. If a hypothesis fails, we explain the failure in terms of failing sub-programs. In case a positive example fails, we identify failing sub-programs at the granularity of literals. We introduce a failure explanation algorithm based on analysing branches of SLD-trees. We integrate a meta-interpreter based implementation of this algorithm with the test-stage of the Popper ILP system. We show that fine-grained failure analysis allows for learning fine-grained constraints on the hypothesis space. Our experimental results show that explaining failures can drastically reduce hypothesis space exploration and learning times.
