Bottom-up synthesis of recursive functional programs using angelic execution

We present a novel bottom-up method for the synthesis of functional recursive programs. While bottom-up synthesis techniques can work better than top-down methods in certain settings, there is no prior technique for synthesizing recursive programs from logical specifications in a purely bottom-up fa...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Proceedings of ACM on programming languages 2022-01, Vol.6 (POPL), p.1-29
Hauptverfasser: Miltner, Anders, Nuñez, Adrian Trejo, Brendel, Ana, Chaudhuri, Swarat, Dillig, Isil
Format: Artikel
Sprache:eng
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 29
container_issue POPL
container_start_page 1
container_title Proceedings of ACM on programming languages
container_volume 6
creator Miltner, Anders
Nuñez, Adrian Trejo
Brendel, Ana
Chaudhuri, Swarat
Dillig, Isil
description We present a novel bottom-up method for the synthesis of functional recursive programs. While bottom-up synthesis techniques can work better than top-down methods in certain settings, there is no prior technique for synthesizing recursive programs from logical specifications in a purely bottom-up fashion. The main challenge is that effective bottom-up methods need to execute sub-expressions of the code being synthesized, but it is impossible to execute a recursive subexpression of a program that has not been fully constructed yet. In this paper, we address this challenge using the concept of angelic semantics. Specifically, our method finds a program that satisfies the specification under angelic semantics (we refer to this as angelic synthesis), analyzes the assumptions made during its angelic execution, uses this analysis to strengthen the specification, and finally reattempts synthesis with the strengthened specification. Our proposed angelic synthesis algorithm is based on version space learning and therefore deals effectively with many incremental synthesis calls made during the overall algorithm. We have implemented this approach in a prototype called Burst and evaluate it on synthesis problems from prior work. Our experiments show that Burst is able to synthesize a solution to 94% of the benchmarks in our benchmark suite, outperforming prior work.
doi_str_mv 10.1145/3498682
format Article
fullrecord <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_3498682</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_3498682</sourcerecordid><originalsourceid>FETCH-LOGICAL-c258t-490a48a4aeea30c23f5e6ebdb964b0d9c15c1a9358626cf6ee5ee7c072e338bc3</originalsourceid><addsrcrecordid>eNpNkL1OwzAYRS0EElWpeAVvTAH_xx6hAooUiQXmyHE_B6MkjmwH0beHig5M9w5HZzgIXVNyS6mQd1wYrTQ7QysmallRwej5v3-JNjl_EkKo4UJzs0LNQywljtUy43yYygfkkHH0OIFbUg5fgP0yuRLiZAc8p9gnO2a85DD12E49DMFh-P6Fj8gVuvB2yLA57Rq9Pz2-bXdV8_r8sr1vKsekLpUwxApthQWwnDjGvQQF3b4zSnRkbxyVjlrDpVZMOa8AJEDtSM2Ac905vkY3f16XYs4JfDunMNp0aClpjx3aUwf-A_XfUPc</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Bottom-up synthesis of recursive functional programs using angelic execution</title><source>ACM Digital Library Complete</source><source>EZB-FREE-00999 freely available EZB journals</source><creator>Miltner, Anders ; Nuñez, Adrian Trejo ; Brendel, Ana ; Chaudhuri, Swarat ; Dillig, Isil</creator><creatorcontrib>Miltner, Anders ; Nuñez, Adrian Trejo ; Brendel, Ana ; Chaudhuri, Swarat ; Dillig, Isil</creatorcontrib><description>We present a novel bottom-up method for the synthesis of functional recursive programs. While bottom-up synthesis techniques can work better than top-down methods in certain settings, there is no prior technique for synthesizing recursive programs from logical specifications in a purely bottom-up fashion. The main challenge is that effective bottom-up methods need to execute sub-expressions of the code being synthesized, but it is impossible to execute a recursive subexpression of a program that has not been fully constructed yet. In this paper, we address this challenge using the concept of angelic semantics. Specifically, our method finds a program that satisfies the specification under angelic semantics (we refer to this as angelic synthesis), analyzes the assumptions made during its angelic execution, uses this analysis to strengthen the specification, and finally reattempts synthesis with the strengthened specification. Our proposed angelic synthesis algorithm is based on version space learning and therefore deals effectively with many incremental synthesis calls made during the overall algorithm. We have implemented this approach in a prototype called Burst and evaluate it on synthesis problems from prior work. Our experiments show that Burst is able to synthesize a solution to 94% of the benchmarks in our benchmark suite, outperforming prior work.</description><identifier>ISSN: 2475-1421</identifier><identifier>EISSN: 2475-1421</identifier><identifier>DOI: 10.1145/3498682</identifier><language>eng</language><ispartof>Proceedings of ACM on programming languages, 2022-01, Vol.6 (POPL), p.1-29</ispartof><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c258t-490a48a4aeea30c23f5e6ebdb964b0d9c15c1a9358626cf6ee5ee7c072e338bc3</citedby><cites>FETCH-LOGICAL-c258t-490a48a4aeea30c23f5e6ebdb964b0d9c15c1a9358626cf6ee5ee7c072e338bc3</cites><orcidid>0000-0001-8006-1230 ; 0000-0002-6859-1391 ; 0000-0001-6188-9980 ; 0000-0002-5658-9956 ; 0000-0002-8338-4008</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,776,780,27901,27902</link.rule.ids></links><search><creatorcontrib>Miltner, Anders</creatorcontrib><creatorcontrib>Nuñez, Adrian Trejo</creatorcontrib><creatorcontrib>Brendel, Ana</creatorcontrib><creatorcontrib>Chaudhuri, Swarat</creatorcontrib><creatorcontrib>Dillig, Isil</creatorcontrib><title>Bottom-up synthesis of recursive functional programs using angelic execution</title><title>Proceedings of ACM on programming languages</title><description>We present a novel bottom-up method for the synthesis of functional recursive programs. While bottom-up synthesis techniques can work better than top-down methods in certain settings, there is no prior technique for synthesizing recursive programs from logical specifications in a purely bottom-up fashion. The main challenge is that effective bottom-up methods need to execute sub-expressions of the code being synthesized, but it is impossible to execute a recursive subexpression of a program that has not been fully constructed yet. In this paper, we address this challenge using the concept of angelic semantics. Specifically, our method finds a program that satisfies the specification under angelic semantics (we refer to this as angelic synthesis), analyzes the assumptions made during its angelic execution, uses this analysis to strengthen the specification, and finally reattempts synthesis with the strengthened specification. Our proposed angelic synthesis algorithm is based on version space learning and therefore deals effectively with many incremental synthesis calls made during the overall algorithm. We have implemented this approach in a prototype called Burst and evaluate it on synthesis problems from prior work. Our experiments show that Burst is able to synthesize a solution to 94% of the benchmarks in our benchmark suite, outperforming prior work.</description><issn>2475-1421</issn><issn>2475-1421</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2022</creationdate><recordtype>article</recordtype><recordid>eNpNkL1OwzAYRS0EElWpeAVvTAH_xx6hAooUiQXmyHE_B6MkjmwH0beHig5M9w5HZzgIXVNyS6mQd1wYrTQ7QysmallRwej5v3-JNjl_EkKo4UJzs0LNQywljtUy43yYygfkkHH0OIFbUg5fgP0yuRLiZAc8p9gnO2a85DD12E49DMFh-P6Fj8gVuvB2yLA57Rq9Pz2-bXdV8_r8sr1vKsekLpUwxApthQWwnDjGvQQF3b4zSnRkbxyVjlrDpVZMOa8AJEDtSM2Ac905vkY3f16XYs4JfDunMNp0aClpjx3aUwf-A_XfUPc</recordid><startdate>20220101</startdate><enddate>20220101</enddate><creator>Miltner, Anders</creator><creator>Nuñez, Adrian Trejo</creator><creator>Brendel, Ana</creator><creator>Chaudhuri, Swarat</creator><creator>Dillig, Isil</creator><scope>AAYXX</scope><scope>CITATION</scope><orcidid>https://orcid.org/0000-0001-8006-1230</orcidid><orcidid>https://orcid.org/0000-0002-6859-1391</orcidid><orcidid>https://orcid.org/0000-0001-6188-9980</orcidid><orcidid>https://orcid.org/0000-0002-5658-9956</orcidid><orcidid>https://orcid.org/0000-0002-8338-4008</orcidid></search><sort><creationdate>20220101</creationdate><title>Bottom-up synthesis of recursive functional programs using angelic execution</title><author>Miltner, Anders ; Nuñez, Adrian Trejo ; Brendel, Ana ; Chaudhuri, Swarat ; Dillig, Isil</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c258t-490a48a4aeea30c23f5e6ebdb964b0d9c15c1a9358626cf6ee5ee7c072e338bc3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2022</creationdate><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Miltner, Anders</creatorcontrib><creatorcontrib>Nuñez, Adrian Trejo</creatorcontrib><creatorcontrib>Brendel, Ana</creatorcontrib><creatorcontrib>Chaudhuri, Swarat</creatorcontrib><creatorcontrib>Dillig, Isil</creatorcontrib><collection>CrossRef</collection><jtitle>Proceedings of ACM on programming languages</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Miltner, Anders</au><au>Nuñez, Adrian Trejo</au><au>Brendel, Ana</au><au>Chaudhuri, Swarat</au><au>Dillig, Isil</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Bottom-up synthesis of recursive functional programs using angelic execution</atitle><jtitle>Proceedings of ACM on programming languages</jtitle><date>2022-01-01</date><risdate>2022</risdate><volume>6</volume><issue>POPL</issue><spage>1</spage><epage>29</epage><pages>1-29</pages><issn>2475-1421</issn><eissn>2475-1421</eissn><abstract>We present a novel bottom-up method for the synthesis of functional recursive programs. While bottom-up synthesis techniques can work better than top-down methods in certain settings, there is no prior technique for synthesizing recursive programs from logical specifications in a purely bottom-up fashion. The main challenge is that effective bottom-up methods need to execute sub-expressions of the code being synthesized, but it is impossible to execute a recursive subexpression of a program that has not been fully constructed yet. In this paper, we address this challenge using the concept of angelic semantics. Specifically, our method finds a program that satisfies the specification under angelic semantics (we refer to this as angelic synthesis), analyzes the assumptions made during its angelic execution, uses this analysis to strengthen the specification, and finally reattempts synthesis with the strengthened specification. Our proposed angelic synthesis algorithm is based on version space learning and therefore deals effectively with many incremental synthesis calls made during the overall algorithm. We have implemented this approach in a prototype called Burst and evaluate it on synthesis problems from prior work. Our experiments show that Burst is able to synthesize a solution to 94% of the benchmarks in our benchmark suite, outperforming prior work.</abstract><doi>10.1145/3498682</doi><tpages>29</tpages><orcidid>https://orcid.org/0000-0001-8006-1230</orcidid><orcidid>https://orcid.org/0000-0002-6859-1391</orcidid><orcidid>https://orcid.org/0000-0001-6188-9980</orcidid><orcidid>https://orcid.org/0000-0002-5658-9956</orcidid><orcidid>https://orcid.org/0000-0002-8338-4008</orcidid><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 2475-1421
ispartof Proceedings of ACM on programming languages, 2022-01, Vol.6 (POPL), p.1-29
issn 2475-1421
2475-1421
language eng
recordid cdi_crossref_primary_10_1145_3498682
source ACM Digital Library Complete; EZB-FREE-00999 freely available EZB journals
title Bottom-up synthesis of recursive functional programs using angelic execution
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-31T23%3A58%3A56IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-crossref&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Bottom-up%20synthesis%20of%20recursive%20functional%20programs%20using%20angelic%20execution&rft.jtitle=Proceedings%20of%20ACM%20on%20programming%20languages&rft.au=Miltner,%20Anders&rft.date=2022-01-01&rft.volume=6&rft.issue=POPL&rft.spage=1&rft.epage=29&rft.pages=1-29&rft.issn=2475-1421&rft.eissn=2475-1421&rft_id=info:doi/10.1145/3498682&rft_dat=%3Ccrossref%3E10_1145_3498682%3C/crossref%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true