Ott: Effective tool support for the working semanticist
- 26 January 2010
- journal article
- research article
- Published by Cambridge University Press (CUP) in Journal of Functional Programming
- Vol. 20 (1) , 71-122
Abstract
Semantic 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 (OCaml light , 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.Keywords
This publication has 35 references indexed in Scilit:
- A Semantic Definition of Separate Type Checking in C++ with Concepts.The Journal of Object Technology, 2009
- The java module systemACM SIGPLAN Notices, 2007
- OttACM SIGPLAN Notices, 2007
- From structures and functors to modules and unitsACM SIGPLAN Notices, 2006
- FreshMLACM SIGPLAN Notices, 2003
- A tool to support formal reasoning about computer languages1997
- A syntactic theory of type generativity and sharingJournal of Functional Programming, 1996
- Studying the ML module system in HOLThe Computer Journal, 1995
- A meta-environment for generating programming environmentsACM Transactions on Software Engineering and Methodology, 1993
- The ergo support system: an integrated set of tools for prototyping integrated environmentsACM SIGSOFT Software Engineering Notes, 1988