Knowing when to ask: sound scheduling of name resolution in type checkers derived from declarative specifications
There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative progra...
Gespeichert in:
| Veröffentlicht in: | Proceedings of ACM on programming languages Jg. 4; H. OOPSLA; S. 1 - 28 |
|---|---|
| Hauptverfasser: | , , , , |
| Format: | Journal Article |
| Sprache: | Englisch |
| Veröffentlicht: |
New York, NY, USA
ACM
13.11.2020
|
| Schlagworte: | |
| ISSN: | 2475-1421, 2475-1421 |
| Online-Zugang: | Volltext |
| Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
| Abstract | There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative programming language specifications. This moves the burden of proving correctness from a case-by-case basis for concrete languages to a single correctness proof for the specification language. This vision is obstructed by an aspect common to all programming languages: name resolution. Naming and scoping are pervasive and complex aspects of the static semantics of programming languages. Implementations of type checkers for languages with name binding features such as modules, imports, classes, and inheritance interleave collection of binding information (i.e., declarations, scoping structure, and imports) and querying that information. This requires scheduling those two aspects in such a way that query answers are stable—i.e., they are computed only after all relevant binding structure has been collected. Type checkers for concrete languages accomplish stability using language-specific knowledge about the type system. In this paper we give a language-independent characterization of necessary and sufficient conditions to guarantee stability of name and type queries during type checking in terms of critical edges in an incomplete scope graph. We use critical edges to give a formal small-step operational semantics to a declarative specification language for type systems, that achieves soundness by delaying queries that may depend on missing information. This yields type checkers for the specified languages that are sound by construction—i.e., they schedule queries so that the answers are stable, and only accept programs that are name- and type-correct according to the declarative language specification. We implement this approach, and evaluate it against specifications of a small module and record language, as well as subsets of Java and Scala. |
|---|---|
| AbstractList | There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative programming language specifications. This moves the burden of proving correctness from a case-by-case basis for concrete languages to a single correctness proof for the specification language. This vision is obstructed by an aspect common to all programming languages: name resolution. Naming and scoping are pervasive and complex aspects of the static semantics of programming languages. Implementations of type checkers for languages with name binding features such as modules, imports, classes, and inheritance interleave collection of binding information (i.e., declarations, scoping structure, and imports) and querying that information. This requires scheduling those two aspects in such a way that query answers are stable—i.e., they are computed only after all relevant binding structure has been collected. Type checkers for concrete languages accomplish stability using language-specific knowledge about the type system.
In this paper we give a language-independent characterization of necessary and sufficient conditions to guarantee stability of name and type queries during type checking in terms of critical edges in an incomplete scope graph . We use critical edges to give a formal small-step operational semantics to a declarative specification language for type systems, that achieves soundness by delaying queries that may depend on missing information. This yields type checkers for the specified languages that are sound by construction—i.e., they schedule queries so that the answers are stable, and only accept programs that are name- and type-correct according to the declarative language specification. We implement this approach, and evaluate it against specifications of a small module and record language, as well as subsets of Java and Scala. There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative programming language specifications. This moves the burden of proving correctness from a case-by-case basis for concrete languages to a single correctness proof for the specification language. This vision is obstructed by an aspect common to all programming languages: name resolution. Naming and scoping are pervasive and complex aspects of the static semantics of programming languages. Implementations of type checkers for languages with name binding features such as modules, imports, classes, and inheritance interleave collection of binding information (i.e., declarations, scoping structure, and imports) and querying that information. This requires scheduling those two aspects in such a way that query answers are stable—i.e., they are computed only after all relevant binding structure has been collected. Type checkers for concrete languages accomplish stability using language-specific knowledge about the type system. In this paper we give a language-independent characterization of necessary and sufficient conditions to guarantee stability of name and type queries during type checking in terms of critical edges in an incomplete scope graph. We use critical edges to give a formal small-step operational semantics to a declarative specification language for type systems, that achieves soundness by delaying queries that may depend on missing information. This yields type checkers for the specified languages that are sound by construction—i.e., they schedule queries so that the answers are stable, and only accept programs that are name- and type-correct according to the declarative language specification. We implement this approach, and evaluate it against specifications of a small module and record language, as well as subsets of Java and Scala. |
| ArticleNumber | 180 |
| Author | Rouvoet, Arjen Bach Poulsen, Casper Visser, Eelco van Antwerpen, Hendrik Krebbers, Robbert |
| Author_xml | – sequence: 1 givenname: Arjen surname: Rouvoet fullname: Rouvoet, Arjen email: a.j.rouvoet@tudelft.nl organization: Delft University of Technology, Netherlands – sequence: 2 givenname: Hendrik surname: van Antwerpen fullname: van Antwerpen, Hendrik email: h.vanantwerpen@tudelft.nl organization: Delft University of Technology, Netherlands – sequence: 3 givenname: Casper surname: Bach Poulsen fullname: Bach Poulsen, Casper email: c.b.poulsen@tudelft.nl organization: Delft University of Technology, Netherlands – sequence: 4 givenname: Robbert surname: Krebbers fullname: Krebbers, Robbert email: mail@robbertkrebbers.nl organization: Delft University of Technology, Netherlands – sequence: 5 givenname: Eelco surname: Visser fullname: Visser, Eelco email: e.visser@tudelft.nl organization: Delft University of Technology, Netherlands |
| BookMark | eNptkDtPwzAUhS1UJEqp2Jm8MQX8rBM2VPESlVhgjhznmpomdrFTqv57UloQQkz3cb57dHWO0cAHDwidUnJBqZCXXLCcifwADZlQMqOC0cGv_giNU3ojhNCCi5wXQ_T-6MPa-Ve8noPHXcA6La5wCitf42TmUK-arRos9roFHCGFZtW54LHr8c0ScA-ZBcSEa4juA2psY2j7wTQ66q7f4LQE46wzenuXTtCh1U2C8b6O0MvtzfP0Pps93T1Mr2eZZkp1mZ0oUsjKAJUFAOWq0KImgjLLrdBSCWCiUEJCLjgQqSc1ZRWpJZiqUhPJ-AhlO18TQ0oRbGlc9_VCF7VrSkrKbWTlPrKeP__DL6Nrddz8Q57tSG3aH-hb_AQscXYe |
| CitedBy_id | crossref_primary_10_1145_3527329 crossref_primary_10_1145_3563303 crossref_primary_10_1007_s10270_024_01185_x crossref_primary_10_1145_3720481 |
| Cites_doi | 10.1016/j.scico.2007.02.003 10.1145/321239.321249 10.1007/3-540-16492-8_118 10.1016/S0743-1066(98)10005-5 10.1007/3-540-54572-7_3 10.1007/s10515-009-0046-z 10.1007/3-540-18317-5_10 10.1007/978-3-662-46669-8_9 10.1145/2847538.2847543 10.1007/3-540-44802-0_1 10.1016/j.scico.2009.07.004 10.1007/11877028_18 10.5281/zenodo.4091445 10.1007/BF00264249 10.1145/1297027.1297029 10.1016/S1571-0661(05)82627-1 10.1002/(SICI)1096-9942(199901/03)5 10.1145/1082036.1082042 10.4230/LIPIcs.ECOOP.2019.26 10.1007/BF03037280 10.1145/3276484 10.5281/zenodo.4068064 |
| ContentType | Journal Article |
| Copyright | Owner/Author |
| Copyright_xml | – notice: Owner/Author |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3428248 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 28 |
| ExternalDocumentID | 10_1145_3428248 3428248 |
| GrantInformation_xml | – fundername: Nederlandse Organisatie voor Wetenschappelijk Onderzoek grantid: 639.023.206, 016.Veni.192.259, VI.Veni.192.259 funderid: http://dx.doi.org/10.13039/501100003246 |
| GroupedDBID | AAKMM AAYFX ACM ADPZR AIKLT ALMA_UNASSIGNED_HOLDINGS GUFHI LHSKQ M~E OK1 ROL AAYXX AEFXT AEJOY AKRVB CITATION |
| ID | FETCH-LOGICAL-a277t-f67095bce159ee1379a4d0412f3f4a574e249745e843e05a6d12b0d5ecbb76523 |
| ISICitedReferencesCount | 8 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000685203900057&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:08 EST 2025 Tue Nov 18 21:51:21 EST 2025 Fri Feb 21 01:11:52 EST 2025 |
| IsDoiOpenAccess | true |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | OOPSLA |
| Keywords | Static Semantics Statix Type Systems Type Checker Name Binding |
| Language | English |
| License | This work is licensed under a Creative Commons Attribution International 4.0 License. |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-a277t-f67095bce159ee1379a4d0412f3f4a574e249745e843e05a6d12b0d5ecbb76523 |
| OpenAccessLink | https://dl.acm.org/doi/10.1145/3428248 |
| PageCount | 28 |
| ParticipantIDs | crossref_citationtrail_10_1145_3428248 crossref_primary_10_1145_3428248 acm_primary_3428248 |
| PublicationCentury | 2000 |
| PublicationDate | 2020-11-13 |
| PublicationDateYYYYMMDD | 2020-11-13 |
| PublicationDate_xml | – month: 11 year: 2020 text: 2020-11-13 day: 13 |
| PublicationDecade | 2020 |
| PublicationPlace | New York, NY, USA |
| PublicationPlace_xml | – name: New York, NY, USA |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationTitleAbbrev | ACM PACMPL |
| PublicationYear | 2020 |
| Publisher | ACM |
| Publisher_xml | – name: ACM |
| References | Hendrik van Antwerpen, Pierre Néron, Andrew P. Tolmach, Eelco Visser, and Guido Wachsmuth. 2016. A constraint language for static semantic analysis based on scope graphs. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM). ACM, 49-60. https://doi.org/10.1145/2847538.2847543 10.1145/2847538.2847543 Thom W. Frühwirth. 1998. Theory and Practice of Constraint Handling Rules. The Journal of Logic Programming 37, 1-3 ( 1998 ), 95-138. https://doi.org/10.1016/S0743-1066 ( 98 ) 10005-5 10.1016/S0743-1066(98)10005-5 Eric Van Wyk, Derek Bodin, Jimin Gao, and Lijesh Krishnan. 2010. Silver: An extensible attribute grammar system. Science of Computer Programming 75, 1-2 ( 2010 ), 39-54. https://doi.org/10.1016/j.scico. 2009. 07.004 10.1016/j.scico.2009.07.004 John Tang Boyland. 2005. Remote attribute grammars. Journal of the ACM 52, 4 ( 2005 ), 627-687. https://doi.org/10.1145/ 1082036.1082042 10.1145/1082036.1082042 Torbjörn Ekman and Görel Hedin. 2005. Modular Name Analysis for Java Using JastAdd. In Generative and Transformational Techniques in Software Engineering (LNCS, Vol. 4143 ). Springer, 422-436. https://doi.org/10.1007/11877028_18 10.1007/11877028_18 Richard S. Bird. 1984. Using Circular Programs to Eliminate Multiple Traversals of Data. Acta Informatica 21 ( 1984 ), 239-250. https://doi.org/10.1007/BF00264249 10.1007/BF00264249 Eva Magnusson, Torbjörn Ekman, and Görel Hedin. 2009. Demand-driven evaluation of collection attributes. Automated Software Engineering 16, 2 ( 2009 ), 291-322. https://doi.org/10.1007/s10515-009-0046-z 10.1007/s10515-009-0046-z Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. 1997. The Definition of Standard ML, Revised. The MIT Press. Henk Alblas. 1991. Attribute Evaluation Methods. In Attribute Grammars, Applications and Systems (LNCS, Vol. 545 ). Springer, 48-113. https://doi.org/10.1007/3-540-54572-7_3 10.1007/3-540-54572-7_3 Daniël A. A. Pelsmaeker, Hendrik van Antwerpen, and Eelco Visser. 2019. Towards Language-Parametric Semantic Editor Services Based on Declarative Type System Specifications (Brave New Idea Paper). In European Conference on Object-Oriented Programming (ECOOP) (LIPIcs, Vol. 134 ). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik. https: //doi.org/10.4230/LIPIcs.ECOOP. 2019.26 10.4230/LIPIcs.ECOOP.2019.26 Torbjörn Ekman and Görel Hedin. 2007b. The JastAdd system-modular extensible compiler construction. Science of Computer Programming 69, 1-3 ( 2007 ), 14-26. https://doi.org/10.1016/j.scico. 2007. 02.003 10.1016/j.scico.2007.02.003 John T Boyland. 1996. Descriptional composition of compiler components. Technical Report. University of California. Martin Odersky, Martin Sulzmann, and Martin Wehr. 1999. Type Inference with Constrained Types. Theory and Practice of Object Systems (TAPOS) 5, 1 ( 1999 ), 35-55. https://doi.org/10.1002/(SICI) 1096-9942 ( 199901 /03)5: 1 < 35 : :AID-TAPO4>3.0. CO; 2-4 10.1002/(SICI)1096-9942(199901/03)5 Arjen Rouvoet, Hendrik van Antwerpen, Casper Bach Poulsen, Robbert Krebbers, and Eelco Visser. 2020a. Haskell Implementation of Ministatix, and Scala, Java, and LMR Case Studies. https://doi.org/10.5281/zenodo.4068064 10.5281/zenodo.4068064 Peter W. O'Hearn, John C. Reynolds, and Hongseok Yang. 2001. Local Reasoning about Programs that Alter Data Structures. In Computer Science Logic ( CSL) (LNCS, Vol. 2142 ). Springer, 1-19. https://doi.org/10.1007/3-540-44802-0_1 10.1007/3-540-44802-0_1 Torbjörn Ekman and Görel Hedin. 2007a. The JastAdd extensible Java compiler. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, 1-18. https: //doi.org/10.1145/1297027.1297029 10.1145/1297027.1297029 Akira Sasaki and Masataka Sassa. 2003. Circular Attribute Grammars with Remote Attribute References and their Evaluators. New Generation Computing 22, 1 ( 2003 ), 37-60. https://doi.org/10.1007/BF03037280 10.1007/BF03037280 Chris Moss. 1986. Cut and Paste-defining the impure Primitives of Prolog. In International Conference on Logic Programming (ICLP (LNCS, Vol. 225 ). Springer, 686-694. https://doi.org/10.1007/3-540-16492-8_118 10.1007/3-540-16492-8_118 Arjen Rouvoet, Hendrik van Antwerpen, Casper Bach Poulsen, Robbert Krebbers, and Eelco Visser. 2020b. Knowing When to Ask: Extended Version. ( 2020 ). https://doi.org/10.5281/zenodo.4091445 10.5281/zenodo.4091445 François Pottier and Diddier Rémy. 2005. The Essence of ML Type Inference. In Advanced Topics in Types and Programming Languages. The MIT Press, 389-489. Thomas Johnsson. 1987. Attribute grammars as a functional programming paradigm. In Functional Programming Languages and Computer Architecture (LNCS, Vol. 274 ). Springer, 154-173. https://doi.org/10.1007/3-540-18317-5_10 10.1007/3-540-18317-5_10 Görel Hedin. 2000. Reference Attributed Grammars. Informatica (Slovenia) 24, 3 ( 2000 ). Hendrik van Antwerpen, Casper Bach Poulsen, Arjen Rouvoet, and Eelco Visser. 2018. Scopes as types. Proceedings of the ACM on Programming Languages 2, Object-oriented Programming, Systems, Languages, and Applications (OOPSLA) ( 2018 ), 114 : 1-114 : 30. https://doi.org/10.1145/3276484 10.1145/3276484 Janusz A. Brzozowski. 1964. Derivatives of Regular Expressions. Journal of the ACM 11, 4 ( 1964 ), 481-494. https: //doi.org/10.1145/321239.321249 10.1145/321239.321249 Pierre Neron, Andrew P. Tolmach, Eelco Visser, and Guido Wachsmuth. 2015. A Theory of Name Resolution. In European Symposium on Programming (LNCS, Vol. 9032 ). Springer, 205-231. https://doi.org/10.1007/978-3-662-46669-8_9 10.1007/978-3-662-46669-8_9 Eva Magnusson and Görel Hedin. 2003. Circular Reference Attributed Grammars-Their Evaluation and Applications. ENTCS 82, 3 ( 2003 ), 532-554. https://doi.org/10.1016/S1571-0661 ( 05 ) 82627-1 10.1016/S1571-0661(05)82627-1 e_1_2_2_4_1 e_1_2_2_25_1 e_1_2_2_5_1 Pottier François (e_1_2_2_20_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_1_1 e_1_2_2_2_1 Milner Robin (e_1_2_2_14_1) e_1_2_2_9_1 e_1_2_2_8_1 e_1_2_2_26_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 e_1_2_2_19_1 e_1_2_2_18_1 e_1_2_2_17_1 e_1_2_2_16_1 e_1_2_2_15_1 |
| References_xml | – reference: Akira Sasaki and Masataka Sassa. 2003. Circular Attribute Grammars with Remote Attribute References and their Evaluators. New Generation Computing 22, 1 ( 2003 ), 37-60. https://doi.org/10.1007/BF03037280 10.1007/BF03037280 – reference: Hendrik van Antwerpen, Pierre Néron, Andrew P. Tolmach, Eelco Visser, and Guido Wachsmuth. 2016. A constraint language for static semantic analysis based on scope graphs. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM). ACM, 49-60. https://doi.org/10.1145/2847538.2847543 10.1145/2847538.2847543 – reference: Arjen Rouvoet, Hendrik van Antwerpen, Casper Bach Poulsen, Robbert Krebbers, and Eelco Visser. 2020b. Knowing When to Ask: Extended Version. ( 2020 ). https://doi.org/10.5281/zenodo.4091445 10.5281/zenodo.4091445 – reference: John Tang Boyland. 2005. Remote attribute grammars. Journal of the ACM 52, 4 ( 2005 ), 627-687. https://doi.org/10.1145/ 1082036.1082042 10.1145/1082036.1082042 – reference: Thom W. Frühwirth. 1998. Theory and Practice of Constraint Handling Rules. The Journal of Logic Programming 37, 1-3 ( 1998 ), 95-138. https://doi.org/10.1016/S0743-1066 ( 98 ) 10005-5 10.1016/S0743-1066(98)10005-5 – reference: Torbjörn Ekman and Görel Hedin. 2005. Modular Name Analysis for Java Using JastAdd. In Generative and Transformational Techniques in Software Engineering (LNCS, Vol. 4143 ). Springer, 422-436. https://doi.org/10.1007/11877028_18 10.1007/11877028_18 – reference: Hendrik van Antwerpen, Casper Bach Poulsen, Arjen Rouvoet, and Eelco Visser. 2018. Scopes as types. Proceedings of the ACM on Programming Languages 2, Object-oriented Programming, Systems, Languages, and Applications (OOPSLA) ( 2018 ), 114 : 1-114 : 30. https://doi.org/10.1145/3276484 10.1145/3276484 – reference: Pierre Neron, Andrew P. Tolmach, Eelco Visser, and Guido Wachsmuth. 2015. A Theory of Name Resolution. In European Symposium on Programming (LNCS, Vol. 9032 ). Springer, 205-231. https://doi.org/10.1007/978-3-662-46669-8_9 10.1007/978-3-662-46669-8_9 – reference: Peter W. O'Hearn, John C. Reynolds, and Hongseok Yang. 2001. Local Reasoning about Programs that Alter Data Structures. In Computer Science Logic ( CSL) (LNCS, Vol. 2142 ). Springer, 1-19. https://doi.org/10.1007/3-540-44802-0_1 10.1007/3-540-44802-0_1 – reference: Henk Alblas. 1991. Attribute Evaluation Methods. In Attribute Grammars, Applications and Systems (LNCS, Vol. 545 ). Springer, 48-113. https://doi.org/10.1007/3-540-54572-7_3 10.1007/3-540-54572-7_3 – reference: Chris Moss. 1986. Cut and Paste-defining the impure Primitives of Prolog. In International Conference on Logic Programming (ICLP (LNCS, Vol. 225 ). Springer, 686-694. https://doi.org/10.1007/3-540-16492-8_118 10.1007/3-540-16492-8_118 – reference: Janusz A. Brzozowski. 1964. Derivatives of Regular Expressions. Journal of the ACM 11, 4 ( 1964 ), 481-494. https: //doi.org/10.1145/321239.321249 10.1145/321239.321249 – reference: Daniël A. A. Pelsmaeker, Hendrik van Antwerpen, and Eelco Visser. 2019. Towards Language-Parametric Semantic Editor Services Based on Declarative Type System Specifications (Brave New Idea Paper). In European Conference on Object-Oriented Programming (ECOOP) (LIPIcs, Vol. 134 ). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik. https: //doi.org/10.4230/LIPIcs.ECOOP. 2019.26 10.4230/LIPIcs.ECOOP.2019.26 – reference: François Pottier and Diddier Rémy. 2005. The Essence of ML Type Inference. In Advanced Topics in Types and Programming Languages. The MIT Press, 389-489. – reference: John T Boyland. 1996. Descriptional composition of compiler components. Technical Report. University of California. – reference: Thomas Johnsson. 1987. Attribute grammars as a functional programming paradigm. In Functional Programming Languages and Computer Architecture (LNCS, Vol. 274 ). Springer, 154-173. https://doi.org/10.1007/3-540-18317-5_10 10.1007/3-540-18317-5_10 – reference: Torbjörn Ekman and Görel Hedin. 2007b. The JastAdd system-modular extensible compiler construction. Science of Computer Programming 69, 1-3 ( 2007 ), 14-26. https://doi.org/10.1016/j.scico. 2007. 02.003 10.1016/j.scico.2007.02.003 – reference: Torbjörn Ekman and Görel Hedin. 2007a. The JastAdd extensible Java compiler. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, 1-18. https: //doi.org/10.1145/1297027.1297029 10.1145/1297027.1297029 – reference: Eva Magnusson, Torbjörn Ekman, and Görel Hedin. 2009. Demand-driven evaluation of collection attributes. Automated Software Engineering 16, 2 ( 2009 ), 291-322. https://doi.org/10.1007/s10515-009-0046-z 10.1007/s10515-009-0046-z – reference: Eric Van Wyk, Derek Bodin, Jimin Gao, and Lijesh Krishnan. 2010. Silver: An extensible attribute grammar system. Science of Computer Programming 75, 1-2 ( 2010 ), 39-54. https://doi.org/10.1016/j.scico. 2009. 07.004 10.1016/j.scico.2009.07.004 – reference: Arjen Rouvoet, Hendrik van Antwerpen, Casper Bach Poulsen, Robbert Krebbers, and Eelco Visser. 2020a. Haskell Implementation of Ministatix, and Scala, Java, and LMR Case Studies. https://doi.org/10.5281/zenodo.4068064 10.5281/zenodo.4068064 – reference: Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. 1997. The Definition of Standard ML, Revised. The MIT Press. – reference: Richard S. Bird. 1984. Using Circular Programs to Eliminate Multiple Traversals of Data. Acta Informatica 21 ( 1984 ), 239-250. https://doi.org/10.1007/BF00264249 10.1007/BF00264249 – reference: Görel Hedin. 2000. Reference Attributed Grammars. Informatica (Slovenia) 24, 3 ( 2000 ). – reference: Eva Magnusson and Görel Hedin. 2003. Circular Reference Attributed Grammars-Their Evaluation and Applications. ENTCS 82, 3 ( 2003 ), 532-554. https://doi.org/10.1016/S1571-0661 ( 05 ) 82627-1 10.1016/S1571-0661(05)82627-1 – reference: Martin Odersky, Martin Sulzmann, and Martin Wehr. 1999. Type Inference with Constrained Types. Theory and Practice of Object Systems (TAPOS) 5, 1 ( 1999 ), 35-55. https://doi.org/10.1002/(SICI) 1096-9942 ( 199901 /03)5: 1 < 35 : :AID-TAPO4>3.0. CO; 2-4 10.1002/(SICI)1096-9942(199901/03)5 – ident: e_1_2_2_8_1 doi: 10.1016/j.scico.2007.02.003 – ident: e_1_2_2_5_1 doi: 10.1145/321239.321249 – ident: e_1_2_2_15_1 doi: 10.1007/3-540-16492-8_118 – volume-title: Revised ident: e_1_2_2_14_1 – ident: e_1_2_2_9_1 doi: 10.1016/S0743-1066(98)10005-5 – ident: e_1_2_2_1_1 doi: 10.1007/3-540-54572-7_3 – ident: e_1_2_2_12_1 doi: 10.1007/s10515-009-0046-z – ident: e_1_2_2_11_1 doi: 10.1007/3-540-18317-5_10 – ident: e_1_2_2_16_1 doi: 10.1007/978-3-662-46669-8_9 – ident: e_1_2_2_24_1 doi: 10.1145/2847538.2847543 – ident: e_1_2_2_18_1 doi: 10.1007/3-540-44802-0_1 – ident: e_1_2_2_26_1 doi: 10.1016/j.scico.2009.07.004 – ident: e_1_2_2_6_1 doi: 10.1007/11877028_18 – ident: e_1_2_2_22_1 doi: 10.5281/zenodo.4091445 – ident: e_1_2_2_2_1 doi: 10.1007/BF00264249 – ident: e_1_2_2_7_1 doi: 10.1145/1297027.1297029 – ident: e_1_2_2_13_1 doi: 10.1016/S1571-0661(05)82627-1 – ident: e_1_2_2_17_1 doi: 10.1002/(SICI)1096-9942(199901/03)5 – volume-title: Advanced Topics in Types and Programming Languages ident: e_1_2_2_20_1 – ident: e_1_2_2_4_1 doi: 10.1145/1082036.1082042 – ident: e_1_2_2_19_1 doi: 10.4230/LIPIcs.ECOOP.2019.26 – ident: e_1_2_2_23_1 doi: 10.1007/BF03037280 – ident: e_1_2_2_10_1 – ident: e_1_2_2_25_1 doi: 10.1145/3276484 – ident: e_1_2_2_21_1 doi: 10.5281/zenodo.4068064 |
| SSID | ssj0001934839 |
| Score | 2.2231896 |
| Snippet | There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of... |
| SourceID | crossref acm |
| SourceType | Enrichment Source Index Database Publisher |
| StartPage | 1 |
| SubjectTerms | Constraint and logic programming Logic Operational semantics Program semantics Semantics and reasoning Theory of computation |
| SubjectTermsDisplay | Theory of computation -- Logic -- Constraint and logic programming Theory of computation -- Semantics and reasoning -- Program semantics -- Operational semantics |
| Title | Knowing when to ask: sound scheduling of name resolution in type checkers derived from declarative specifications |
| URI | https://dl.acm.org/doi/10.1145/3428248 |
| Volume | 4 |
| WOSCitedRecordID | wos000685203900057&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/eLvHCXMwtV1Lj9MwELbKwoELjwXE8pIPiMsqoontuuEWVaA97KOCBe2t8quiS5qUNC174ufwO5lJnMYsHODAJYqSkRN5Ptkz4_lmCHk5Go65jrmIwJ9lEXfaRiqNEyxbKY3Q3NqmHMOnY3l6Or64SKeDwY-OC7PNZVGMr67S1X9VNTwDZSN19h_UvRsUHsA9KB2uoHa4_pXisZF1E2H97Aq0LNX6C7r9a-yfdAi-LOwtuU91LtQSu6Z0_9PkPGJIFoQw22J9aOGHt2CSNiQU60zeFQpHgiYmGQXxPm_hTnc7YpMkkk1O8DzCp4Et8cNdiLTPsi8327I9FMmqy56bhtSqrKi_uWrVLo5HrrDVoucWIRdsWm5yH0WaKCx7vttCKqe17wD3vsTbOgxxgD-LaXYsAKVPm2-WxYRLEcW85VV3azgPoHp2Nv1wnAWLchzs7i0T_fd9g2OJDQa-WNIW_rxWhNu_uUFuJlKkmDp48j2I5aWMg6HZcrJxrNdeHk0eswxMnsB2Ob9H7ning2YtWO6TgSv2yd2uoQf16_sD8tVjhyJ2aF1SwM4b2iCH9sih5ZwicmiPHLoAcUAO7ZBDPXIoIocGyKG_Iuch-fju7fnkKPI9OSKVSFlHc6z3J7RxYAY7FzOZKm6xZtuczbkSkjvw5yUXbsyZGwo1snGih1Y4o7UciYQ9IntFWbjHhMYm4UyxZv74CBsXMDC2tVVmnEoj5QHZh8mbrdqqKzM_pQfkVTeZM-PL2GM3lXzWUuxFL0h3gt0Y10Se_PELT8ntHoTPyF5dbdxzcsts68W6etFo_if2zY3u |
| 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=Knowing+when+to+ask%3A+sound+scheduling+of+name+resolution+in+type+checkers+derived+from+declarative+specifications&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Rouvoet%2C+Arjen&rft.au=van+Antwerpen%2C+Hendrik&rft.au=Bach+Poulsen%2C+Casper&rft.au=Krebbers%2C+Robbert&rft.date=2020-11-13&rft.pub=ACM&rft.eissn=2475-1421&rft.volume=4&rft.issue=OOPSLA&rft.spage=1&rft.epage=28&rft_id=info:doi/10.1145%2F3428248&rft.externalDocID=3428248 |
| 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 |