Synthesizing Libraries of Programs with Auxiliary Functions
Abstract
A common approach to program synthesis is to use a learned function to guide the search for a program that satisfies the user's intent. In this paper, we propose a method that offers search guidance, through a domain-dependent auxiliary function, that can be orthogonal to the guidance previous functions provide. Our method, which we call Auxiliary-Based Library Learning (Aulile), searches for a solution in the program space using a base algorithm. If this search does not produce a solution, Aulile enhances the language with a library of programs discovered in the search that optimizes for the auxiliary function. Then, it repeats the search with this library-augmented language. This process is repeated until a solution is found or the system reaches a timeout. We evaluate Aulile in string manipulation tasks. Aulile improved, in some cases by a large margin, the performance of several base algorithms that use different search and learning strategies: Bus, Bustle, Crossbeam, and Bee Search. Our results suggest that Aulile offers an effective method of injecting domain knowledge into existing systems through a library learning scheme that optimizes for an auxiliary function.
Cite
Text
Rahman et al. "Synthesizing Libraries of Programs with Auxiliary Functions." Transactions on Machine Learning Research, 2024.Markdown
[Rahman et al. "Synthesizing Libraries of Programs with Auxiliary Functions." Transactions on Machine Learning Research, 2024.](https://mlanthology.org/tmlr/2024/rahman2024tmlr-synthesizing/)BibTeX
@article{rahman2024tmlr-synthesizing,
title = {{Synthesizing Libraries of Programs with Auxiliary Functions}},
author = {Rahman, Habibur and Emireddy, Thirupathi Reddy and Tjhia, Kenneth and Parhizkar, Elham and Lelis, Levi},
journal = {Transactions on Machine Learning Research},
year = {2024},
url = {https://mlanthology.org/tmlr/2024/rahman2024tmlr-synthesizing/}
}