A Divide-Align-Conquer Strategy for Program Synthesis

by   Jonas Witt, et al.

A major bottleneck in search-based program synthesis is the exponentially growing search space which makes learning large programs intractable. Humans mitigate this problem by leveraging the compositional nature of the real world: In structured domains, a logical specification can often be decomposed into smaller, complementary solution programs. We show that compositional segmentation can be applied in the programming by examples setting to divide the search for large programs across multiple smaller program synthesis problems. For each example, we search for a decomposition into smaller units which maximizes the reconstruction accuracy in the output under a latent task program. A structural alignment of the constituent parts in the input and output leads to pairwise correspondences used to guide the program synthesis search. In order to align the input/output structures, we make use of the Structure-Mapping Theory (SMT), a formal model of human analogical reasoning which originated in the cognitive sciences. We show that decomposition-driven program synthesis with structural alignment outperforms Inductive Logic Programming (ILP) baselines on string transformation tasks even with minimal knowledge priors. Unlike existing methods, the predictive accuracy of our agent monotonically increases for additional examples and achieves an average time complexity of π’ͺ(m) in the number m of partial programs for highly structured domains such as strings. We extend this method to the complex setting of visual reasoning in the Abstraction and Reasoning Corpus (ARC) for which ILP methods were previously infeasible.


page 1

page 2

page 3

page 4

βˆ™ 03/20/2022

CrossBeam: Learning to Search in Bottom-Up Program Synthesis

Many approaches to program synthesis perform a search within an enormous...
βˆ™ 09/16/2021

Learning logic programs through divide, constrain, and conquer

We introduce an inductive logic programming approach that combines class...
βˆ™ 11/08/2016

Divide and Conquer Networks

We consider the learning of algorithmic tasks by mere observation of inp...
βˆ™ 07/26/2023

ExeDec: Execution Decomposition for Compositional Generalization in Neural Program Synthesis

When writing programs, people have the ability to tackle a new complex t...
βˆ™ 11/26/2018

Stepping Stones to Inductive Synthesis of Low-Level Looping Programs

Inductive program synthesis, from input/output examples, can provide an ...
βˆ™ 09/17/2012

Textual Features for Programming by Example

In Programming by Example, a system attempts to infer a program from inp...
βˆ™ 07/28/2020

BUSTLE: Bottom-up program-Synthesis Through Learning-guided Exploration

Program synthesis is challenging largely because of the difficulty of se...

Please sign up or login with your details

Forgot password? Click here to reset