Notice

The website of Tom Schrijvers has moved to http://people.cs.kuleuven.be/~tom.schrijvers. Please adjust any links you maintain as this copy will be taken down shortly.


Meta-Theory a la Carte


Delaware, Ben and Oliveira, Bruno C.d.S. and Schrijvers, Tom.
Principles of Programming Languages (POPL 2013).
2013.

Abstract

Formalizing meta-theory, or proofs about programming languages, in a proof assistant has many well-known benefits. However, the considerable effort involved in mechanizing proofs has prevented it from becoming standard practice. This cost can be amortized by reusing as much of an existing formalization as possible when building a new language or extending an existing one. Unfortunately reuse of components is typically ad-hoc, with the language designer cutting and pasting existing definitions and proofs, and expending considerable effort to patch up the results. This paper presents a more structured approach to the reuse of formalizations of programming language semantics through the composition of modular definitions and proofs. The key contribution is the development of an approach to induction for extensible Church encodings which uses a novel reinterpretation of the universal property of folds. These encodings provide the foundation for a framework, formalized in Coq, which uses type classes to automate the composition of proofs from modular components. Several interesting language features, including binders and general recursion, illustrate the capabilities of our framework. We reuse these features to build fully mechanized definitions and proofs for a number of languages, including a version of mini-ML. Bounded induction enables proofs of properties for non-inductive semantic functions, and mediating type classes enable proof adaptation for more feature-rich languages.

BibTeX

@inproceedings{popl2013,
  author = {Delaware, Ben and Oliveira, Bruno C.d.S. and Schrijvers, Tom},
  title = {Meta-Theory a la Carte},
  booktitle = {Principles of Programming Languages (POPL 2013)},
  year = {2013},
  url = {/Research/papers/popl2013.pdf},
  abstract = {Formalizing meta-theory, or proofs about programming languages, in a
proof assistant has many well-known benefits. However, the considerable effort
involved in mechanizing proofs has prevented it from becoming standard
practice.  This cost can be amortized by reusing as much of
an existing formalization as possible when building a new language or
extending an existing one.  Unfortunately reuse of components is
typically ad-hoc, with the language designer cutting and pasting
existing definitions and proofs, and expending considerable effort to
patch up the results.
 
This paper presents a more structured approach to the reuse of
formalizations of programming language semantics through the
composition of modular definitions and proofs.  The key contribution
is the development of an approach to induction for extensible Church
encodings which uses a novel reinterpretation of the universal
property of folds. These encodings provide the foundation for a
framework, formalized in Coq, which uses type classes to automate the
composition of proofs from modular components.

Several interesting language features, including binders and general
recursion, illustrate the capabilities of our framework. We reuse
these features to build fully mechanized definitions and proofs for a
number of languages, including a version of mini-ML. Bounded induction
enables proofs of properties for non-inductive semantic functions, and 
mediating type classes enable proof adaptation for more feature-rich
languages.
  },
}