Program Sketching by Automatically Generating Mocks from Tests
Author(s)
Bragg, Nate FF; Foster, Jeffrey S; Roux, Cody; Solar-Lezama, Armando
DownloadPublished version (539.8Kb)
Publisher with Creative Commons License
Publisher with Creative Commons License
Creative Commons Attribution
Terms of use
Metadata
Show full item recordAbstract
Sketch is a popular program synthesis tool that solves for unknowns in a sketch or partial program. However, while Sketch is powerful, it does not directly support modular synthesis of dependencies, potentially limiting scalability. In this paper, we introduce Sketcham, a new technique that modularizes a regular sketch by automatically generating mocks—functions that approximate the behavior of complete implementations—from the sketch’s test suite. For example, if the function f originally calls g, Sketcham creates a mock gm from g’s tests and augments the sketch with a version of f that calls gm. This change allows the unknowns in f and g to be solved separately, enabling modular synthesis with no extra work from the Sketch user. We evaluated Sketcham on ten benchmarks, performing enough runs to show at a 95% confidence level that Sketcham improves median synthesis performance on six of our ten benchmarks by a factor of up to 5× compared to plain Sketch, including one benchmark that times out on Sketch, while exhibiting similar performance on the remaining four. Our results show that Sketcham can achieve modular synthesis by automatically generating mocks from tests.
Date issued
2021Department
Massachusetts Institute of Technology. Computer Science and Artificial Intelligence LaboratoryJournal
COMPUTER AIDED VERIFICATION (CAV 2021), PT I
Publisher
Springer International Publishing
Citation
Bragg, Nate FF, Foster, Jeffrey S, Roux, Cody and Solar-Lezama, Armando. 2021. "Program Sketching by Automatically Generating Mocks from Tests." COMPUTER AIDED VERIFICATION (CAV 2021), PT I, 12759.
Version: Final published version