Communicating Natural Programs to Humans and Machines
  The Abstraction and Reasoning Corpus (ARC) is a set of 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. How do we build
intelligent systems that can generalize to novel situations and understand
human instructions in domains such as ARC? We posit that the answer may be
found by studying how humans communicate to each other in solving these tasks.
We present LARC, the Language-annotated ARC: a collection of natural language
descriptions by a group of human participants, unfamiliar both with ARC and
with each other, who instruct each other on how to solve ARC tasks. LARC
contains successful instructions for 88\% of the ARC tasks. We analyze the
collected instructions as `natural programs', finding that most natural program
concepts have analogies in typical computer programs. However, unlike how one
precisely programs a computer, we find that humans both anticipate and exploit
ambiguities to communicate effectively. We demonstrate that a state-of-the-art
program synthesis technique, which leverages the additional language
annotations, outperforms its language-free counterpart.
