Practical higher-order pattern unification with on-the-fly raising

  • Authors:
  • Gopalan Nadathur;Natalie Linnell

  • Affiliations:
  • Digital Technology Center and Department of Computer Science and Engineering, Univ. of Minnesota, Minneapolis, MN;Digital Technology Center and Department of Computer Science and Engineering, Univ. of Minnesota, Minneapolis, MN

  • Venue:
  • ICLP'05 Proceedings of the 21st international conference on Logic Programming
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Higher-order pattern unification problems arise often in computations within systems such as Twelf, λ Prolog and Isabelle. An important characteristic of such problems is that they are given by equations appearing under a prefix of alternating universal and existential quantifiers. Most existing algorithms for solving these problems assume that such prefixes are simplified to a ∀∃∀ form by an a priori application of a transformation known as raising. There are drawbacks to this approach. Mixed quantifier prefixes typically manifest themselves in the course of computation, thereby requiring a dynamic form of preprocessing that is difficult to support in low-level implementations. Moreover, raising may be redundant in many cases and its effect may have to be undone by a subsequent pruning transformation. We propose a method to overcome these difficulties. In particular, a unification algorithm is described that proceeds by recursively descending through the structures of terms, performing raising and other transformations on-the-fly and only as needed.