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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Andreas, A.: A third-order representation of the λμ-calculus. In: MERLIN 2001: Mechanized Reasoning about Languages with Variable Binding. Electronic Notes in Theoretical Computer Science, vol. 58(1), Elsevier, Amsterdam (2001)
Cheney, J.: The complexity of equivariant unification. In: Díaz, J., Karhumäki, J., Lepistö, A., Sannella, D. (eds.) ICALP 2004. LNCS, vol. 3142, pp. 332–344. Springer, Heidelberg (2004)
de Bruijn, N.G.: Lambda-calculus notation with nameless dummies, a tool for automatic formula manipulation. Indag. Mat. 34(5), 381–392 (1972)
Despeyroux, J., Felty, A., Hirschowitz, A.: Higher-order abstract syntax in Coq. In: Dezani-Ciancaglini, M., Plotkin, G. (eds.) TLCA 1995. LNCS, vol. 902, pp. 124–138. Springer, Heidelberg (1995)
Fiore, M.P., Plotkin, G.D., Turi, D.: Abstract syntax and variable binding. In: Proc. 14th Symp. on Logic in Computer Science (LICS 1999), pp. 193–202. IEEE, Los Alamitos (1999)
Gabbay, M.J.: The π-calculus in FM. In: Kamareddine, F. (ed.) Thirty-five years of Automath, Kluwer, Dordrecht (2003)
Gabbay, M.J., Cheney, J.: A proof theory for nominal logic. In: Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, LICS 2004 (2004) (to appear)
Gabbay, M.J., Pitts, A.M.: A new approach to abstract syntax with variable binding. Formal Aspects of Computing 13, 341–363 (2002)
Hamana, M.: A logic programming language based on binding algebras. In: Kobayashi, N., Pierce, B.C. (eds.) TACS 2001. LNCS, vol. 2215, pp. 243–262. Springer, Heidelberg (2001)
Hofmann, M.: Semantical analysis of higher-order abstract syntax. In: Proc. 14th Symp. on Logic in Computer Science, July 1999, pp. 204–213. IEEE, Los Alamitos (1999)
Jaffar, J., Maher, M.J., Marriott, K., Stuckey, P.J.: The semantics of constraint logic programs. Journal of Logic Programming 37(1-3), 1–46 (1998)
Miller, D.: A logic programming language with lambda-abstraction, function variables, and simple unification. J. Logic and Computation 1(4), 497–536 (1991)
Miller, D., Nadathur, G., Pfenning, F., Scedrov, A.: Uniform proofs as a foundation for logic programming. Annals of Pure and Applied Logic 51, 125–157 (1991)
Milner, R., Parrow, J., Walker, D.: A calculus of mobile processes, I-II. Information and Computation 100(1), 1–77 (1992)
Momigliano, A., Ambler, S.J., Crole, R.L.: A comparison of formalizations of the meta-theory of a language with variable bindings in Isabelle. In: Informatics Research Report EDI-INF-RR-0046, Supplemental Proceedings of TPHOLs 2001, pp. 267–282. University of Edinburgh, Edinburgh (2001)
Nadathur, G., Miller, D.: Higher-order logic programming. In: Gabbay, D.M., Hogger, C.J., Robinson, J.A. (eds.) Handbook of Logic in Artificial Intelligence and Logic Programming, vol. 5, ch. 8, pp. 499–590. Oxford University Press, Oxford (1998)
Parigot, M.: Lambda-mu-calculus: An algorithmic interpretation of classical natural deduction. In: Voronkov, A. (ed.) LPAR 1992. LNCS, vol. 624, pp. 190–201. Springer, Heidelberg (1992)
Pfenning, F., Elliott, C.: Higher-order abstract syntax. In: Proc. ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI 1989), pp. 199–208. ACM Press, New York (1989)
Pitts, A.M.: Nominal logic, a first order theory of names and binding. Information and Computation 183, 165–193 (2003)
Röckl, C.: A first-order syntax for the pi-calculus in isabelle/hol using permutations. In: Ambler, S.J., Crole, R.L., Momigliano, A. (eds.) MERLIN 2001: Mechanized Reasoning about Languages with Variable Binding. Electronic Notes in Theoretical Computer Science, vol. 58(1), Elsevier, Amsterdam (2001)
Schürmann, C., Fontana, R., Liao, Y.: Delphin: Functional programming with deductive systems (2002), Available at http://cs-www.cs.yale.edu/homes/carsten/
Shinwell, M.R., Pitts, A.M., Gabbay, M.J.: FreshML: Programmming with binders made simple. In: Proc. 8th ACM SIGPLAN Int. Conf. on Functional Programming (ICFP 2003), Uppsala, Sweden, pp. 263–274. ACM Press, New York (2003)
Somogyi, Z., Henderson, F., Conway, T.: The execution algorithm of Mercury: an efficient purely declarative logic programming language. J. Logic Programming 29(1-3), 17–64 (1996)
Staples, J., Robinson, P.J., Paterson, R.A., Hagen, R.A., Craddock, A.J., Wallis, P.C.: Qu-prolog: An extended prolog for meta level programming. In: Abramson, H., Rogers, M.H. (eds.) Meta-Programming in Logic Programming, ch. 23, MIT Press, Cambridge (1996)
Urban, C., Pitts, A.M., Gabbay, M.J.: Nominal unification. In: Baaz, M., Makowsky, J.A. (eds.) CSL 2003. LNCS, vol. 2803, pp. 513–527. Springer, Heidelberg (2003)
Urban, C., Cheney, J.: Avoiding equivariant unification (submitted)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Cheney, J., Urban, C. (2004). αProlog: A Logic Programming Language with Names, Binding and α-Equivalence. In: Demoen, B., Lifschitz, V. (eds) Logic Programming. ICLP 2004. Lecture Notes in Computer Science, vol 3132. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-27775-0_19
Download citation
DOI: https://doi.org/10.1007/978-3-540-27775-0_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-22671-0
Online ISBN: 978-3-540-27775-0
eBook Packages: Springer Book Archive