  The Abstraction and Reasoning Corpus (ARC) is a set of procedural tasks that
tests an agent's ability to flexibly solve novel problems. While most ARC tasks
are easy for humans, they are challenging for state-of-the-art AI. What makes
building intelligent systems that can generalize to novel situations such as
ARC difficult? We posit that the answer might be found by studying the
difference of \emph{language}: While humans readily generate and interpret
instructions in a general language, computer systems are shackled to a narrow
domain-specific language that they can precisely execute. We present LARC, the
\textit{Language-complete ARC}: a collection of natural language descriptions
by a group of human participants who instruct each other on how to solve ARC
tasks using language alone, which contains successful instructions for 88\% of
the ARC tasks. We analyze the collected instructions as `natural programs',
finding that while they resemble computer programs, they are distinct in two
ways: First, they contain a wide range of primitives; Second, they frequently
leverage communicative strategies beyond directly executable codes. We
demonstrate that these two distinctions prevent current program synthesis
techniques from leveraging LARC to its full potential, and give concrete
suggestions on how to build the next-generation program synthesizers.
