Combining de Bruijn indices and higher-order abstract syntax in Coq

  • Authors:
  • Venanzio Capretta;Amy P. Felty

  • Affiliations:
  • Computer Science Institute, Radboud University Nijmegen, The Netherlands and School of Information Technology and Engineering and Department of Mathematics and Statistics, University of Ottawa, Ca ...;School of Information Technology and Engineering and Department of Mathematics and Statistics, University of Ottawa, Canada

  • Venue:
  • TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

The use of higher-order abstract syntax is an important approach for the representation of binding constructs in encodings of languages and logics in a logical framework. Formal meta-reasoning about such object languages is a particular challenge. We present a mechanism for such reasoning, formalized in Coq, inspired by the Hybrid tool in Isabelle. At the base level, we define a de Bruijn representation of terms with basic operations and a reasoning framework. At a higher level, we can represent languages and reason about them using higher-order syntax. We take advantage of Coq's constructive logic by formulating many definitions as Coq programs. We illustrate the method on two examples: the untyped lambda calculus and quantified propositional logic. For each language, we can define recursion and induction principles that work directly on the higher-order syntax.