A type and scope safe universe of syntaxes with binding: their semantics and proofs
Almost every programming language’s syntax includes a notion of binder and corresponding bound occurrences, along with the accompanying notions of α-equivalence, capture avoiding substitution, typing contexts, runtime environments, and so on. In the past, implementing and reasoning about programming...
Gespeichert in:
| Veröffentlicht in: | Proceedings of ACM on programming languages Jg. 2; H. ICFP; S. 1 - 30 |
|---|---|
| Hauptverfasser: | , , , , |
| Format: | Journal Article |
| Sprache: | Englisch |
| Veröffentlicht: |
01.09.2018
|
| ISSN: | 2475-1421, 2475-1421 |
| Online-Zugang: | Volltext |
| Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
| Abstract | Almost every programming language’s syntax includes a notion of binder and corresponding bound occurrences, along with the accompanying notions of α-equivalence, capture avoiding substitution, typing contexts, runtime environments, and so on. In the past, implementing and reasoning about programming languages required careful handling to maintain the correct behaviour of bound variables. Modern programming languages include features that enable constraints like scope safety to be expressed in types. Nevertheless, the programmer is still forced to write the same boilerplate over again for each new implementation of a scope safe operation (e.g., renaming, substitution, desugaring, printing, etc.), and then again for correctness proofs.
We present an expressive universe of syntaxes with binding and demonstrate how to (1) implement scope safe traversals once and for all by generic programming; and (2) how to derive properties of these traversals by generic proving. Our universe description, generic traversals and proofs, and our examples have all been formalised in Agda and are available in the accompanying material.
NB. we recommend printing the paper in colour to benefit from syntax highlighting in code fragments. |
|---|---|
| AbstractList | Almost every programming language’s syntax includes a notion of binder and corresponding bound occurrences, along with the accompanying notions of α-equivalence, capture avoiding substitution, typing contexts, runtime environments, and so on. In the past, implementing and reasoning about programming languages required careful handling to maintain the correct behaviour of bound variables. Modern programming languages include features that enable constraints like scope safety to be expressed in types. Nevertheless, the programmer is still forced to write the same boilerplate over again for each new implementation of a scope safe operation (e.g., renaming, substitution, desugaring, printing, etc.), and then again for correctness proofs.
We present an expressive universe of syntaxes with binding and demonstrate how to (1) implement scope safe traversals once and for all by generic programming; and (2) how to derive properties of these traversals by generic proving. Our universe description, generic traversals and proofs, and our examples have all been formalised in Agda and are available in the accompanying material.
NB. we recommend printing the paper in colour to benefit from syntax highlighting in code fragments. |
| Author | Allais, Guillaume McKinna, James Chapman, James McBride, Conor Atkey, Robert |
| Author_xml | – sequence: 1 givenname: Guillaume surname: Allais fullname: Allais, Guillaume organization: Radboud University Nijmegen, Netherlands – sequence: 2 givenname: Robert surname: Atkey fullname: Atkey, Robert organization: University of Strathclyde, UK – sequence: 3 givenname: James surname: Chapman fullname: Chapman, James organization: University of Strathclyde, UK – sequence: 4 givenname: Conor surname: McBride fullname: McBride, Conor organization: University of Strathclyde, UK – sequence: 5 givenname: James surname: McKinna fullname: McKinna, James organization: University of Edinburgh, UK |
| BookMark | eNplkEtLAzEUhYNUsNbiX8jO1Wie83BXii8ouFDXw53MjY20yZDER_-9o3YhujofnI-zOMdk4oNHQk45O-dc6QspZFnV-oBMhap0wZXgk198ROYpvTDGeCNVLZspeVjQvBuQgu9pMmGkBBbpq3dvGBPSYGna-QwfmOi7y2vaOd87_3xJ8xpdpAm34LMz6XthiCHYdEIOLWwSzvc5I0_XV4_L22J1f3O3XKwKI3SdC2gYl4CsAqhQlWWvuGwUWA1Np0wnpEZmRQmyEghVWWtgprNi7LTua8vkjJz97JoYUopo2yG6LcRdy1n7dUe7v2M0iz-mcRmyCz5HcJt__ieEPGKC |
| CitedBy_id | crossref_primary_10_1145_3704893 crossref_primary_10_1145_3747524 crossref_primary_10_1145_3689786 crossref_primary_10_1007_s10817_023_09672_4 crossref_primary_10_1145_3408972 crossref_primary_10_1145_3563355 crossref_primary_10_1145_3290335 crossref_primary_10_1007_s10817_019_09522_2 crossref_primary_10_1017_S0956796825100087 |
| Cites_doi | 10.1017/S0956796897002864 10.1017/S0956796807006326 10.1007/978-3-642-02273-9_11 10.1145/2976002.2976013 10.1007/978-3-662-49498-1_17 10.1145/3158104 10.1016/0168-0072(91)90067-V 10.1145/2544174.2500618 10.1023/A:1019964114625 10.1145/1863543.1863547 10.1145/2480359.2429075 10.1017/S095679681300018X 10.1007/978-3-642-28869-2_22 10.1016/S0049-237X(09)70189-2 10.1145/3167098 10.1016/0167-6423(94)00022-0 10.1007/s10817-011-9219-0 10.1007/978-3-642-39634-2_29 10.1145/3167081 10.1007/11617990_16 10.1145/1411203.1411226 10.1017/S0956796899003366 10.1017/S0956796808006758 10.1007/978-3-319-21401-6_26 10.4204/EPTCS.43.2 10.5555/2370077.2370079 10.1145/242224.242477 10.1145/3018610.3018613 10.1007/11541868_4 10.1007/s10817-011-9225-2 10.5555/647100.717294 10.1145/345099.345100 10.5555/648334.755596 10.1007/s001650200016 10.1007/978-3-642-12032-9_21 |
| ContentType | Journal Article |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3236785 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 30 |
| ExternalDocumentID | 10_1145_3236785 |
| GroupedDBID | AAKMM AAYFX AAYXX ACM AEFXT AEJOY AIKLT AKRVB ALMA_UNASSIGNED_HOLDINGS CITATION EBS GUFHI LHSKQ M~E OK1 ROL |
| ID | FETCH-LOGICAL-c258t-a9013ae07aa7e466d41394af5a9b4cb235e0f26a372ea7685a0cbf2b4c55d8f03 |
| ISICitedReferencesCount | 1 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000461309200024&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 | Sat Nov 29 07:49:44 EST 2025 Tue Nov 18 21:52:08 EST 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | ICFP |
| Language | English |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-c258t-a9013ae07aa7e466d41394af5a9b4cb235e0f26a372ea7685a0cbf2b4c55d8f03 |
| OpenAccessLink | https://dl.acm.org/doi/pdf/10.1145/3236785 |
| PageCount | 30 |
| ParticipantIDs | crossref_primary_10_1145_3236785 crossref_citationtrail_10_1145_3236785 |
| PublicationCentury | 2000 |
| PublicationDate | 2018-09-01 |
| PublicationDateYYYYMMDD | 2018-09-01 |
| PublicationDate_xml | – month: 09 year: 2018 text: 2018-09-01 day: 01 |
| PublicationDecade | 2010 |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationYear | 2018 |
| References | e_1_2_2_4_1 e_1_2_2_24_1 e_1_2_2_49_1 e_1_2_2_6_1 e_1_2_2_22_1 Fiore Marcelo (e_1_2_2_30_1) 1999 Norell Ulf (e_1_2_2_48_1) e_1_2_2_2_1 e_1_2_2_41_1 e_1_2_2_43_1 e_1_2_2_8_1 e_1_2_2_45_1 e_1_2_2_26_1 e_1_2_2_47_1 Abel Andreas (e_1_2_2_3_1) 2017 Altenkirch Thorsten (e_1_2_2_10_1) e_1_2_2_13_1 e_1_2_2_38_1 e_1_2_2_11_1 Dybjer Peter (e_1_2_2_28_1) e_1_2_2_51_1 e_1_2_2_19_1 e_1_2_2_17_1 e_1_2_2_34_1 e_1_2_2_36_1 Ghani Neil (e_1_2_2_32_1) 2006; 2006 de Bruijn Nicolaas Govert (e_1_2_2_25_1) e_1_2_2_5_1 e_1_2_2_21_1 e_1_2_2_1_1 Dybjer Peter (e_1_2_2_27_1) 1994 e_1_2_2_40_1 e_1_2_2_42_1 e_1_2_2_9_1 e_1_2_2_29_1 e_1_2_2_44_1 e_1_2_2_46_1 Benke Marcin (e_1_2_2_15_1) 2003; 10 e_1_2_2_14_1 e_1_2_2_37_1 e_1_2_2_12_1 e_1_2_2_39_1 Altenkirch Thorsten (e_1_2_2_7_1) 2014; 7 e_1_2_2_52_1 e_1_2_2_31_1 e_1_2_2_18_1 e_1_2_2_33_1 e_1_2_2_16_1 e_1_2_2_35_1 e_1_2_2_50_1 |
| References_xml | – ident: e_1_2_2_35_1 doi: 10.1017/S0956796897002864 – ident: e_1_2_2_44_1 doi: 10.1017/S0956796807006326 – ident: e_1_2_2_33_1 doi: 10.1007/978-3-642-02273-9_11 – volume-title: A Finite Axiomatization of Inductive-Recursive Definitions ident: e_1_2_2_28_1 – ident: e_1_2_2_49_1 doi: 10.1145/2976002.2976013 – ident: e_1_2_2_29_1 – volume: 2006 volume-title: Proc. of 7th Symp. on Trends in Functional Programming, TFP year: 2006 ident: e_1_2_2_32_1 – ident: e_1_2_2_39_1 doi: 10.1007/978-3-662-49498-1_17 – ident: e_1_2_2_13_1 doi: 10.1145/3158104 – ident: e_1_2_2_11_1 – ident: e_1_2_2_36_1 – ident: e_1_2_2_46_1 doi: 10.1016/0168-0072(91)90067-V – volume-title: Monadic presentations of lambda terms using generalized inductive types ident: e_1_2_2_10_1 – ident: e_1_2_2_38_1 doi: 10.1145/2544174.2500618 – ident: e_1_2_2_24_1 doi: 10.1023/A:1019964114625 – ident: e_1_2_2_19_1 doi: 10.1145/1863543.1863547 – ident: e_1_2_2_4_1 doi: 10.1145/2480359.2429075 – ident: e_1_2_2_43_1 – ident: e_1_2_2_18_1 doi: 10.1017/S095679681300018X – ident: e_1_2_2_40_1 doi: 10.1007/978-3-642-28869-2_22 – ident: e_1_2_2_41_1 doi: 10.1016/S0049-237X(09)70189-2 – volume-title: Indagationes Mathematicae ident: e_1_2_2_25_1 – ident: e_1_2_2_37_1 doi: 10.1145/3167098 – ident: e_1_2_2_14_1 doi: 10.1016/0167-6423(94)00022-0 – ident: e_1_2_2_16_1 doi: 10.1007/s10817-011-9219-0 – volume: 10 start-page: 4 year: 2003 ident: e_1_2_2_15_1 article-title: Universes for Generic Programs and Proofs in Dependent Type Theory publication-title: Nordic J. of Computing – ident: e_1_2_2_51_1 doi: 10.1007/978-3-642-39634-2_29 – ident: e_1_2_2_45_1 doi: 10.1145/3167081 – ident: e_1_2_2_47_1 doi: 10.1007/11617990_16 – ident: e_1_2_2_22_1 doi: 10.1145/1411203.1411226 – ident: e_1_2_2_17_1 doi: 10.1017/S0956796899003366 – ident: e_1_2_2_42_1 – ident: e_1_2_2_52_1 doi: 10.1017/S0956796808006758 – ident: e_1_2_2_26_1 doi: 10.1007/978-3-319-21401-6_26 – ident: e_1_2_2_2_1 doi: 10.4204/EPTCS.43.2 – volume-title: POPLMark Reloaded. Proceedings of the Logical Frameworks and Meta-Languages: Theory and Practice Workshop year: 2017 ident: e_1_2_2_3_1 – ident: e_1_2_2_1_1 doi: 10.5555/2370077.2370079 – ident: e_1_2_2_34_1 doi: 10.1145/242224.242477 – ident: e_1_2_2_5_1 doi: 10.1145/3018610.3018613 – ident: e_1_2_2_12_1 doi: 10.1007/11541868_4 – ident: e_1_2_2_21_1 doi: 10.1007/s10817-011-9225-2 – volume-title: AFP Summer School ident: e_1_2_2_48_1 – ident: e_1_2_2_9_1 doi: 10.5555/647100.717294 – ident: e_1_2_2_50_1 doi: 10.1145/345099.345100 – volume-title: Inductive families. Formal aspects of computing 6, 4 year: 1994 ident: e_1_2_2_27_1 – ident: e_1_2_2_8_1 doi: 10.5555/648334.755596 – ident: e_1_2_2_31_1 doi: 10.1007/s001650200016 – ident: e_1_2_2_6_1 doi: 10.1007/978-3-642-12032-9_21 – volume-title: Proc. 14 th LICS Conf. IEEE, Computer Society Press, 193–202 year: 1999 ident: e_1_2_2_30_1 – volume: 7 start-page: 1 year: 2014 ident: e_1_2_2_7_1 article-title: Relative Monads Formalised publication-title: Journal of Formalized Reasoning |
| SSID | ssj0001934839 |
| Score | 2.2449982 |
| Snippet | Almost every programming language’s syntax includes a notion of binder and corresponding bound occurrences, along with the accompanying notions of... |
| SourceID | crossref |
| SourceType | Enrichment Source Index Database |
| StartPage | 1 |
| Title | A type and scope safe universe of syntaxes with binding: their semantics and proofs |
| Volume | 2 |
| WOSCitedRecordID | wos000461309200024&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/eLvHCXMwtV1Lb9QwELaWwoFLeavlJR8Ql1UgcezE5hZWLSDRaiWK1NvKSWxp1W62ymar5cI_4b8yfiTrLkjAgUsUOXYUeT6PJ-NvZhB6lShYBrquYX1rGVFKWVRmmYaFJ1JzpMhjaZO4fs5PT_n5uZiORj_6WJjry7xp-GYjrv6rqKENhG1CZ_9B3MNLoQHuQehwBbHD9a8EXzi3qnWIm5CT8UpqNV47Aob1EKy-NZ3cKB_YVs5tYIsneMzb8UotYLr77M2gYWGfDG3Y6bDnWRpIMTkxJw6e6LUwrofeCTrY6wWAzSUz-LA2ZY7Wiy3Sugt_dGU53gHdoI-LsETerf_wfTt3qYIny2bZhl6LhA-0LK_cCM1ZlFAXHf1G_abNa2cSgPDT5HgaKNsk2LXd4c6v-wE1qTNSk6bOVQa6mXF7Zycc-IkuWpvN_MBb6DbJmTCMwZPvgQtPpJTbWnXDl7uwbDP2rR8b2DuB4XJ2H-37Pw5cOKQ8QCPVPET3-moe2Cv3R-hLgQ1wMAgdW-BgAxzcAwcvNe6Bgw1wsAfOO2xhgwfY2Dc42DxGX4-PziYfI19yI6oI410kwTxMpYpzKXNFs6wGG0dQqZkUJa1KkjIVa5LJNCdKwp8qk3FVagLPGKu5jtMnaK9ZNuoAYRkrWiVcKUFrypNMVqVQqVCa5KWoSH2IXvcTM6t8PnpTFuVytjP7hwgPHa9cCpbdLk__3OUZurvF4XO017Vr9QLdqa67-ap9aQX7E019etc |
| 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=A+type+and+scope+safe+universe+of+syntaxes+with+binding%3A+their+semantics+and+proofs&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Allais%2C+Guillaume&rft.au=Atkey%2C+Robert&rft.au=Chapman%2C+James&rft.au=McBride%2C+Conor&rft.date=2018-09-01&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=2&rft.issue=ICFP&rft.spage=1&rft.epage=30&rft_id=info:doi/10.1145%2F3236785&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3236785 |
| 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 |