Some Lambda Calculus and Type Theory Formalized
Journal of Automated Reasoning
A New Approach to Abstract Syntax Involving Binders
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Semantical Analysis of Higher-Order Abstract Syntax
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Abstract Syntax and Variable Binding
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Nominal logic, a first order theory of names and binding
Information and Computation - TACS 2001
Theoretical Computer Science
Information and Computation
A general mathematics of names
Information and Computation
A Head-to-Head Comparison of de Bruijn Indices and Names
Electronic Notes in Theoretical Computer Science (ENTCS)
Capture-avoiding substitution as a nominal algebra
Formal Aspects of Computing
LPAR '08 Proceedings of the 15th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning
Proof pearl: de Bruijn terms really do work
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
The representational adequacy of hybrid
Mathematical Structures in Computer Science
(Nominal) unification by recursive descent with triangular substitutions
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Nominal Lambda Calculus: An Internal Language for FM-Cartesian Closed Categories
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 5.23 |
Programming languages and logics, which are pervasive in Computer Science, have syntax which involves variable binding constructors. As such, reasoning about such languages in general, and formal reasoning in particular (such as within a theorem prover), requires frameworks within which the syntax may be properly represented. One key requirement is a correct representation of @a-equivalence. The current literature provides a number of different definitions of the notion of @a-equivalence. The formal definitions may be nameless as in the approach of de Bruijn, or have explicit names, as in the approaches that use either a renaming/substitution axiom, or instead use a notion of variable swapping. The first contribution of this paper is to draw together five definitions of @a-equivalence relations and to prove formally and in detail, but using mathematics, that the relations are all equal. There are two key reasons for doing this: Firstly, the literature has many examples of proofs of results involving @a-equivalence which contain technical errors. Such examples concern both the application of @a-equivalence, and the meta-theory of @a-equivalence itself. Secondly, the literature does not currently contain detailed presentations of such results. The point of giving the detail is partly to avoid falling into common error-traps, but mainly to provide clear mathematical machinery that will be useful to those working in the area. This includes systems of inductive rules and proofs by induction, and clear accounts of the key lemmas that support the main proofs. The second contribution is to provide two definitions of @a-equivalence relations over (program) contexts, namely expressions with a single meta-variable (or ''hole''). One of the definitions is already in the literature, and the other is new. We prove some basic properties of @a-equivalence on contexts, and show that the two definitions give rise to the same relation.