Show simple item record

dc.contributor.authorMariano, Benjamin
dc.contributor.authorReese, Josh
dc.contributor.authorXu, Siyuan
dc.contributor.authorNguyen, ThanhVu
dc.contributor.authorQiu, Xiaokang
dc.contributor.authorFoster, Jeffrey S
dc.contributor.authorSolar-Lezama, Armando
dc.date.accessioned2021-10-27T19:56:21Z
dc.date.available2021-10-27T19:56:21Z
dc.date.issued2019
dc.identifier.urihttps://hdl.handle.net/1721.1/133726
dc.description.abstract<jats:p>A key challenge in program synthesis is synthesizing programs that use libraries, which most real-world software does. The current state of the art is to model libraries with mock library implementations that perform the same function in a simpler way. However, mocks may still be large and complex, and must include many implementation details, both of which could limit synthesis performance. To address this problem, we introduce JLibSketch, a Java program synthesis tool that allows library behavior to be described with algebraic specifications, which are rewrite rules for sequences of method calls, e.g., encryption followed by decryption (with the same key) is the identity. JLibSketch implements rewrite rules by compiling JLibSketch problems into problems for the Sketch program synthesis tool. More specifically, after compilation, library calls are represented by abstract data types (ADTs), and rewrite rules manipulate those ADTs. We formalize compilation and prove it sound and complete if the rewrite rules are ordered and non-unifiable. We evaluated JLibSketch by using it to synthesize nine programs that use libraries from three domains: data structures, cryptography, and file systems. We found that algebraic specifications are, on average, about half the size of mocks. We also found that algebraic specifications perform better than mocks on seven of the nine programs, sometimes significantly so, and perform equally well on the last two programs. Thus, we believe that JLibSketch takes an important step toward synthesis of programs that use libraries.</jats:p>
dc.language.isoen
dc.publisherAssociation for Computing Machinery (ACM)
dc.relation.isversionof10.1145/3360558
dc.rightsCreative Commons Attribution 4.0 International license
dc.rights.urihttps://creativecommons.org/licenses/by/4.0/
dc.sourceACM
dc.titleProgram synthesis with algebraic library specifications
dc.typeArticle
dc.contributor.departmentMassachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
dc.relation.journalProceedings of the ACM on Programming Languages
dc.eprint.versionFinal published version
dc.type.urihttp://purl.org/eprint/type/ConferencePaper
eprint.statushttp://purl.org/eprint/status/NonPeerReviewed
dc.date.updated2021-03-26T12:47:59Z
dspace.orderedauthorsMariano, B; Reese, J; Xu, S; Nguyen, T; Qiu, X; Foster, JS; Solar-Lezama, A
dspace.date.submission2021-03-26T12:48:00Z
mit.journal.volume3
mit.journal.issueOOPSLA
mit.licensePUBLISHER_CC
mit.metadata.statusAuthority Work and Publication Information Needed


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record