ACM SIGACT News
Alpha-structural recursion and induction
Journal of the ACM (JACM)
Electronic Notes in Theoretical Computer Science (ENTCS)
Mechanized metatheory model-checking
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Resolving Inductive Definitions with Binders in Higher-Order Typed Functional Programming
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Journal of Automated Reasoning
The semantics of nominal logic programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Alpha-structural recursion and induction
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
A simpler proof theory for nominal logic
FOSSACS'05 Proceedings of the 8th international conference on Foundations of Software Science and Computation Structures
Avoiding equivariance in alpha-prolog
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
RTA'05 Proceedings of the 16th international conference on Term Rewriting and Applications
Encoding Abstract Syntax Without Fresh Names
Journal of Automated Reasoning
Hi-index | 0.01 |
Names, name-binding, and equivalence of expressions up to “safe” renaming of bound names are often encountered in programming tasks, especially in writing programs that manipulate symbolic data such as mathematical expressions or other programs. Most programming languages provide no support for programming with names and binding, so operations like renaming and substitution must be written by hand, on an application-by-application basis. been developed by Gabbay and Pitts, based on defining concepts like name-binding and substitution in terms of more primitive concepts including name-swapping and freshness. We call this approach nominal This dissertation investigates nominal logic programming, or logic programming using nominal logic. The contributions of this dissertation are as follows. A nominal logic programming language called αProlog is presented, along with examples of programs that are particularly convenient to write in αProlog. A revised form of nominal logic that provides a suitable foundation for nominal logic programming is developed. Both operational and denotational semantics for nominal logic programming are given, and soundness and completeness properties are proved. The unification and other nominal constraint problems that must be solved during execution of nominal logic programs are identified, and the complexity of and algorithms for solving these constraints are investigated. techniques for programming with names and binding, notably higher-order is both simpler and more expressive than HOAS: in particular, HOAS cannot easily handle open terms, or terms with an unknown number is no problem with open terms. These contributions support the contention that nominal logic programming is a powerful technique for programming with names and binding.