alpha-Prolog: A Logic Programming Language with Names, Binding and a-Equivalence

There are two well-known approaches to programming with names, binding, and equivalence up to consistent renaming: representing names and bindings as concrete identifiers in a first-order language (such as Prolog), or encoding names and bindings as variables and abstractions in a higher-order language (such as λProlog). However, both approaches have drawbacks: the former often involves stateful name-generation and requires manual definitions for α-equivalence and capture-avoiding substitution, and the latter is semantically very complicated, so reasoning about programs written using either approach can be very difficult. Gabbay and Pitts have developed a new approach to encoding abstract syntax with binding based on primitive operations of name-swapping and freshness. This paper presents αProlog, a logic programming language that uses this approach, along with several illustrative example programs and an operational semantics.

[1]  Christian Urban,et al.  Nominal unification , 2004, Theor. Comput. Sci..

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

[3]  Gopalan Nadathur,et al.  Higher-Order Logic Programming , 1986, ICLP.

[4]  Andrei Voronkov,et al.  Orienting rewrite rules with the Knuth-Bendix order , 2003, Inf. Comput..

[5]  Michel Parigot,et al.  Lambda-Mu-Calculus: An Algorithmic Interpretation of Classical Natural Deduction , 1992, LPAR.

[6]  Zoltan Somogyi,et al.  The Execution Algorithm of Mercury, an Efficient Purely Declarative Logic Programming Language , 1996, J. Log. Program..

[7]  Carsten Schürmann,et al.  Delphin: Functional Programming with Deductive Systems , 2002 .

[8]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

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

[10]  Martin Hofmann Semantical analysis of higher-order abstract syntax , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

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

[12]  Murdoch J. Gabbay The π-Calculus in FM , 2003 .

[13]  Amy P. Felty,et al.  Higher-Order Abstract Syntax in Coq , 1995, TLCA.

[14]  de Ng Dick Bruijn Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[15]  Gopalan Nadathur,et al.  Uniform Proofs as a Foundation for Logic Programming , 1991, Ann. Pure Appl. Log..

[16]  Alberto Momigliano,et al.  A Comparison of Formalizations of the Meta-Theory of a Language with Variable Bindings in Isabelle , 2001 .

[17]  Andrew M. Pitts,et al.  Nominal Logic: A First Order Theory of Names and Binding , 2001, TACS.

[18]  Lee Naish,et al.  Higher-order logic programming , 1996 .

[19]  John Staples,et al.  Qu-Prolog: An Extended Prolog for Meta Level Programming , 1989, META.

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

[21]  Christine Röckl A First-Order Syntax for the Pi-Calculus in Isabelle/HOL using Permutations , 2001, Electron. Notes Theor. Comput. Sci..

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

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

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

[25]  Alex K. Simpson,et al.  Computational Adequacy in an Elementary Topos , 1998, CSL.

[26]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[27]  Frank Pfenning,et al.  Logic Programming and Automated Reasoning , 1994, Lecture Notes in Computer Science.

[28]  Michael J. Maher,et al.  Constraint Logic Programming: A Survey , 1994, J. Log. Program..

[29]  James Cheney,et al.  The Complexity of Equivariant Unification , 2004, ICALP.

[30]  Dov M. Gabbay,et al.  Handbook of logic in artificial intelligence and logic programming (vol. 1) , 1993 .

[31]  Andreas Abel,et al.  A Third-Order Representation of the lambda-mu-Calculus , 2001, MERLIN.

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

[33]  P. M. Hill,et al.  Meta-Programming in Logic Progamming , 1998 .

[34]  de Ng Dick Bruijn,et al.  Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

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

[36]  Michael J. Maher,et al.  The Semantics of Constraint Logic Programs , 1998, J. Log. Program..