  The Abstraction and Reasoning Corpus (ARC) is a general artificial
intelligence benchmark that is currently unsolvable by any Machine Learning
method, including Large Language Models (LLMs). It demands strong
generalization and reasoning capabilities which are known to be weaknesses of
Neural Network based systems. In this work, we propose a Program Synthesis
system that uses Inductive Logic Programming (ILP), a branch of Symbolic AI, to
solve ARC. We have manually defined a simple Domain Specific Language (DSL)
that corresponds to a small set of object-centric abstractions relevant to ARC.
This is the Background Knowledge used by ILP to create Logic Programs that
provide reasoning capabilities to our system. The full system is capable of
generalize to unseen tasks, since ILP can create Logic Program(s) from few
examples, in the case of ARC: pairs of Input-Output grids examples for each
task. These Logic Programs are able to generate Objects present in the Output
grid and the combination of these can form a complete program that transforms
an Input grid into an Output grid. We randomly chose some tasks from ARC that
dont require more than the small number of the Object primitives we implemented
and show that given only these, our system can solve tasks that require each,
such different reasoning.
