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...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Proceedings of ACM on programming languages Jg. 4; H. OOPSLA; S. 1 - 28
Hauptverfasser: Rouvoet, Arjen, van Antwerpen, Hendrik, Bach Poulsen, Casper, Krebbers, Robbert, Visser, Eelco
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