Author:
SEWELL PETER,NARDELLI FRANCESCO ZAPPA,OWENS SCOTT,PESKINE GILLES,RIDGE THOMAS,SARKAR SUSMIT,STRNIŠA ROK
Abstract
AbstractSemantic definitions of full-scale programming languages are rarely given, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics – usually either for informal mathematics or the formal mathematics of a proof assistant – make it much harder than necessary to work with large definitions. We present a metalanguage specifically designed for this problem, and a tool, Ott, that sanity-checks such definitions and compiles them into proof assistant code for Coq, HOL, and Isabelle/HOL, together with code for production-quality typesetting, and OCaml boilerplate. The main innovations are (1) metalanguage design to make definitions concise, and easy to read and edit; (2) an expressive but intuitive metalanguage for specifying binding structures; and (3) compilation to proof assistant code. This has been tested in substantial case studies, including modular specifications of calculi from the TAPL text, a Lightweight Java with Java JSR 277/294 module system proposals, and a large fragment of OCaml (OCamllight, 310 rules), with mechanised proofs of various soundness results. Our aim with this work is to enable a phase change: making it feasible to work routinely, without heroic effort, with rigorous semantic definitions of realistic languages.
Publisher
Cambridge University Press (CUP)
Reference76 articles.
1. Xiao Y. , Ariola Z & Mauny M. (2000) From syntactic theories to interpreters: A specification language and its compilation. In First International Workshop on Rule-Based Programming (RULE 2000), Derschowitz N. & Kirchner C. (eds). Available at: http://arxiv.org/abs/cs.PL/0009030 Accessed 8 January 2010.
2. Mechanized Semantics for the Clight Subset of the C Language
3. Strachey C. (1966) Towards a formal semantics. In Formal Language Description Languages for Computer Programming. North Holland, pp. 198–220.
4. Aydemir B. , Charguéraud A. , Pierce B. C. , Pollack R. & Weirich S. (2008) Engineering Formal Metatheory. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '08). ACM, San Francisco, pp. 3–15.
Cited by
95 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Towards a Dynabook for verified VM construction;Journal of Computer Languages;2024-08
2. HOL4P4: Mechanized Small-Step Semantics for P4;Proceedings of the ACM on Programming Languages;2024-04-29
3. Tinyrossa: A Compiler Framework for Vertical, Verified Construction of Smalltalk VMs;Companion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming;2024-03-11
4. Language-parameterized Proofs for Functional Languages with Subtyping;Lecture Notes in Computer Science;2024
5. The Way We Were: Structural Operational Semantics Research in Perspective;Electronic Proceedings in Theoretical Computer Science;2023-09-14