Lem: a lightweight tool for heavyweight semantics

  • Authors:
  • Scott Owens;Peter Böhm;Francesco Zappa Nardelli;Peter Sewell

  • Affiliations:
  • University of Cambridge;University of Cambridge;INRIA;University of Cambridge

  • Venue:
  • ITP'11 Proceedings of the Second international conference on Interactive theorem proving
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Many ITP developments exist in the context of a single prover, and are dominated by proof effort. In contrast, when applying rigorous semantic techniques to realistic computer systems, engineering the definitions becomes a major activity in its own right. Proof is then only one task among many: testing, simulation, communication, community review, etc. Moreover, the effort invested in establishing such definitions should be re-usable and, where possible, irrespective of the local proof-assistant culture. For example, in recent work on processor and programming language concurrency (x86, Power, ARM, C++0x, CompCertTSO), we have used Coq, HOL4, Isabelle/HOL, and Ott--often using multiple provers simultaneously, to exploit existing definitions or local expertise. In this paper we describe Lem, a prototype system specifically designed to support pragmatic engineering of such definitions. It has a carefully designed source language, of a familiar higher-order logic with datatype definitions, inductively defined relations, and so on. This is typechecked and translated to a variety of programming languages and proof assistants, preserving the original source structure (layout, comments, etc.) so that the result is readable and usable. We have already found this invaluable in our work on Power, ARM and C++0x concurrency.