Abstract
It is rare to give a semantic definition of a full-scale programming language, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics - usually either LATEX 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, Isabelle, and (in progress) Twelf, together with LATEX 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 (around 306 rules), with machine 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.
Original language | English |
---|---|
Title of host publication | Proceedings of the 2007 ACM SIGPLAN international conference on functional programming (ICFP'07) |
Editors | Ralf Hinze, Norman Ramsey |
Place of Publication | New York, NY |
Publisher | ACM |
Number of pages | 12 |
ISBN (Print) | 9781595938152 |
DOIs | |
Publication status | Published - 1 Oct 2007 |
Event | 12th ACM SIGPLAN International Conference on Functional Programming - Freiburg, Germany Duration: 1 Oct 2007 → 3 Oct 2007 |
Conference
Conference | 12th ACM SIGPLAN International Conference on Functional Programming |
---|---|
Country/Territory | Germany |
City | Freiburg |
Period | 1/10/07 → 3/10/07 |
Keywords
- Standardization
- Verification
- Theory
- Languages