Logic programming in the LF logical framework
Logical frameworks
Unification under a mixed prefix
Journal of Symbolic Computation
Higher order unification via explicit substitutions
Information and Computation
System Description: Teyjus - A Compiler and Abstract Machine Based Implementation of lambda-Prolog
CADE-16 Proceedings of the 16th International Conference on Automated Deduction: Automated Deduction
System Description: Twelf - A Meta-Logical Framework for Deductive Systems
CADE-16 Proceedings of the 16th International Conference on Automated Deduction: Automated Deduction
Choices in Representation and Reduction Strategies for Lambda Terms in Intensional Contexts
Journal of Automated Reasoning
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
The Bedwyr System for Model Checking over Syntactic Expressions
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
The Abella Interactive Theorem Prover (System Description)
IJCAR '08 Proceedings of the 4th international joint conference on Automated Reasoning
Proof search specifications of bisimulation and modal logics for the π-calculus
ACM Transactions on Computational Logic (TOCL)
Optimizing the runtime processing of types in polymorphic logic programming languages
LPAR'05 Proceedings of the 12th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Hi-index | 0.00 |
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.