Nominal logic programming

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.

[1]  Dale Miller,et al.  Reasoning in a logic with definitions and induction , 1997 .

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

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

[4]  Thomas Johnsson,et al.  Lambda Lifting: Treansforming Programs to Recursive Equations , 1985, FPCA.

[5]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[6]  M. Kohlhase,et al.  A Type-Theoretic Semantics for -DRT1 , 2007 .

[7]  T. Sheard,et al.  DalI: An Untyped CBV Operational Semantics and Equational Theoryofr Datatypes with Binders(Technical Development) , 2000 .

[8]  James Cheney Equivariant Unification , 2009, Journal of Automated Reasoning.

[9]  J. Hannan,et al.  A logical framework for reasoning about logical specifications , 2004 .

[10]  J. Lloyd Foundations of Logic Programming , 1984, Symbolic Computation.

[11]  Jacques Cohen Logic programming and constraint logic programming , 1996, CSUR.

[12]  Gopalan Nadathur,et al.  Optimizing the Runtime Processing of Types in Polymorphic Logic Programming Languages , 2005, LPAR.

[13]  Andrew M. Pitts,et al.  On a monadic semantics for freshness , 2005, Theor. Comput. Sci..

[14]  Frank Pfenning,et al.  System Description: Twelf - A Meta-Logical Framework for Deductive Systems , 1999, CADE.

[15]  Carsten Schürmann,et al.  The [triangle]-Calculus. Functional Programming with Higher-Order Encodings , 2005, TLCA.

[16]  Alexander Russell,et al.  The complexity of solving equations over finite groups , 1999, Proceedings. Fourteenth Annual IEEE Conference on Computational Complexity (Formerly: Structure in Complexity Theory Conference) (Cat.No.99CB36317).

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

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

[19]  Christopher John Hogger,et al.  Essentials of logic programming , 1990 .

[20]  Dale Miller,et al.  A proof theory for generic judgments , 2005, TOCL.

[21]  Matías Menni About И-quantifiers , 2003, Appl. Categorical Struct..

[22]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[23]  John Staples,et al.  Higher Level Meta Programming in Qu-Prolog 3: 0 , 1991, ICLP.

[24]  Dale Miller,et al.  Reasoning with higher-order abstract syntax in a logical framework , 2000, TOCL.

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

[26]  Alan Mycroft,et al.  A Polymorphic Type System for Prolog , 1984, Logic Programming Workshop.

[27]  Christopher Lynch,et al.  Goal-Directed E-Unification , 2001, RTA.

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

[29]  Yike Guo,et al.  Constraint Logic Programming in the Sequent Calculus , 1994, LPAR.

[30]  James Cheney The Semantics of Nominal Logic Programs , 2006, ICLP.

[31]  Carl A. Gunter,et al.  The machine-assisted proof of programming language properties , 1996 .

[32]  Furio Honsell,et al.  A Natural Deduction Approach to Dynamic Logic , 1995, TYPES.

[33]  Claude Kirchner,et al.  Higher Order Unification via Explicit Substitutions , 2000, Inf. Comput..

[34]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[35]  Simon L. Peyton Jones,et al.  Practical type inference for arbitrary-rank types , 2007, Journal of Functional Programming.

[36]  James Cheney,et al.  Completeness and Herbrand theorems for nominal logic , 2006, Journal of Symbolic Logic.

[37]  Christian Urban,et al.  Nominal Techniques in Isabelle/HOL , 2005, Journal of Automated Reasoning.

[38]  Robert Harper,et al.  Typed closure conversion , 1996, POPL '96.

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

[40]  Walid Taha,et al.  MetaML and multi-stage programming with explicit annotations , 2000, Theor. Comput. Sci..

[41]  Michael Hanus,et al.  The Integration of Functions into Logic Programming: From Theory to Practice , 1994, J. Log. Program..

[42]  Andrew M. Pitts,et al.  Alpha-structural recursion and induction , 2005, JACM.

[43]  Leon Sterling,et al.  The art of Prolog (2nd ed.): advanced programming techniques , 1994 .

[44]  Maribel Fernández The Lambda Calculus , 2009 .

[45]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[46]  James R. Slagle,et al.  Automated Theorem-Proving for Theories with Simplifiers Commutativity, and Associativity , 1974, JACM.

[47]  Andrew M. Pitts,et al.  Observable Properties of Higher Order Functions that Dynamically Create Local Names, or What's new? , 1993, MFCS.

[48]  Robin Milner,et al.  Communicating and mobile systems - the Pi-calculus , 1999 .

[49]  Frank Pfenning,et al.  A modal analysis of staged computation , 1996, POPL '96.

[50]  Eli Barzilay,et al.  Practical Reflection in Nuprl , .

[51]  Maribel Fernández,et al.  Nominal rewriting , 2007, Inf. Comput..

[52]  Carsten Schürmann Recursion for Higher-Order Encodings , 2001, CSL.

[53]  Per Martin-Löf,et al.  Intuitionistic type theory , 1984, Studies in proof theory.

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

[55]  James Cheney Scrap your nameplate: (functional pearl) , 2005, ICFP '05.

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

[57]  Carsten Schürmann A Type-Theoretic Approach to Induction with Higher-Order Encodings , 2001, LPAR.

[58]  Rance Cleaveland,et al.  Implementing mathematics with the Nuprl proof development system , 1986 .

[59]  Benjamin C. Pierce,et al.  Mechanized Metatheory for the Masses: The PoplMark Challenge , 2005, TPHOLs.

[60]  François Pottier,et al.  Static Name Control for FreshML , 2007, 22nd Annual IEEE Symposium on Logic in Computer Science (LICS 2007).

[61]  James Cheney,et al.  A sequent calculus for nominal logic , 2004, Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004..

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

[63]  Frank Pfenning,et al.  Functional programming with names and necessity , 2004 .

[64]  Mario Rodríguez-Artalejo,et al.  Constraint Logic Programming with Hereditary Harrop Formulas , 1997, ILPS.

[65]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

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

[67]  Gopalan Nadathur,et al.  A Logic Programming Approach to Manipulating Formulas and Programs , 1987, SLP.

[68]  Dale Miller,et al.  Uses of Higher-Order Unification for Implementing Program Transformers , 1988, ICLP/SLP.

[69]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[70]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[71]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[72]  Andrew M. Pitts,et al.  A Metalanguage for Programming with Bound Names Modulo Renaming , 2000, MPC.

[73]  Dale Miller,et al.  A Logical Analysis of Modules in Logic Programming , 1989, J. Log. Program..

[74]  Alwen Tiu A Logic for Reasoning about Generic Judgments , 2007, Electron. Notes Theor. Comput. Sci..

[75]  M. Schönfinkel Über die Bausteine der mathematischen Logik , 1924 .

[76]  Dale Miller,et al.  A proof theory for generic judgments: an extended abstract , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[77]  Robert L. Constable,et al.  The semantics of reflected proof , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[78]  Bernhard Beckert,et al.  Dynamic Logic , 2007, The KeY Approach.

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

[80]  Furio Honsell,et al.  A framework for defining logics , 1993, JACM.

[81]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[82]  Ulrich Schöpp,et al.  A Dependent Type Theory with Names and Binding , 2004, CSL.

[83]  Aleksandar Nanevski Meta-programming with names and necessity , 2002, ICFP '02.

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

[85]  Dale Miller Encoding Generic Judgments: Preliminary results , 2001, Electron. Notes Theor. Comput. Sci..

[86]  Wayne Snyder Proof theory for general unification , 1993, Progress in computer science and applied logic.

[87]  Eli Barzilay,et al.  Reflecting Higher-Order Abstract Syntax in Nuprl ? , 2002 .

[88]  Iliano Cervesato,et al.  Proof-Theoretic Foundation of Compilation in Logic Programming , 1998, IJCSLP.

[89]  J. Lambek,et al.  Introduction to higher order categorical logic , 1986 .

[90]  Christian Urban,et al.  alpha-Prolog: A Logic Programming Language with Names, Binding and a-Equivalence , 2004, ICLP.

[91]  Amy P. Felty,et al.  Implementing tactics and tacticals in a higher-order logic programming language , 1993, Journal of Automated Reasoning.

[92]  Leon Sterling,et al.  The Art of Prolog - Advanced Programming Techniques , 1986 .

[93]  Mario Rodríguez-Artalejo,et al.  Constraint Logic Programming with Hereditary Harrop formulas , 1997, Theory and Practice of Logic Programming.

[94]  David Walker,et al.  CLF: A Dependent Logical Framework for Concurrent Computations∗ , 2004 .

[95]  Gopalan Nadathur,et al.  System Description: Teyjus - A Compiler and Abstract Machine Based Implementation of lambda-Prolog , 1999, CADE.

[96]  Dale Miller,et al.  Unification of Simply Typed Lamda-Terms as Logic Programming , 1991, ICLP.

[97]  Stuart Frazier Allen Abstract identifiers, intertextual reference and a computational basis for recordkeeping , 2004, First Monday.

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

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

[100]  Michael Hanus Horn Clause Programs with Polymorphic Types: Semantics and Resolution , 1989, TAPSOFT, Vol.2.

[101]  Andrew M. Pitts,et al.  A new approach to abstract syntax involving binders , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

[102]  GERARD P. HUET,et al.  The Undecidability of Unification in Third Order Logic , 1973, Inf. Control..

[103]  Dale Miller,et al.  A Proposal for Modules in Lambda-Prolog , 1993, ELP.

[104]  Haskell B. Curry Grundlagen der kombinatorischen Logik , 1930 .

[105]  Davide Sangiorgi,et al.  The Pi-Calculus - a theory of mobile processes , 2001 .

[106]  Krzysztof R. Apt,et al.  Contributions to the Theory of Logic Programming , 1982, JACM.

[107]  Martín Abadi,et al.  A calculus for cryptographic protocols: the spi calculus , 1997, CCS '97.

[108]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[109]  Peter W. O'Hearn,et al.  The Logic of Bunched Implications , 1999, Bulletin of Symbolic Logic.

[110]  John C. Mitchell,et al.  Concepts in programming languages , 2002 .

[111]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

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

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

[114]  Yde Venema,et al.  Dynamic Logic by David Harel, Dexter Kozen and Jerzy Tiuryn. The MIT Press, Cambridge, Massachusetts. Hardback: ISBN 0–262–08289–6, $50, xv + 459 pages , 2002, Theory and Practice of Logic Programming.

[115]  James Cheney A Simpler Proof Theory for Nominal Logic , 2005, FoSSaCS.

[116]  I. Moerdijk,et al.  Sheaves in geometry and logic: a first introduction to topos theory , 1992 .

[117]  Keith L. Clark,et al.  Multi-threading and Message Communication in Qu-Prolog , 2001, Theory Pract. Log. Program..

[118]  F. Pfenning Logic programming in the LF logical framework , 1991 .

[119]  Manuel V. Hermenegildo,et al.  The CIAO Multi-Dialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems , 1995, APPIA-GULP-PRODE.

[120]  Sara Negri,et al.  Structural proof theory , 2001 .

[121]  CheneyJames,et al.  Nominal logic programming , 2008 .

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

[123]  Frank Pfenning,et al.  A linear logical framework , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[124]  Dale Miller,et al.  Abstract Syntax for Variable Binders: An Overview , 2000, Computational Logic.

[125]  Daniel Hirschkoff A Full Formalisation of pi-Calculus Theory in the Calculus of Constructions , 1997, TPHOLs.

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

[127]  J. Heijenoort Begriffsschrift, a formula language, modeled upon that of arithmetic, for pure thought GOTTLOB FREGE(1879) , 1970 .

[128]  Christian Urban,et al.  Avoiding Equivariance in Alpha-Prolog , 2005, TLCA.

[129]  Dr. Pierre Deransart,et al.  Prolog: The Standard , 1996, Springer Berlin Heidelberg.

[130]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[131]  David Walker,et al.  A Concurrent Logical Framework: The Propositional Fragment , 2003, TYPES.

[132]  David H. D. Warren,et al.  Definite Clause Grammars for Language Analysis - A Survey of the Formalism and a Comparison with Augmented Transition Networks , 1980, Artif. Intell..

[133]  Anil Nerode,et al.  Logic for Applications , 1997, Graduate Texts in Computer Science.

[134]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[135]  Zhenyu Qian,et al.  Linear Unification of Higher-Order Patterns , 1993, TAPSOFT.

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

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

[138]  Dale Miller,et al.  An Extension to ML to Handle Bound Variables in Data Structures: Preliminary Report , 1990 .

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

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

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

[142]  Brian A. Davey,et al.  An Introduction to Lattices and Order , 1989 .

[143]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[144]  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 .

[145]  William F. Clocksin,et al.  Programming in Prolog , 1981, Springer Berlin Heidelberg.

[146]  Benjamin C. Pierce,et al.  Basic category theory for computer scientists , 1991, Foundations of computing.

[147]  Ian A. Mason Hoare's Logic in the LF , 1987 .

[148]  Martín Abadi,et al.  Explicit substitutions , 1989, POPL '90.

[149]  Michael H. Albert,et al.  Unification in Varieties of Groups: Nilpotent Varieties , 1994, Canadian Journal of Mathematics.

[150]  Alberto Momigliano,et al.  Induction and Co-induction in Sequent Calculus , 2003, TYPES.

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

[152]  Chiyan Chen,et al.  Meta-programming through typeful code representation , 2003, ICFP '03.

[153]  Rasmus Ejlers Møgelberg,et al.  Proceedings of the 22nd Annual IEEE Symposium on Logic in Computer Science , 2007 .

[154]  Martin Odersky,et al.  A functional theory of local names , 1994, POPL '94.

[155]  Kenneth Steiglitz,et al.  Combinatorial Optimization: Algorithms and Complexity , 1981 .

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

[157]  James Cheney Relating Nominal and Higher-Order Pattern Unification , 2005 .

[158]  Gérard P. Huet,et al.  A Unification Algorithm for Typed lambda-Calculus , 1975, Theor. Comput. Sci..

[159]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

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

[161]  Harold T. Hodes,et al.  The | lambda-Calculus. , 1988 .

[162]  Ulrich Schöpp Modelling Generic Judgements , 2007, Electron. Notes Theor. Comput. Sci..

[163]  Mark R. Shinwell Swapping the atom: Programming with binders in Fresh O''Caml , 2003 .

[164]  Pierre-Louis Curien,et al.  The Categorical Abstract Machine , 1987, Sci. Comput. Program..

[165]  Andrew M. Pitts,et al.  Generative unbinding of names , 2007, POPL '07.

[166]  Frank Pfenning,et al.  Logical Frameworks , 2001, Handbook of Automated Reasoning.

[167]  David B. MacQueen,et al.  The Definition of Standard ML (Revised) , 1997 .

[168]  VytiniotisDimitrios,et al.  Practical type inference for arbitrary-rank types , 2007 .

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