  Children learn though play. We introduce the analogous idea of learning
programs through play. In this approach, a program induction system (the
learner) is given a set of tasks and initial background knowledge. Before
solving the tasks, the learner enters an unsupervised playing stage where it
creates its own tasks to solve, tries to solve them, and saves any solutions
(programs) to the background knowledge. After the playing stage is finished,
the learner enters the supervised building stage where it tries to solve the
user-supplied tasks and can reuse solutions learnt whilst playing. The idea is
that playing allows the learner to discover reusable general programs on its
own which can then help solve the user-supplied tasks. We claim that playing
can improve learning performance. We show that playing can reduce the textual
complexity of target concepts which in turn reduces the sample complexity of a
learner. We implement our idea in Playgol, a new inductive logic programming
system. We experimentally test our claim on two domains: robot planning and
real-world string transformations. Our experimental results suggest that
playing can substantially improve learning performance. We think that the idea
of playing (or, more verbosely, unsupervised bootstrapping for supervised
program induction) is an important contribution to the problem of developing
program induction approaches that self-discover BK.
