Practical Higher-Order Pattern Unification with On-the-Fly Raising

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.

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

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

[3]  Frank Pfenning,et al.  An Empirical Study of the Runtime Behavior of Higher-Order Logic Programs , 1992 .

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

[5]  Claude Kirchner,et al.  Higher-order unification via explicit substitutions , 1995, Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science.

[6]  Gopalan Nadathur,et al.  Choices in Representation and Reduction Strategies for Lambda Terms in Intensional Contexts , 2004, Journal of Automated Reasoning.

[7]  Zhenyu Qian,et al.  Unification of Higher-Order Patterns in Linear Time and Space , 1996, J. Log. Comput..

[8]  T. Nipkom Functional unification of higher-order patterns , 1993, LICS 1993.

[9]  Dale A. Miller,et al.  AN OVERVIEW OF PROLOG , 1988 .

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

[11]  Tobias Nipkow,et al.  Higher-order critical pairs , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

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

[13]  Gopalan Nadathur,et al.  System description : Teyjus : A compiler and abstract machine based implementation of λprolog , 1999 .

[14]  Jaime G. Carbonell,et al.  Automated Deduction — CADE-16 , 2002, Lecture Notes in Computer Science.

[15]  Frank Pfenning,et al.  Optimizing Higher-Order Pattern Unification , 2003, CADE.

[16]  Frank Pfenning,et al.  Unification and anti-unification in the calculus of constructions , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

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

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

[19]  Gopalan Nadathur,et al.  A Notation for Lambda Terms: A Generalization of Environments , 1998, Theor. Comput. Sci..

[20]  Dale Miller,et al.  Unification Under a Mixed Prefix , 1992, J. Symb. Comput..

[21]  Jacques D. Fleuriot,et al.  IsaPlanner: A Prototype Proof Planner in Isabelle , 2003, CADE.

[22]  Tobias Nipkow,et al.  Functional unification of higher-order patterns , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.