MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

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

Download:
pdf
by James Cheney, Christian Urban
http://www.cs.cornell.edu/People/jcheney/papers/alpnba.pdf
Add To MetaCart

Abstract:

Abstract. 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

Citations

112 de Bruijn. Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation – G - 1972
98 A new approach to abstract syntax with variable binding – Gabbay, Pitts - 2001
97 Abstract Syntax and Variable Binding – Fiore, Plotkin, et al. - 1999
16 A simpler proof theory for nominal logic – Cheney - 2005
11 André Hirschowitz. Higher-order abstract syntax in Coq – Despeyroux, Felty - 1995
8 The complexity of equivariant unification – Cheney - 2004
7 A logic programming language based on binding algebras – Hamana - 2001