Results 1 -
2 of
2
Meta-theory à la carte
- In POPL ’13
, 2013
"... 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 formalizat ..."
Abstract
-
Cited by 13 (3 self)
- Add to MetaCart
(Show Context)
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. 1.
Generic Datatypes a ̀ la Carte
"... Formal reasoning in proof assistants, also known as mechaniza-tion, has high development costs. Building modular reusable com-ponents is a key issue in reducing these costs. A stumbling block for reuse is that inductive definitions and proofs are closed to ex-tension. This is a manifestation of the ..."
Abstract
- Add to MetaCart
(Show Context)
Formal reasoning in proof assistants, also known as mechaniza-tion, has high development costs. Building modular reusable com-ponents is a key issue in reducing these costs. A stumbling block for reuse is that inductive definitions and proofs are closed to ex-tension. This is a manifestation of the expression problem that has been addressed by the Meta-Theory a ̀ la Carte (MTC) framework in the context of programming language meta-theory. However, MTC’s use of extensible Church-encodings is unsatisfactory. This paper takes a better approach to the problem with datatype-generic programming (DGP). It applies well-known DGP tech-niques to represent modular datatypes, to build functions from functor algebras with folds and to compose proofs from proof alge-bras by means of induction. Moreover, for certain functionality and proofs our approach can achieve more reuse than MTC: instead of composing modular components we provide a single generic defi-nition once and for all.