Nominal logic, a first order theory of names and binding
Information and Computation - TACS 2001
A Sequent Calculus for Nominal Logic
LICS '04 Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science
Theoretical Computer Science
Nominal logic programming
Information and Computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A polynomial nominal unification algorithm
Theoretical Computer Science
Nominal Unification from a Higher-Order Perspective
RTA '08 Proceedings of the 19th international conference on Rewriting Techniques and Applications
Relating nominal and higher-order abstract syntax specifications
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Journal of Automated Reasoning
RTA'05 Proceedings of the 16th international conference on Term Rewriting and Applications
Nominal Unification from a Higher-Order Perspective
ACM Transactions on Computational Logic (TOCL)
Encoding Abstract Syntax Without Fresh Names
Journal of Automated Reasoning
Reasoning about higher-order relational specifications
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
αProlog is a logic programming language which is well-suited for rapid prototyping of type systems and operational semantics of typed λ-calculi and many other languages involving bound names. In αProlog, the nominal unification algorithm of Urban, Pitts and Gabbay is used instead of first-order unification. However, although αProlog can be viewed as Horn-clause logic programming in Pitts' nominal logic, proof search using nominal unification is incomplete in nominal logic. Because of nominal logic's equivariance principle, complete proof search would require solving NP-hard equivariant unification problems. Nevertheless, the αProlog programs we studied run correctly without equivariant unification. In this paper, we give several examples of αProlog programs that do not require equivariant unification, develop a test for identifying such programs, and prove the correctness of this test via a proof-theoretic argument.