FrAngel: Component-Based Synthesis with Control Structures
Not on the map. Why?
Abstract (arXiv)
In component-based program synthesis, the synthesizer generates a program given a library of components (functions). Existing component-based synthesizers have difficulty synthesizing loops and other control structures, and they often require formal specifications of the components, which can be expensive to generate. We present FrAngel, a new approach to component-based synthesis that can synthesize short Java functions with control structures when given a desired signature, a set of input-output examples, and a collection of libraries (without formal specifications). FrAngel aims to discover programs with many distinct behaviors by combining two main ideas. First, it mines code fragments from partially-successful programs that only pass some of the examples. These extracted fragments are often useful for synthesis due to a property that we call special-case similarity. Second, FrAngel uses angelic conditions as placeholders for control structure conditions and optimistically evaluates the resulting program sketches. Angelic conditions decompose the synthesis process: FrAngel first finds promising partial programs and later fills in their missing conditions. We demonstrate that FrAngel can synthesize a variety of interesting programs with combinations of control structures within seconds, significantly outperforming prior state-of-the-art.
Key facts. Cited by 10 papers in the map (data through 13 Oct 2026). First posted on arXiv 13 Nov 2018.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2021: 1; 2022: 2; 2023: 2; 2024: 3; 2025: 2.
10 papers.
- 2024Divide-and-Conquer Meets Consensus: Unleashing the Power of Functions in Code Generationcited by 19
- 2022CrossBeam: Learning to Search in Bottom-Up Program Synthesiscited by 18
- 2023ExeDec: Execution Decomposition for Compositional Generalization in Neural Program Synthesiscited by 17
- 2024JavaBench: A Benchmark of Object-Oriented Code Generation for Evaluating Large Language Modelscited by 10
- 2021Learning to Combine Per-Example Solutions for Neural Program Synthesiscited by 8
- 2022Compositional Generalization and Decomposition in Neural Program Synthesiscited by 6
- 2023LambdaBeam: Neural Program Search with Higher-Order Functions and Lambdascited by 6
- 2024AbstractBeam: Enhancing Bottom-Up Program Synthesis using Library Learningcited by 2
- 2025Herb.jl: A Unifying Program Synthesis Librarycited by 1
- 2025APRIL: API Synthesis with Automatic Prompt Optimization and Reinforcement Learningcited by 0
- 2025Herb.jl: A Unifying Program Synthesis Library10 Oct 2025
- 2025APRIL: API Synthesis with Automatic Prompt Optimization and Reinforcement Learning29 Aug 2025
- 2024JavaBench: A Benchmark of Object-Oriented Code Generation for Evaluating Large Language Models10 Jun 2024
- 2024Divide-and-Conquer Meets Consensus: Unleashing the Power of Functions in Code Generation30 May 2024
- 2024AbstractBeam: Enhancing Bottom-Up Program Synthesis using Library Learning27 May 2024
- 2023ExeDec: Execution Decomposition for Compositional Generalization in Neural Program Synthesis26 Jul 2023
- 2023LambdaBeam: Neural Program Search with Higher-Order Functions and Lambdas3 Jun 2023
- 2022Compositional Generalization and Decomposition in Neural Program Synthesis7 Apr 2022
- 2022CrossBeam: Learning to Search in Bottom-Up Program Synthesis20 Mar 2022
- 2021Learning to Combine Per-Example Solutions for Neural Program Synthesis14 Jun 2021