Functions-as-constructors Higher-order Unification, Extended Pattern Unification

Annals of Mathematics and Artificial Intelligence

Abstract

Unification is a central operation in constructing a range of compu- tational logic systems based on first-order and higher-order logics. First-order unification has several properties that guide its incorporation in such systems. In particular, first-order unification is decidable, unary, and can be performed on untyped term structures. None of these three properties hold for full higher- order unification: unification is undecidable, unifiers can be incomparable, and term-level typing can dominate the search for unifiers. The so-called pattern subset of higher-order unification was designed to be a small extension to first- order unification that respects the laws governing lambda-binding (i.e., the equali- ties for alpha, beta, and eta-conversion) but which also satisfied those three properties. While the pattern fragment of higher-order unification has been used in nu- merous implemented systems and in various theoretical settings, it is too weak for many applications. This paper defines an extension of pattern unification that should make it more generally applicable, especially in proof assistants that allow for higher-order functions. This extension’s main idea is that the ar- guments to a higher-order, free variable can be more than just distinct bound variables. In particular, such arguments can be terms constructed from (suffi- cient numbers of) such bound variables using term constructors and where no argument is a subterm of any other argument. We show that this extension to pattern unification satisfies the three properties mentioned above.