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 such spaces. At their core, all these data structures exploit independence of subterms; as a result, they cannot efficiently represent more complex program spaces, where the choices of subterms are entangled. We introduce equality-constrained tree automata (ECTAs), a new data structure, designed to compactly represent large spaces of programs with entangled subterms. We present efficient algorithms for extracting programs from ECTAs, implemented in a performant Haskell library, ecta. Using the ecta library, 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 8×-despite its implementation being an order of magnitude smaller.
CITATION STYLE
Koppel, J., Guo, Z., De Vries, E., Solar-Lezama, A., & Polikarpova, N. (2022). Searching entangled program spaces. Proceedings of the ACM on Programming Languages, 6(ICFP). https://doi.org/10.1145/3547622
Mendeley helps you to discover research relevant for your work.