  Code generation, defined as automatically writing a piece of code to solve a
given problem for which an evaluation function exists, is a classic hard AI
problem. Its general form, writing code using a general language used by human
programmers from scratch is thought to be impractical. Adding constraints to
the code grammar, implementing domain specific concepts as primitives and
providing examples for the algorithm to learn, makes it practical. Formal
fields is a framework to do code generation across domains using the same
algorithms and language structure. Its ultimate goal is not just solving
different narrow problems, but providing necessary abstractions to integrate
many working solutions as a single lifelong reasoning system. It provides a
common grammar to define: a domain language, a problem and its evaluation. The
framework learns from examples of code snippets about the structure of the
domain language and searches completely new code snippets to solve unseen
problems in the same field. Formal fields abstract the search algorithm away
from the problem. The search algorithm is taken from existing reinforcement
learning algorithms. In our implementation it is an apropos Monte-Carlo Tree
Search (MCTS). We have implemented formal fields as a fully documented open
source project applied to the Abstract Reasoning Challenge (ARC). The
implementation found code snippets solving twenty two previously unsolved ARC
problems.
