Although powerful, D&C and S&C approaches struggle to perform predicate invention [1]} and learn recursive and optimal programs [2]}, partly because they only consider subsets of the examples.
For instance, Progol and Aleph need examples of both the base and inductive cases (in that order) to learn a recursive program.
To overcome these limitations, many modern systems learn from all examples simultaneously.
Modern systems also use powerful constraint solvers, such as answer set programming (ASP) solvers [3]}, to search for a hypothesis.
For instance, ASPAL [4]} pre-computes the set of all possible rules that may appear in a hypothesis and uses an ASP solver to find a subset that generalises the examples.
Many modern systems can learn optimal and recursive programs but struggle to learn large programs.
For instance, Metagol [5]} struggles to learn programs with more than six rules and ILASP3 [6]} struggles to learn rules with more than a few body literals.
