Structuring the synthesis of heap-manipulating programs

This paper describes a deductive approach to synthesizing imperative programs with pointers from declarative specifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions—a pre- and a postcondition—which describe two states of the symbolic heap, and derive...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Proceedings of ACM on programming languages 2019-01, Vol.3 (POPL), p.1-30
Hauptverfasser: Polikarpova, Nadia, Sergey, Ilya
Format: Artikel
Sprache:eng
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 30
container_issue POPL
container_start_page 1
container_title Proceedings of ACM on programming languages
container_volume 3
creator Polikarpova, Nadia
Sergey, Ilya
description This paper describes a deductive approach to synthesizing imperative programs with pointers from declarative specifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions—a pre- and a postcondition—which describe two states of the symbolic heap, and derives a program that transforms one state into the other, guided by the shape of the heap. Our approach to program synthesis is grounded in proof theory: we introduce the novel framework of Synthetic Separation Logic (SSL), which generalises the classical notion of heap entailment P ⊢ Q to incorporate a possibility of transforming a heap satisfying an assertion P into a heap satisfying an assertion Q . A synthesized program represents a proof term for a transforming entailment statement P ↝ Q , and the synthesis procedure corresponds to a proof search. The derived programs are, thus, correct by construction, in the sense that they satisfy the ascribed pre/postconditions, and are accompanied by complete proof derivations, which can be checked independently. We have implemented a proof search engine for SSL in a form of the program synthesizer called SuSLik. For efficiency, the engine exploits properties of SSL rules, such as invertibility and commutativity of rule applications on separate heaps, to prune the space of derivations it has to consider. We explain and showcase the use of SSL on characteristic examples, describe the design of SuSLik, and report on our experience of using it to synthesize a series of benchmark programs manipulating heap-based linked data structures.
doi_str_mv 10.1145/3290385
format Article
fullrecord <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_3290385</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_3290385</sourcerecordid><originalsourceid>FETCH-LOGICAL-c258t-36dd67a0495ee7d74d496be7e5cee781886f073fa0c45422caac1efaf728c65d3</originalsourceid><addsrcrecordid>eNpNj8lKA0EURQtRMMTgL_TOVWnNw1KCEwRcqOvmWUPSkh6oV73I35tgFq7OvXC5cAi55eyec6UfpPBMOn1BFkJZTbkS_PJfviYrxB_GGPdSOekXxH7UMoc6l27YNnWXGjwMR2CHzZibXYKJ9jB007yHeppMZdwW6PGGXGXYY1qduSRfz0-f61e6eX95Wz9uaBDaVSpNjMYCU16nZKNVUXnznWzS4dgdd85kZmUGFpRWQgSAwFOGbIULRke5JHd_v6GMiCXldipdD-XQctaelNuzsvwFTZlItw</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Structuring the synthesis of heap-manipulating programs</title><source>ACM Digital Library Complete</source><source>EZB-FREE-00999 freely available EZB journals</source><creator>Polikarpova, Nadia ; Sergey, Ilya</creator><creatorcontrib>Polikarpova, Nadia ; Sergey, Ilya</creatorcontrib><description>This paper describes a deductive approach to synthesizing imperative programs with pointers from declarative specifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions—a pre- and a postcondition—which describe two states of the symbolic heap, and derives a program that transforms one state into the other, guided by the shape of the heap. Our approach to program synthesis is grounded in proof theory: we introduce the novel framework of Synthetic Separation Logic (SSL), which generalises the classical notion of heap entailment P ⊢ Q to incorporate a possibility of transforming a heap satisfying an assertion P into a heap satisfying an assertion Q . A synthesized program represents a proof term for a transforming entailment statement P ↝ Q , and the synthesis procedure corresponds to a proof search. The derived programs are, thus, correct by construction, in the sense that they satisfy the ascribed pre/postconditions, and are accompanied by complete proof derivations, which can be checked independently. We have implemented a proof search engine for SSL in a form of the program synthesizer called SuSLik. For efficiency, the engine exploits properties of SSL rules, such as invertibility and commutativity of rule applications on separate heaps, to prune the space of derivations it has to consider. We explain and showcase the use of SSL on characteristic examples, describe the design of SuSLik, and report on our experience of using it to synthesize a series of benchmark programs manipulating heap-based linked data structures.</description><identifier>ISSN: 2475-1421</identifier><identifier>EISSN: 2475-1421</identifier><identifier>DOI: 10.1145/3290385</identifier><language>eng</language><ispartof>Proceedings of ACM on programming languages, 2019-01, Vol.3 (POPL), p.1-30</ispartof><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c258t-36dd67a0495ee7d74d496be7e5cee781886f073fa0c45422caac1efaf728c65d3</citedby><cites>FETCH-LOGICAL-c258t-36dd67a0495ee7d74d496be7e5cee781886f073fa0c45422caac1efaf728c65d3</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,777,781,27905,27906</link.rule.ids></links><search><creatorcontrib>Polikarpova, Nadia</creatorcontrib><creatorcontrib>Sergey, Ilya</creatorcontrib><title>Structuring the synthesis of heap-manipulating programs</title><title>Proceedings of ACM on programming languages</title><description>This paper describes a deductive approach to synthesizing imperative programs with pointers from declarative specifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions—a pre- and a postcondition—which describe two states of the symbolic heap, and derives a program that transforms one state into the other, guided by the shape of the heap. Our approach to program synthesis is grounded in proof theory: we introduce the novel framework of Synthetic Separation Logic (SSL), which generalises the classical notion of heap entailment P ⊢ Q to incorporate a possibility of transforming a heap satisfying an assertion P into a heap satisfying an assertion Q . A synthesized program represents a proof term for a transforming entailment statement P ↝ Q , and the synthesis procedure corresponds to a proof search. The derived programs are, thus, correct by construction, in the sense that they satisfy the ascribed pre/postconditions, and are accompanied by complete proof derivations, which can be checked independently. We have implemented a proof search engine for SSL in a form of the program synthesizer called SuSLik. For efficiency, the engine exploits properties of SSL rules, such as invertibility and commutativity of rule applications on separate heaps, to prune the space of derivations it has to consider. We explain and showcase the use of SSL on characteristic examples, describe the design of SuSLik, and report on our experience of using it to synthesize a series of benchmark programs manipulating heap-based linked data structures.</description><issn>2475-1421</issn><issn>2475-1421</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2019</creationdate><recordtype>article</recordtype><recordid>eNpNj8lKA0EURQtRMMTgL_TOVWnNw1KCEwRcqOvmWUPSkh6oV73I35tgFq7OvXC5cAi55eyec6UfpPBMOn1BFkJZTbkS_PJfviYrxB_GGPdSOekXxH7UMoc6l27YNnWXGjwMR2CHzZibXYKJ9jB007yHeppMZdwW6PGGXGXYY1qduSRfz0-f61e6eX95Wz9uaBDaVSpNjMYCU16nZKNVUXnznWzS4dgdd85kZmUGFpRWQgSAwFOGbIULRke5JHd_v6GMiCXldipdD-XQctaelNuzsvwFTZlItw</recordid><startdate>20190101</startdate><enddate>20190101</enddate><creator>Polikarpova, Nadia</creator><creator>Sergey, Ilya</creator><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>20190101</creationdate><title>Structuring the synthesis of heap-manipulating programs</title><author>Polikarpova, Nadia ; Sergey, Ilya</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c258t-36dd67a0495ee7d74d496be7e5cee781886f073fa0c45422caac1efaf728c65d3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2019</creationdate><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Polikarpova, Nadia</creatorcontrib><creatorcontrib>Sergey, Ilya</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>Polikarpova, Nadia</au><au>Sergey, Ilya</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Structuring the synthesis of heap-manipulating programs</atitle><jtitle>Proceedings of ACM on programming languages</jtitle><date>2019-01-01</date><risdate>2019</risdate><volume>3</volume><issue>POPL</issue><spage>1</spage><epage>30</epage><pages>1-30</pages><issn>2475-1421</issn><eissn>2475-1421</eissn><abstract>This paper describes a deductive approach to synthesizing imperative programs with pointers from declarative specifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions—a pre- and a postcondition—which describe two states of the symbolic heap, and derives a program that transforms one state into the other, guided by the shape of the heap. Our approach to program synthesis is grounded in proof theory: we introduce the novel framework of Synthetic Separation Logic (SSL), which generalises the classical notion of heap entailment P ⊢ Q to incorporate a possibility of transforming a heap satisfying an assertion P into a heap satisfying an assertion Q . A synthesized program represents a proof term for a transforming entailment statement P ↝ Q , and the synthesis procedure corresponds to a proof search. The derived programs are, thus, correct by construction, in the sense that they satisfy the ascribed pre/postconditions, and are accompanied by complete proof derivations, which can be checked independently. We have implemented a proof search engine for SSL in a form of the program synthesizer called SuSLik. For efficiency, the engine exploits properties of SSL rules, such as invertibility and commutativity of rule applications on separate heaps, to prune the space of derivations it has to consider. We explain and showcase the use of SSL on characteristic examples, describe the design of SuSLik, and report on our experience of using it to synthesize a series of benchmark programs manipulating heap-based linked data structures.</abstract><doi>10.1145/3290385</doi><tpages>30</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 2475-1421
ispartof Proceedings of ACM on programming languages, 2019-01, Vol.3 (POPL), p.1-30
issn 2475-1421
2475-1421
language eng
recordid cdi_crossref_primary_10_1145_3290385
source ACM Digital Library Complete; EZB-FREE-00999 freely available EZB journals
title Structuring the synthesis of heap-manipulating programs
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-21T09%3A27%3A57IST&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=Structuring%20the%20synthesis%20of%20heap-manipulating%20programs&rft.jtitle=Proceedings%20of%20ACM%20on%20programming%20languages&rft.au=Polikarpova,%20Nadia&rft.date=2019-01-01&rft.volume=3&rft.issue=POPL&rft.spage=1&rft.epage=30&rft.pages=1-30&rft.issn=2475-1421&rft.eissn=2475-1421&rft_id=info:doi/10.1145/3290385&rft_dat=%3Ccrossref%3E10_1145_3290385%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