skip to main content
research-article
Free Access

Nominal logic programming

Published:04 September 2008Publication History
Skip Abstract Section

Abstract

Nominal logic is an extension of first-order logic which provides a simple foundation for formalizing and reasoning about abstract syntax modulo consistent renaming of bound names (that is, α-equivalence). This article investigates logic programming based on nominal logic. We describe some typical nominal logic programs, and develop the model-theoretic, proof-theoretic, and operational semantics of such programs. Besides being of interest for ensuring the correct behavior of implementations, these results provide a rigorous foundation for techniques for analysis and reasoning about nominal logic programs, as we illustrate via examples.

Skip Supplemental Material Section

Supplemental Material

References

  1. Abadi, M., Cardelli, L., Curien, P.-L., and Lévy, J.-J. 1991. Explicit substitutions. J. Funct. Prog. 4, 375--416.Google ScholarGoogle ScholarCross RefCross Ref
  2. Aydemir, B. E., Bohannon, A., Fairbairn, M., Foster, J. N., Pierce, B. C., Sewell, P., Vytiniotis, D., Washburn, G., Weirich, S., and Zdancewic, S. 2005. Mechanized metatheory for the masses: The PoplMark Challenge. In Proceedings of the 18th International Conference on Theorem Proving in Higher Order Logics (TPHOLs'05), J. Hurd and T. F. Melham, Eds. Lecture Notes in Computer Science, vol. 3603. Springer, 50--65. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Barendregt, H. P. 1984. The Lambda Calculus. North-Holland.Google ScholarGoogle Scholar
  4. Cervesato, I. 1998. Proof-theoretic foundation of compilation in logic programming. In Proceedings of the International Joint Conference and Symposium on Logic Programming. 115--129. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Cervesato, I. and Pfenning, F. 2002. A linear logical framework. Inform. Comput. 179, 19--75. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Cheney, J. 2004a. The complexity of equivariant unification. In Proceedings of the 31st International Colloquium on Automata, Languages and Programming (ICALP'04). Lecture Notes in Computer Science, vol. 3142. Springer-Verlag, 332--344.Google ScholarGoogle Scholar
  7. Cheney, J. 2004b. Nominal logic programming. Ph.D. thesis, Cornell University, Ithaca, NY. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Cheney, J. 2005a. Equivariant unification. In Proceedings of the Conference on Rewriting Techniques and Applications (RTA'05). Lecture Notes in Computer Science, vol. 3467, Springer-Verlag, 74--89. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Cheney, J. 2005b. Relating nominal and higher-order pattern unification. In Proceedings of the 19th International Workshop on Unification (UNIF'05). 104--119.Google ScholarGoogle Scholar
  10. Cheney, J. 2005c. Scrap your nameplate (functional pearl). In Proceedings of the 10th International Conference on Functional Programming (ICFP'05), B. Pierce, Ed. ACM, 180--191. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Cheney, J. 2005d. A simpler proof theory for nominal logic. In Proceedings of the 8th International Conference on the Foundations of Software Science and Computational Structures (FOSSACS'05). Lecture Notes in Computer Science, vol. 3441, Springer-Verlag, 379--394. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Cheney, J. 2006a. Completeness and Herbrand theorems for nominal logic. J. Symb. Logic 71, 1, 299--320.Google ScholarGoogle ScholarCross RefCross Ref
  13. Cheney, J. 2006b. The semantics of nominal logic programs. In Proceedings of the International Conference on Logic Programing. Lecture Notes in Computer Science, vol. 4079. 361--375. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Cheney, J. and Urban, C. 2004. Alpha-Prolog: A logic programming language with names, binding and alpha-equivalence. In Proceedings of the 20th International Conference on Logic Programming (ICLP'04). Lecture Notes in Computer Science, vol. 3132, Springer-Verlag, 269--283.Google ScholarGoogle Scholar
  15. Cheng, A. S. K., Robinson, P. J., and Staples, J. 1991. Higher level meta programming in Qu-Prolog 3.0. In Proceedings of the International Conference on Logic Programming. 285--298.Google ScholarGoogle Scholar
  16. Church, A. 1940. A formulation of the simple theory of types. J. Symb. Logic 5, 56--68.Google ScholarGoogle ScholarCross RefCross Ref
  17. Clark, K. L., Robinson, P. J., and Hagen, R. 2001. Multi-threading and message communication in Qu-Prolog. Theory Pract. Logic Program. 1, 3, 283--301. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Clocksin, W. F. and Mellish, C. S. 2003. Programming in Prolog, 5th ed. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Darlington, J. and Guo, Y. 1994. Constraint logic programming in the sequent calculus. In Proceedings of the Conference on Logic Programming and Automated Reasoning (LPAR'94). Lecture Notes in Computer Science, vol. 822. Springer-Verlag, 200--214. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Davey, B. A. and Priestley, H. A. 2002. Introduction to Lattices and Order. Cambridge University Press.Google ScholarGoogle Scholar
  21. Felty, A. 1993. Implementing tactics and tacticals in a higher-order logic programming language. J. Automa. Reason. 11, 1, 41--81.Google ScholarGoogle ScholarCross RefCross Ref
  22. Fiore, M. P., Plotkin, G. D., and Turi, D. 1999. Abstract syntax and variable binding. In Proceedings of the Annual IEEE Symposium on Logic in Computer Science. IEEE Press, 193--202. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Gabbay, M. J. and Cheney, J. 2004. A sequent calculus for nominal logic. In Proceedings of the Annual IEEE Symposium on Logic in Computer Science. IEEE, 139--148. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Gabbay, M. J. and Pitts, A. M. 2002. A new approach to abstract syntax with variable binding. Formal Aspects Comput. 13, 341--363.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Girard, J.-Y. 1987. Linear logic. Theor. Comput. Sci. 50, 1, 1--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Hamana, M. 2001. A logic programming language based on binding algebras. In Proceedings of the Theoretical Aspects of Computer Science (TACS'01). Lecture Notes in Computer Science, vol. 2215, Springer-Verlag, 243--262. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Hannan, J. and Miller, D. 1988. Uses of higher-order unification for implementing program transformers. In Proceedings of the 5th International Conference and Symposium on Logic Programming, Volume 2, R. A. Kowalski and K. A. Bowen, Eds. MIT Press, Cambridge, MA, 942--959.Google ScholarGoogle Scholar
  28. Hanus, M. 1991. Horn clause programs with polymorphic types: Semantics and resolution. Theor. Comput. Sci. 89, 63--106. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Hanus, M. 1994. The integration of functions into logic programming: From theory to practice. J. Logic Program. 19--20, 583--628.Google ScholarGoogle Scholar
  30. Harel, D., Kozen, D., and Tiuryn, J. 2000. Dynamic Logic. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Harper, R., Honsell, F., and Plotkin, G. 1993. A framework for defining logics. J. ACM 40, 1, 143--184. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Hofmann, M. 1999. Semantical analysis of higher-order abstract syntax. In Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science, G. Longo, Ed. IEEE Press, 204--213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Jaffar, J., Maher, M. J., Marriott, K., and Stuckey, P. J. 1998. The semantics of constraint logic programs. J. Logic Program. 37, 1--3, 1--46.Google ScholarGoogle ScholarCross RefCross Ref
  34. Leach, J., Nieva, S., and Rodríguez-Artalejo, M. 2001. Constraint logic programming with hereditary Harrop formulas. Theory Prac. Logic Program. 1, 4, 409--445. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Lloyd, J. W. 1987. Foundations of Logic Programming. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Mason, I. A. 1987. Hoare's logic in the LF. Tech. rep. ECS-LFCS-87-32, University of Edinburgh.Google ScholarGoogle Scholar
  37. Miller, D. 1989. A logical analysis of modules in logic programming. J. Logic Program. 6, 1--2, 79--108. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Miller, D. 1990. An extension to ML to handle bound variables in data structures. In Proceedings of the 1st ESPRIT BRA Workshop on Logical Frameworks. 323--335.Google ScholarGoogle Scholar
  39. Miller, D. 1991. A logic programming language with lambda-abstraction, function variables, and simple unification. J. Logic Computat. 1, 4, 497--536.Google ScholarGoogle ScholarCross RefCross Ref
  40. Miller, D. 1993. A proposal for modules in Lambda-Prolog. In Extensions of Logic Programming, R. Dyckhoff, Ed. Lecture Notes in Computer Science, vol. 798. Springer, 206--221. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Miller, D. and Nadathur, G. 1987. A logic programming approach to manipulating formulas and programs. In Proceedings of the Symposium on Logic Programming. 379--388.Google ScholarGoogle Scholar
  42. Miller, D., Nadathur, G., Pfenning, F., and Scedrov, A. 1991. Uniform proofs as a foundation for logic programming. Annals Pure Appl. Logic 51, 125--157.Google ScholarGoogle ScholarCross RefCross Ref
  43. Miller, D. and Tiu, A. 2005. A proof theory for generic judgments., ACM Trans. Comput. Logic 6, 4, 749--783. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Milner, R. 1978. A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 3, 348--375.Google ScholarGoogle ScholarCross RefCross Ref
  45. Milner, R., Parrow, J., and Walker, D. 1992. A calculus of mobile processes, I. Inform. Computat. 100, 1, 1--40. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Mitchell, J. C. 2003. Concepts in Programming Languages. Cambridge University Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Mycroft, A. and O'Keefe, R. A. 1984. A polymorphic type system for Prolog. AI 23, 295--307. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Nadathur, G. and Miller, D. 1998. Higher-order logic programming. In Handbook of Logic in Artificial Intelligence and Logic Programming, D. M. Gabbay, C. J. Hogger, and J. A. Robinson, Eds. Vol. 5. Oxford University Press, Chapter 8, 499--590.Google ScholarGoogle Scholar
  49. Nadathur, G. and Mitchell, D. J. 1999. System description: Teyjus—a compiler and abstract machine based implementation of Lambda-Prolog. In Proceedings of the International Conference on Automated Deduction, H. Ganzinger, Ed. Lecture Notes in Computer Science, vol. 1632. Springer, 287--291. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Nadathur, G. and Qi, X. 2005. Optimizing the runtime processing of types in polymorphic logic programming languages. In Proceedings of the International Conference on Logic Programming, Artificial Intelligence, and Reasoning, G. Sutcliffe and A. Voronkov, Eds. Lecture Notes in Computer Science, vol. 3835. Springer, 110--124. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Nickolas, P. and Robinson, P. J. 1996. The Qu-Prolog unification algorithm: formalisation and correctness. Theor. Comput. Sci. 169, 81--112. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. O'Hearn, P. and Pym, D. J. 1999. The logic of bunched implications. Bull. Sym. Logic 5, 2, 215--244.Google ScholarGoogle ScholarCross RefCross Ref
  53. Pasalic, E., Sheard, T., and Taha, W. 2000. DALI: An untyped CBV operational semantics and equational theory of datatypes with binders (technical development). Tech. rep. CSE-00-007, Oregon Graduate Institute. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Pfenning, F. 1991. Logic programming in the LF logical framework. In Logical Frameworks, G. Huet and G. Plotkin, Eds. Cambridge University Press, 149--181. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Pfenning, F. 2001. Logical frameworks. In Handbook of Automated Reasoning, A. Robinson and A. Voronkov, Eds. Vol. II. Elsevier Science, Chapter 17, 1063--1147. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Pfenning, F. and Elliott, C. 1989. Higher-order abstract syntax. In Proceedings of the 1989 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '89). ACM Press, 199--208. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Pfenning, F. and Schürmann, C. 1999. System description: Twelf—A meta-logical framework for deductive systems. In Proceedings of the 16th International Conference on Automated Deduction (CADE16), H. Ganzinger, Ed. Lecture Notes in Artificial Intelligence, vol. 1632, Springer-Verlag, 202--206. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Pierce, B. C. 2002. Types and Programming Languages. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Pitts, A. M. 2003. Nominal logic, a first order theory of names and binding. Inform. Comput. 183, 165--193. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Pitts, A. M. 2006. Alpha-structural recursion and induction. J. ACM 53, 3, 459--506. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Pitts, A. M. and Gabbay, M. J. 2000. A metalanguage for programming with bound names modulo renaming. Lecture Notes in Computer Science, vol. 1837, Springer-Verlag, 230--255. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Pitts, A. M. and Shinwell, M. 2007. Generative unbinding of names. In Proceedings of the 34th ACM SIGPLAN-SIGACT Synposium on Principles of Programming Languages (POPL'07), ACM Press, 85--95. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Pottier, F. 2005. An overview of Cαml. In Proceedings of the ACM SIGPLAN Workshop on ML (ML'05). ACM, 27--52.Google ScholarGoogle Scholar
  64. Pottier, F. 2007. Static name control for FreshML. In Proceedings of the 22nd Annual IEEE Symposium on Logic In Computer Science (LICS'07). Wroclaw, Poland, 356--365. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Reynolds, J. C. 2002. Separation Logic: A Logic for Shared Mutable Data Structures. In Proceedings of the IEEE Symposium on Logic in Computer Science. IEEE Computer Society, Los Alamitos, CA, 55--74. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Sangiorgi, D. and Walker, D. 2001. The pi-Calculus: A Theory of Mobile Processes. Cambridge University Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Schöpp, U. 2007. Modelling generic judgements. Electron. Notes Theor. Comput. Sci. 174, 5, 19--35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Shinwell, M. R. and Pitts, A. M. 2005. On a monadic semantics for freshness. Theor. Comput. Sci. 342, 28--55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Shinwell, M. R., Pitts, A. M., and Gabbay, M. J. 2003. FreshML: Programmming with binders made simple. In Proceedings of the 8th ACM SIGPLAN International Conference on Functional Programming (ICFP'03). ACM Press, 263--274. Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Staples, J., Robinson, P. J., Paterson, R. A., Hagen, R. A., Craddock, A. J., and Wallis, P. C. 1989. Qu-Prolog: An extended Prolog for meta level programming. In Meta-Programming in Logic Programming, H. Abramson and M. H. Rogers, Eds. MIT Press, Chapter 23, 435--452. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Sterling, L. and Shapiro, E. 1994. The Art of Prolog: Advanced Programming Techniques. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Tiu, A. 2007. A logic for reasoning about generic judgments. Electron. Notes Theor. Comput. Sci. 174, 5, 3--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Urban, C. and Cheney, J. 2005. Avoiding equivariace in Alpha-Prolog. In Proceedings of the 2005 Conference on Typed Lambda Calculus and Applications (TLCA 2005). Lecture Notes in Computer Science, vol. 3461, Springer-Verlag, 74--89. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Urban, C., Pitts, A. M., and Gabbay, M. J. 2004. Nominal unification. Theor. Comput. Sci. 323, 1--3, 473--497. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Urban, C. and Tasson, C. 2005. Nominal techniques in Isabelle/HOL. In Proceedings of the 20th International Conference on Automated Deduction. Lecture Notes in Computer Science, vol. 3632. 38--53. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. van Emden, M. H. and Kowalski, R. A. 1976. The semantics of predicate logic as a programming language. J. ACM 23, 4, 293--322. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Watkins, K., Cervesato, I., Pfenning, F., and Walker, D. 2003. A concurrent logical framework: The propositional fragment. In Proceedings of TYPES. 355--377.Google ScholarGoogle Scholar

Index Terms

  1. Nominal logic programming

                  Recommendations

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in

                  Full Access

                  • Published in

                    cover image ACM Transactions on Programming Languages and Systems
                    ACM Transactions on Programming Languages and Systems  Volume 30, Issue 5
                    August 2008
                    193 pages
                    ISSN:0164-0925
                    EISSN:1558-4593
                    DOI:10.1145/1387673
                    Issue’s Table of Contents

                    Copyright © 2008 ACM

                    Publisher

                    Association for Computing Machinery

                    New York, NY, United States

                    Publication History

                    • Published: 4 September 2008
                    • Accepted: 1 October 2007
                    • Revised: 1 July 2007
                    • Received: 1 September 2006
                    Published in toplas Volume 30, Issue 5

                    Permissions

                    Request permissions about this article.

                    Request Permissions

                    Check for updates

                    Qualifiers

                    • research-article
                    • Research
                    • Refereed

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader
                  About Cookies On This Site

                  We use cookies to ensure that we give you the best experience on our website.

                  Learn more

                  Got it!