Herb.jl: A Unifying Program Synthesis Library

📅 2025-10-10
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
Program synthesis tools suffer from poor reusability, high integration costs, and limited extensibility. To address these challenges, this paper introduces SynthLib—a modular, Julia-based program synthesis library that decouples grammar specification, problem modeling, synthesis algorithms, and benchmarking into composable, interoperable components. Its core innovation lies in a unified abstract interface and a lightweight architectural design, which drastically lowers the barrier to implementing new synthesis methods: reproducing classic synthesizers requires only dozens of lines of code, and integrating novel algorithms reduces average development time by 80%. SynthLib is rigorously validated on standard benchmarks—including SyGuS-Comp—demonstrating correctness, efficiency, and scalability. By providing a reusable, experiment-friendly foundation, SynthLib advances programmable synthesis research and facilitates rapid prototyping, comparative evaluation, and collaborative tool development.

Technology Category

Application Category

📝 Abstract
Program synthesis -- the automatic generation of code given a specification -- is one of the most fundamental tasks in artificial intelligence (AI) and many programmers' dream. Numerous synthesizers have been developed to tackle program synthesis, manifesting different ideas to approach the exponentially growing program space. While numerous smart program synthesis tools exist, reusing and remixing previously developed methods is tedious and time-consuming. We propose Herb.jl, a unifying program synthesis library written in the Julia programming language, to address these issues. Since current methods rely on similar building blocks, we aim to modularize the underlying synthesis algorithm into communicating and fully extendable sub-compartments, allowing for straightforward reapplication of these modules. To demonstrate the benefits of using Herb.jl, we show three common use cases: 1. how to implement a simple problem and grammar, and how to solve it, 2. how to implement a previously developed synthesizer with just a few lines of code, and 3. how to run a synthesizer against a benchmark.
Problem

Research questions and friction points this paper is trying to address.

Modularizing program synthesis algorithms for reusability
Simplifying implementation of existing synthesizers with minimal code
Enabling benchmark testing across different synthesis approaches
Innovation

Methods, ideas, or system contributions that make the work stand out.

Modularizes synthesis algorithms into extendable sub-compartments
Enables reuse and remixing of program synthesis methods
Implements existing synthesizers with minimal code lines
🔎 Similar Papers
No similar papers found.
T
Tilman Hinnerichs
Technische Universiteit Delft, Delft, Netherlands
R
Reuben Gardos Reid
Technische Universiteit Delft, Delft, Netherlands
J
Jaap de Jong
Technische Universiteit Delft, Delft, Netherlands
B
Bart Swinkels
Technische Universiteit Delft, Delft, Netherlands
P
Pamela Wochner
Technische Universiteit Delft, Delft, Netherlands
N
Nicolae Filat
Technische Universiteit Delft, Delft, Netherlands
T
Tudor Magurescu
Technische Universiteit Delft, Delft, Netherlands
I
Issa Hanou
Technische Universiteit Delft, Delft, Netherlands
Sebastijan Dumancic
Sebastijan Dumancic
Tenured Assistant Professor @ Delft University of Technology
Program synthesisProbabilistic programmingLearning and ReasoningSymbolic AI