Ott: Effective tool support for the working semanticist

  • Authors:
  • Peter Sewell;Francesco zappa Nardelli;Scott Owens;Gilles Peskine;Thomas Ridge;Susmit Sarkar;Rok StrniŠa

  • Affiliations:
  • University of cambridge, computer laboratory, william gates building, 15 jj thomson avenue, cambridge cb3 0fd, united kingdom (e-mail: peter.sewell@cl.cam.ac.uk);Inria paris-rocquencourt, b.p. 105, 78153 le chesnay cedex, france;University of cambridge, computer laboratory, william gates building, 15 jj thomson avenue, cambridge cb3 0fd, united kingdom (e-mail: peter.sewell@cl.cam.ac.uk);University of cambridge, computer laboratory, william gates building, 15 jj thomson avenue, cambridge cb3 0fd, united kingdom (e-mail: peter.sewell@cl.cam.ac.uk);University of cambridge, computer laboratory, william gates building, 15 jj thomson avenue, cambridge cb3 0fd, united kingdom (e-mail: peter.sewell@cl.cam.ac.uk);University of cambridge, computer laboratory, william gates building, 15 jj thomson avenue, cambridge cb3 0fd, united kingdom (e-mail: peter.sewell@cl.cam.ac.uk);University of cambridge, computer laboratory, william gates building, 15 jj thomson avenue, cambridge cb3 0fd, united kingdom (e-mail: peter.sewell@cl.cam.ac.uk)

  • Venue:
  • Journal of Functional Programming
  • Year:
  • 2010

Quantified Score

Hi-index 0.01

Visualization

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