Nominal logic is a variant of first-order logic with special facilities for reasoning about names and binding based on the underlying concepts of swapping and freshness. It serves as the basis of logic programming and term rewriting techniques that provide similar advantages to, but remain simpler than, higher-order logic programming or term rewriting systems. Previous work on nominal rewriting and logic programming has relied on nominal unification, that is, unification up to equality in nominal logic. However, because of nominal logic’s equivariance property, these applications require a stronger form of unification, which we call equivariant unification. Unfortunately, equivariant unification and matching are NP-hard decision problems. This paper presents an algorithm for equivariant unification that produces a complete set of finitely many solutions, as well as NP decision procedure and a version that enumerates solutions one at a time. In addition, we present a polynomial time algorithm for swapping-free equivariant matching, that is, for matching problems in which the swapping operation does not appear.
KeywordsLogic Program Logic Programming Nominal Term Ground Term Permutation Graph
Unable to display preview. Download preview PDF.
- 3.Cheney, J.R.: Nominal Logic Programming. PhD thesis, Cornell University, Ithaca, NY (August 2004)Google Scholar
- 4.Fernández, M., Gabbay, M., Mackie, I.: Nominal rewriting systems. In: Proceedings of the 6th Conference on Principles and Practice of Declarative Programming (PPDP 2004) (to appear)Google Scholar
- 10.Urban, C., Cheney, J.: Avoiding equivariance in alpha-Prolog (2004)Google Scholar