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/}
}