Nominal uni cation

We present a generalisation of rst-order uni cation to the practically important case of equations between terms involving binding operations. A substitution of terms for variables solves such an equation if it makes the equated terms � -equivalent, i.e. equal up to renaming bound names. For the applications we have in mind, we must consider the simple, textual form of substitution in which names occurring in terms may be captured within the scope of binders upon substitution. We are able to take a “nominal” approach to binding in which bound entities are explicitly named (rather than using nameless, de Bruijn-style representations) and yet get a version of this form of substitution that respects � -equivalence and possesses good algorithmic properties. We achieve this by adapting two existing ideas. The rst one is terms involving explicit substitutions of names for names, except that here we only use explicit permutations (bijective substitutions). The second one is that the uni cation algorithm should solve not only equational problems, but also problems about the freshness of names for terms. There is a simple generalisation of classical rst-order uni cation problems to this setting which retains the latter’s pleasant properties: uni cation problems involving � -equivalence and freshness are decidable; and solvable problems possess most general solutions. c 2004 Elsevier B.V. All rights reserved.

[1]  Dale Miller,et al.  A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification , 1991, J. Log. Comput..

[2]  Felix Braun Prolog , 1959, Die Achse.

[3]  Peter Nickolas,et al.  The Qu-Prolog Unification Algorithm: Formalisation and Correctness , 1996, Theor. Comput. Sci..

[4]  Claude Kirchner,et al.  Unification via Explicit Substitutions: The Case of Higher-Order Patterns , 1996, JICSLP.

[5]  Andrew M. Pitts,et al.  A New Approach to Abstract Syntax with Variable Binding , 2002, Formal Aspects of Computing.

[6]  Frank Pfenning,et al.  Higher-order abstract syntax , 1988, PLDI '88.

[7]  Tobias Nipkow,et al.  Term rewriting and all that , 1998 .

[8]  Gordon D. Plotkin,et al.  Abstract syntax and variable binding , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

[9]  Carl A. Gunter Semantics of programming languages: structures and techniques , 1993, Choice Reviews Online.

[10]  Atsushi Igarashi,et al.  Calculi of Meta-variables , 2003, CSL.

[11]  Luca Cardelli,et al.  A spatial logic for concurrency (part I) , 2003, Inf. Comput..

[12]  Yukiyoshi Kameyama,et al.  A Simply Typed Context Calculus with First-class Environments , 2001, J. Funct. Log. Program..

[13]  Jan Willem Klop,et al.  Term Rewriting Systems: From Church-Rosser to Knuth-Bendix and Beyond , 1990, ICALP.

[14]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[15]  Luca Cardelli,et al.  Manipulating Trees with Hidden Labels , 2003, FoSSaCS.

[16]  Benjamin C. Pierce,et al.  Theoretical Aspects of Computer Software , 2001, Lecture Notes in Computer Science.

[17]  Luca Cardelli,et al.  A Spatial Logic for Concurrency (Part II) , 2002, CONCUR.

[18]  Frank Pfenning,et al.  An Empirical Study of the Runtime Behavior of Higher-Order Logic Programs , 1992 .

[19]  Makoto Hamana A Logic Programming Language Based on Binding Algebras , 2001, TACS.

[20]  Andrew M. Pitts,et al.  A First Order Theory of Names and Binding , 2001 .

[21]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[22]  Furio Honsell,et al.  An Axiomatic Approach to Metareasoning on Nominal Algebras in HOAS , 2001, ICALP.

[23]  Andrew M. Pitts,et al.  FreshML: programming with binders made simple , 2003, ICFP '03.

[24]  Antonino Salibra On the algebraic models of lambda calculus , 2000, Theor. Comput. Sci..

[25]  Gordon Plotkin,et al.  An Illative Theory of Relations , 2003 .

[26]  Atsushi Ohori,et al.  A typed context calculus , 2001, Theor. Comput. Sci..

[27]  Claude Kirchner,et al.  Higher-order unification via explicit substitutions , 1995, Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science.

[28]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .