Theoretical Computer Science
An abstraction mechanism for symbolic expressions
Artificial intelligence and mathematical theory of computation
A framework for defining logics
Journal of the ACM (JACM)
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
Some Lambda Calculus and Type Theory Formalized
Journal of Automated Reasoning
Automating Inversion of Inductive Predicates in Coq
TYPES '95 Selected papers from the International Workshop on Types for Proofs and Programs
Theory of Judgments and Derivations
Progress in Discovery Science, Final Report of the Japanese Discovery Science Project
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
A New Approach to Abstract Syntax Involving Binders
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
Alpha-structural recursion and induction
Journal of the ACM (JACM)
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Nominal Techniques in Isabelle/HOL
Journal of Automated Reasoning
A framework for checking proofs naturally
Journal of Intelligent Information Systems
General bindings and alpha-equivalence in nominal Isabelle
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
Recursion principles for syntax with bindings and substitution
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
A new foundation for nominal isabelle
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
GMETA: a generic formal metatheory framework for first-order representations
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
A Canonical Locally Named Representation of Binding
Journal of Automated Reasoning
Hi-index | 0.00 |
It is well known that formally defining and reasoning about languages with binding (such as logics and @l-calculii) is problematic. There are many approaches to deal with the problem, with much work over recent years stimulated by the desire to formally reason about programming languages and program logics. The various approaches have their own strengths and drawbacks, but no fully satisfactory approach has appeared. We present an approach based on two levels of syntax: an internal syntax which is convenient for machine manipulation, and an external syntax which is the usual informal syntax used in many articles and textbooks. Throughout the paper we use pure @l-calculus as an example, but the technique extends to many languages with binding. Our internal syntax is canonical: one representative of every @a-equivalence class. It is formalized in Isabelle/HOL, and its properties are mechanically proved. It is also proved to be isomorphic with a nominal representation of @l-calculus in Isabelle/HOL. Our conventional, human friendly external syntax is naturally related to the internal syntax by a semantic function. We do not define notions directly on the external syntax, since that would require the usual care about @a-renaming, but introduce them indirectly from the canonical internal syntax via the semantic function.