@comment{{This file has been generated by bib2bib 1.99}}
@comment{{Command line: bibtex2html-1.99-with-magiclink/bib2bib -c topic:"lem" -ob topic.lem.bib sewellbib2.bib}}
  author = {Scott Owens and
               Peter B{\"o}hm and
               Francesco Zappa Nardelli and
               Peter Sewell},
  title = {Lem: A Lightweight Tool for Heavyweight Semantics},
  conf = {ITP 2011},
  booktitle = {Proceedings of Interactive Theorem Proving -- Second International Conference (previously {TPHOLs}) (Berg en Dal), LNCS 6898},
  year = {2011},
  pages = {363-369},
  ee = {},
  optcrossref = {DBLP:conf/itp/2011},
  bibsource = {DBLP,},
  url = {},
  doi = {10.1007/978-3-642-22863-6_27},
  note = {(Rough Diamond)},
  optnote = {7pp},
  project = {},
  topic = {lem}
  author = {Mulligan, Dominic P. and Owens, Scott and Gray, Kathryn E. and Ridge, Tom and Sewell, Peter},
  title = {Lem: Reusable Engineering of Real-world Semantics},
  conf = {ICFP 2014},
  booktitle = {Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming},
  series = {ICFP '14},
  year = {2014},
  month = sep,
  isbn = {978-1-4503-2873-9},
  location = {Gothenburg, Sweden},
  pages = {175--188},
  numpages = {14},
  opturl = {},
  project = {},
  pdf = {},
  doi = {10.1145/2628136.2628143},
  acmid = {2628143},
  publisher = {ACM},
  address = {New York, NY, USA},
  optkeywords = {lem, proof assistants, real-world semantics, specification languages},
  abstract = {
Recent years have seen remarkable successes in rigorous engineering: using mathematically rigorous semantic models (not just idealised calculi) of real-world processors, programming languages, protocols, and security mechanisms, for testing, proof, analysis, and design. Building these models is challenging, requiring experimentation, dialogue with vendors or standards bodies, and validation; their scale adds engineering issues akin to those of programming to the task of writing clear and usable mathematics. But language and tool support for specification is lacking. Proof assistants can be used but bring their own difficulties, and a model produced in one, perhaps requiring many person-years effort and maintained over an extended period, cannot be used by those familiar with another.

We introduce Lem, a language for engineering reusable large-scale semantic models. The Lem design takes inspiration both from functional programming languages and from proof assistants, and Lem definitions are translatable into OCaml for testing, Coq, HOL4, and Isabelle/HOL for proof, and LaTeX and HTML for presentation. This requires a delicate balance of expressiveness, careful library design, and implementation of transformations - akin to compilation, but subject to the constraint of producing usable and human-readable code for each target. Lem's effectiveness is demonstrated by its use in practice.
  topic = {lem}