Mechanized relational verification of concurrent programs with continuations
Concurrent higher-order imperative programming languages with continuations are very flexible and allow for the implementation of sophisticated programming patterns. For instance, it is well known that continuations can be used to implement cooperative concurrency. Continuations can also simplify we...
Uloženo v:
| Vydáno v: | Proceedings of ACM on programming languages Ročník 3; číslo ICFP; s. 1 - 28 |
|---|---|
| Hlavní autoři: | , |
| Médium: | Journal Article |
| Jazyk: | angličtina |
| Vydáno: |
01.08.2019
|
| ISSN: | 2475-1421, 2475-1421 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | Concurrent higher-order imperative programming languages with continuations are very flexible and allow for the implementation of sophisticated programming patterns. For instance, it is well known that continuations can be used to implement cooperative concurrency. Continuations can also simplify web server implementations. This, in particular, helps simplify keeping track of the state of server’s clients. However, such advanced programming languages are very challenging to reason about. One of the main challenges in reasoning about programs in the presence of continuations is due to the fact that the non-local flow of control breaks the bind rule, one of the important modular reasoning principles of Hoare logic.
In this paper we present the first completely formalized tool for interactive mechanized relational verification of programs written in a concurrent higher-order imperative programming language with continuations (call/cc and throw). We develop novel logical relations which can be used to give mechanized proofs of relational properties. In particular, we prove correctness of an implementation of cooperative concurrency with continuations. In addition, we show that that a rudimentary web server implemented using the continuation-based pattern is contextually equivalent to one implemented without the continuation-based pattern. We introduce context-local reasoning principles for our calculus which allows us to regain modular reasoning principles for the fragment of the language without non-local control flow. These novel reasoning principles can be used in tandem with our (non-context-local) Hoare logic for reasoning about programs that do feature non-local control flow. Indeed, we use the combination of context-local and non-context-local reasoning to simplify reasoning about the examples. |
|---|---|
| AbstractList | Concurrent higher-order imperative programming languages with continuations are very flexible and allow for the implementation of sophisticated programming patterns. For instance, it is well known that continuations can be used to implement cooperative concurrency. Continuations can also simplify web server implementations. This, in particular, helps simplify keeping track of the state of server’s clients. However, such advanced programming languages are very challenging to reason about. One of the main challenges in reasoning about programs in the presence of continuations is due to the fact that the non-local flow of control breaks the bind rule, one of the important modular reasoning principles of Hoare logic.
In this paper we present the first completely formalized tool for interactive mechanized relational verification of programs written in a concurrent higher-order imperative programming language with continuations (call/cc and throw). We develop novel logical relations which can be used to give mechanized proofs of relational properties. In particular, we prove correctness of an implementation of cooperative concurrency with continuations. In addition, we show that that a rudimentary web server implemented using the continuation-based pattern is contextually equivalent to one implemented without the continuation-based pattern. We introduce context-local reasoning principles for our calculus which allows us to regain modular reasoning principles for the fragment of the language without non-local control flow. These novel reasoning principles can be used in tandem with our (non-context-local) Hoare logic for reasoning about programs that do feature non-local control flow. Indeed, we use the combination of context-local and non-context-local reasoning to simplify reasoning about the examples. |
| Author | Timany, Amin Birkedal, Lars |
| Author_xml | – sequence: 1 givenname: Amin surname: Timany fullname: Timany, Amin organization: KU Leuven, Belgium – sequence: 2 givenname: Lars surname: Birkedal fullname: Birkedal, Lars organization: Aarhus University, Denmark |
| BookMark | eNplkEtLAzEUhYNUsNbiX8jO1WieM8lSii8YcaPrIUlvbGSaKUmq6K-3HbsQXZ17OB-XwzlFkzhEQOickktKhbziXNCG6CM0ZaKRFRWMTn7dJ2ie8xshhGouFNdT1D6CW5kYvmCJE_SmhCGaHr9DCj640eLBYzdEt00JYsGbNLwms874I5TVPighbkcwn6Fjb_oM84PO0MvtzfPivmqf7h4W123lmFSlslxSzyyR2hrhd5WXwmoAqVwtLWWkdtqD0dQTLYUGVRMJCohiinLREMtn6OLnr0tDzgl8t0lhbdJnR0m336E77LAjqz-kC2UsW5IJ_T_-G3_RYJI |
| CitedBy_id | crossref_primary_10_1145_3676954 crossref_primary_10_1145_3434314 crossref_primary_10_1145_3434287 crossref_primary_10_1145_3632868 crossref_primary_10_1145_3434288 crossref_primary_10_1145_3704841 crossref_primary_10_1145_3434291 crossref_primary_10_1145_3632851 crossref_primary_10_1145_3632862 crossref_primary_10_1145_3674656 |
| Cites_doi | 10.1145/2737924.2737964 10.1145/318593.318654 10.1007/978-3-642-11623-0_11 10.1016/j.jlap.2012.01.004 10.1145/800055.802046 10.1145/2429069.2429134 10.1145/3009837.3009855 10.1145/2429069.2429111 10.1007/978-3-662-54434-1_26 10.1145/1926385.1926401 10.1145/73560.73576 10.1016/j.tcs.2006.12.035 10.1145/1190216.1190244 10.1145/1190216.1190235 10.1017/S095679681200024X 10.1145/2676726.2676980 10.1145/2500365.2500600 10.1007/s10990-004-4866-z 10.2168/LMCS-7(2:16)2011 10.1017/S0956796818000151 10.5555/645683.664579 10.1007/978-3-642-40213-5_7 10.1145/2951913.2951943 10.1007/978-3-662-43951-7_9 10.1145/78969.78972 10.1007/978-3-642-54833-8_9 10.1016/0304-3975(92)90014-7 10.1145/2429069.2429104 10.1007/978-3-642-14107-2_24 10.5555/788019.788859 10.1145/504709.504712 10.1145/2544174.2500593 10.1007/978-3-642-54833-8_16 10.1007/978-3-662-44202-9_9 10.1145/91556.91622 10.1007/s10990-007-9008-y 10.1145/3158152 |
| ContentType | Journal Article |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3341709 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 28 |
| ExternalDocumentID | 10_1145_3341709 |
| GroupedDBID | AAKMM AAYFX AAYXX ACM AEFXT AEJOY AIKLT AKRVB ALMA_UNASSIGNED_HOLDINGS CITATION EBS GUFHI LHSKQ M~E OK1 ROL |
| ID | FETCH-LOGICAL-c258t-b351f2b059ba4f334d4b9ee58c65b1206c9fea91f09549e8605e8e082813470b3 |
| ISICitedReferencesCount | 14 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000685201900028&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 2475-1421 |
| IngestDate | Tue Nov 18 22:04:19 EST 2025 Sat Nov 29 07:50:23 EST 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | ICFP |
| Language | English |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-c258t-b351f2b059ba4f334d4b9ee58c65b1206c9fea91f09549e8605e8e082813470b3 |
| OpenAccessLink | https://dl.acm.org/doi/pdf/10.1145/3341709 |
| PageCount | 28 |
| ParticipantIDs | crossref_primary_10_1145_3341709 crossref_citationtrail_10_1145_3341709 |
| PublicationCentury | 2000 |
| PublicationDate | 2019-08-01 |
| PublicationDateYYYYMMDD | 2019-08-01 |
| PublicationDate_xml | – month: 08 year: 2019 text: 2019-08-01 day: 01 |
| PublicationDecade | 2010 |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationYear | 2019 |
| References | e_1_2_2_4_1 e_1_2_2_25_1 e_1_2_2_5_1 e_1_2_2_24_1 e_1_2_2_6_1 e_1_2_2_23_1 e_1_2_2_7_1 e_1_2_2_22_1 e_1_2_2_21_1 e_1_2_2_20_1 e_1_2_2_2_1 e_1_2_2_3_1 e_1_2_2_40_1 e_1_2_2_42_1 e_1_2_2_43_1 e_1_2_2_9_1 e_1_2_2_29_1 e_1_2_2_44_1 e_1_2_2_8_1 e_1_2_2_28_1 e_1_2_2_45_1 e_1_2_2_27_1 e_1_2_2_46_1 e_1_2_2_26_1 e_1_2_2_47_1 Flatt Matthew (e_1_2_2_19_1) 2017 e_1_2_2_14_1 e_1_2_2_37_1 e_1_2_2_13_1 e_1_2_2_12_1 e_1_2_2_11_1 e_1_2_2_10_1 Plotkin Gordon D. (e_1_2_2_39_1) 1977 e_1_2_2_30_1 e_1_2_2_31_1 e_1_2_2_32_1 e_1_2_2_18_1 e_1_2_2_33_1 Schäfer Steven (e_1_2_2_41_1) 2015; 9236 e_1_2_2_17_1 e_1_2_2_16_1 e_1_2_2_35_1 e_1_2_2_15_1 e_1_2_2_36_1 Pitts Andrew M. (e_1_2_2_38_1) Andrzej (e_1_2_2_34_1) 2017 |
| References_xml | – ident: e_1_2_2_42_1 doi: 10.1145/2737924.2737964 – volume: 9236 start-page: 359 year: 2015 ident: e_1_2_2_41_1 article-title: Autosubst: Reasoning with de Bruijn Terms and Parallel Substitutions publication-title: ITP (LNCS) – ident: e_1_2_2_7_1 – ident: e_1_2_2_20_1 doi: 10.1145/318593.318654 – ident: e_1_2_2_5_1 doi: 10.1007/978-3-642-11623-0_11 – ident: e_1_2_2_9_1 doi: 10.1016/j.jlap.2012.01.004 – ident: e_1_2_2_21_1 doi: 10.1145/800055.802046 – ident: e_1_2_2_32_1 doi: 10.1145/2429069.2429134 – volume-title: Higher-Order Linearisability. In CONCUR year: 2017 ident: e_1_2_2_34_1 – ident: e_1_2_2_28_1 doi: 10.1145/3009837.3009855 – ident: e_1_2_2_47_1 doi: 10.1145/2429069.2429111 – ident: e_1_2_2_27_1 doi: 10.1007/978-3-662-54434-1_26 – ident: e_1_2_2_6_1 doi: 10.1145/1926385.1926401 – volume-title: Advanced Topics in Types and Programming Languages ident: e_1_2_2_38_1 – ident: e_1_2_2_17_1 doi: 10.1145/73560.73576 – ident: e_1_2_2_37_1 doi: 10.1016/j.tcs.2006.12.035 – ident: e_1_2_2_43_1 doi: 10.1145/1190216.1190244 – ident: e_1_2_2_4_1 doi: 10.1145/1190216.1190235 – ident: e_1_2_2_16_1 doi: 10.1017/S095679681200024X – ident: e_1_2_2_26_1 doi: 10.1145/2676726.2676980 – ident: e_1_2_2_46_1 doi: 10.1145/2500365.2500600 – ident: e_1_2_2_40_1 doi: 10.1007/s10990-004-4866-z – ident: e_1_2_2_15_1 doi: 10.2168/LMCS-7(2:16)2011 – ident: e_1_2_2_25_1 doi: 10.1017/S0956796818000151 – ident: e_1_2_2_2_1 doi: 10.5555/645683.664579 – ident: e_1_2_2_35_1 doi: 10.1007/978-3-642-40213-5_7 – ident: e_1_2_2_24_1 doi: 10.1145/2951913.2951943 – ident: e_1_2_2_8_1 doi: 10.1007/978-3-662-43951-7_9 – volume-title: More: Systems Programming with Racket. https://docs.racket-lang.org/more/index.html . year: 2017 ident: e_1_2_2_19_1 – ident: e_1_2_2_23_1 doi: 10.1145/78969.78972 – ident: e_1_2_2_44_1 doi: 10.1007/978-3-642-54833-8_9 – ident: e_1_2_2_18_1 doi: 10.1016/0304-3975(92)90014-7 – ident: e_1_2_2_13_1 doi: 10.1145/2429069.2429104 – ident: e_1_2_2_14_1 doi: 10.1007/978-3-642-14107-2_24 – ident: e_1_2_2_31_1 doi: 10.5555/788019.788859 – ident: e_1_2_2_33_1 – ident: e_1_2_2_22_1 – ident: e_1_2_2_30_1 – ident: e_1_2_2_3_1 doi: 10.1145/504709.504712 – ident: e_1_2_2_12_1 doi: 10.1145/2544174.2500593 – volume-title: LCF considered as a programming language. Theoretical computer science 5, 3 year: 1977 ident: e_1_2_2_39_1 – ident: e_1_2_2_36_1 doi: 10.1007/978-3-642-54833-8_16 – ident: e_1_2_2_10_1 doi: 10.1007/978-3-662-44202-9_9 – ident: e_1_2_2_11_1 doi: 10.1145/91556.91622 – ident: e_1_2_2_29_1 doi: 10.1007/s10990-007-9008-y – ident: e_1_2_2_45_1 doi: 10.1145/3158152 |
| SSID | ssj0001934839 |
| Score | 2.2225833 |
| Snippet | Concurrent higher-order imperative programming languages with continuations are very flexible and allow for the implementation of sophisticated programming... |
| SourceID | crossref |
| SourceType | Enrichment Source Index Database |
| StartPage | 1 |
| Title | Mechanized relational verification of concurrent programs with continuations |
| Volume | 3 |
| WOSCitedRecordID | wos000685201900028&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV1LT9wwELYW6IELLS2IR1v5UPWCAnnYiX2kqyIqsas9bCVuS-xMpAgIaNldIQ78dsaJ44QFCXroJYosO3L8WTPj8XwzhPxgKSS-lsITMdceC1LuSaW1pxjkAaSMZeBXxSaS4VCcn8tRr3fRcGEWV0lZivt7eftfocY2BNtQZ_8BbvdRbMB3BB2fCDs-3wX8AAyZt3iAzBJVKl8f_oYJCnIGIh6DtU3NZEO07lwY-qwo5x1HnjVdR07VVdEfx_2BuWiwg6-Nx6HxfTozHTcCyppK_FwXbhf-KqaXkFWFBg7O0ukzx4PhOonG8VDJp5Al3AtYTXA-hFfarICNOvvoT_9k1JGXQUfx1iTxlyKdmewXEWrbxJet1mpu6peUmQsxrAnXfGIHrpC1MOHSBP0NHjteOBkxUZWbczOvmdVm7JEd2zFZOrbH-BPZsIcGelyDvUl6UH4mH5uCHNTK5y_krMWettjTLvb0Jqct9rTBnhrs6TPst8jfk9_j_qlny2V4OuRi5qmIB3mo0F5WKctx7hlTEoALHXMVhH6sZQ6pDHLfXO2CwIMsCDApDA2d2FfRNlktb0rYITRJFcrpLJciEizjsWRJlulY5hKiMI3VLvnZrMhE21zypqTJ1WRp2XcJdR1v6_Qpy1323u6yT9bbDfiVrM6mc_hGPujFrLibfq8QfQJd4mW2 |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Mechanized+relational+verification+of+concurrent+programs+with+continuations&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Timany%2C+Amin&rft.au=Birkedal%2C+Lars&rft.date=2019-08-01&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=3&rft.issue=ICFP&rft.spage=1&rft.epage=28&rft_id=info:doi/10.1145%2F3341709&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3341709 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |