Log In Sign Up

Searching Entangled Program Spaces

by   James Koppel, et al.

Many problem domains, including program synthesis and rewrite-based optimization, require searching astronomically large spaces of programs. Existing approaches often rely on building specialized data structures – version-space algebras, finite tree automata, or e-graphs – to compactly represent these programs. To find a compact representation, existing data structures exploit independence of subterms; they blow up when the choices of subterms are entangled. We introduce equality-constrained tree automata (ECTAs), a generalization of the three aforementioned data structures that can efficiently represent large spaces of programs with entangled subterms. We present efficient algorithms for extracting programs from ECTAs, implemented in a performant Haskell library, . Using we construct Hectare, a type-driven program synthesizer for Haskell. Hectare significantly outperforms a state-of-the-art synthesizer Hoogle+ – providing an average speedup of 8x – despite its implementation being an order of magnitude smaller.


page 1

page 2

page 3

page 4


Version Space Algebras are Acyclic Tree Automata

Version space algebras are ways of representing spaces of programs which...

Shape Neutral Analysis of Graph-based Data-structures

Malformed data-structures can lead to runtime errors such as arbitrary m...

Inductive Program Synthesis Over Noisy Data

We present a new framework and associated synthesis algorithms for progr...

A Language for Probabilistically Oblivious Computation

An oblivious computation is one that is free of direct and indirect info...

Automatic Parallelization of Sequential Programs

Prior work on Automatically Scalable Computation (ASC) suggests that it ...

Why is Compiling Lifted Inference into a Low-Level Language so Effective?

First-order knowledge compilation techniques have proven efficient for l...

Reasoning About Recursive Tree Traversals

Traversals are commonly seen in tree data structures, and performance-en...