Extensions and applications of higher-order unification

This dissertation explores the problem of unification in various typed $\lambda$-calculi, developing and proving the correctness and completeness of unification algorithms for various calculi within a single general framework, and then demonstrating the practical importance of these algorithms by means of example applications. We being by presenting our general framework for unification, based on transformations of unification problems. Then, in this framework, we develop a new unification algorithm for a $\lambda$-calculus with dependent function (II) types. This algorithm is especially useful as it provides for mechanization in the very expressive Logical Framework (LF). The development involves significant complications not arising Huet's corresponding algorithm for the simply typed $\lambda$-calculus, primarily because it must deal with ill-typed terms. We then extend this algorithm first for dependent product ($\Sigma$) types, and second for implicit polymorphism. In the latter case, the algorithm is incomplete, though still quite useful in practice. The last part of the dissertation provides examples of the usefulness of the algorithms. The general idea is to use a $\lambda$-calculus as a meta-language for representing various other languages (object-languages). The rich structure of a typed $\lambda$-calculus, as opposed to traditional, first-order abstract syntax trees, allows us to express rules, e.g., program transformation and logical inference rules, that are more succinct, more powerful, and easier to reason about. We can then use unification in the meta-language to mechanize application of these rules.

[1]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[2]  J. R. Guard AUTOMATED LOGIC FOR SEMI-AUTOMATED MATHEMATICS , 1964 .

[3]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[4]  William A. Howard,et al.  The formulae-as-types notion of construction , 1969 .

[5]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[6]  GERARD P. HUET,et al.  The Undecidability of Unification in Third Order Logic , 1973, Inf. Control..

[7]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[8]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[9]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[10]  Gerald Jay Sussman,et al.  The Revised Report on SCHEME: A Dialect of LISP. , 1978 .

[11]  Garrel Pottinger Proofs of the normalization and Church-Rosser theorems for the typed λ-calculus , 1978, Notre Dame J. Formal Log..

[12]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[13]  F. Dick A survey of the project Automath , 1980 .

[14]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

[15]  Peter B. Andrews Theorem Proving via General Matings , 1981, JACM.

[16]  Garrel Pottinger The Church-Rosser theorem for the typed λ-calculus with surjective pairing , 1981, Notre Dame J. Formal Log..

[17]  Warren D. Goldfarb,et al.  The Undecidability of the Second-Order Unification Problem , 1981, Theor. Comput. Sci..

[18]  Lawrence C. Paulson,et al.  A Higher-Order Implementation of Rewriting , 1983, Sci. Comput. Program..

[19]  François Fages,et al.  Complete Sets of Unifiers and Matchers in Equational Theories , 1983, CAAP.

[20]  Nancy McCracken,et al.  The Typechecking of Programs with Implicit Type Structure , 1984, Semantics of Data Types.

[21]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[22]  Thierry Coquand,et al.  Constructions: A Higher Order Proof System for Mechanizing Mathematics , 1985, European Conference on Computer Algebra.

[23]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[24]  Per Martin-Löf,et al.  Constructive mathematics and computer programming , 1984 .

[25]  H. Boehm Partial polymorphic type inference is undecidable , 1985, 26th Annual Symposium on Foundations of Computer Science (sfcs 1985).

[26]  Lawrence C. Paulson,et al.  Natural Deduction as Higher-Order Resolution , 1986, J. Log. Program..

[27]  Gopalan Nadathur,et al.  Some Uses of Higher-Order Logic in Computational Linguistics , 1986, ACL.

[28]  Rance Cleaveland,et al.  Implementing mathematics with the Nuprl proof development system , 1986 .

[29]  Gerard Huet,et al.  Formal structures for computation and deduction , 1986 .

[30]  Anne Sjerp Troelstra Strong normalization for typed terms with surjective pairing , 1986, Notre Dame J. Formal Log..

[31]  G. Nadathur A higher-order logic as the basis for logic programming , 1987 .

[32]  Lawrence C. Paulson The representation of logics in higher-order logic , 1987 .

[33]  F. Honsell,et al.  A Framework for De ning LogicsRobert Harper , 1987 .

[34]  Gopalan Nadathur,et al.  A Logic Programming Approach to Manipulating Formulas and Programs , 1987, SLP.

[35]  Amy P. Felty,et al.  Implementing Theorem Provers in Logic Programming , 1987 .

[36]  Luca Cardelli,et al.  Basic Polymorphic Typechecking , 1987, Sci. Comput. Program..

[37]  Ian A. Mason Hoare's Logic in the LF , 1987 .

[38]  Amy P. Felty,et al.  Specifying Theorem Provers in a Higher-Order Logic Programming Language , 1988, CADE.

[39]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[40]  Lincoln A. Wallen,et al.  Learning and Applying Generalised Solutions using Higher Order Resolution , 1988, CADE.

[41]  Frank Pfenning,et al.  Partial polymorphic type inference and higher-order unification , 1988, LISP and Functional Programming.

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

[43]  William M. Farmer,et al.  A unification algorithm for second-order monadic terms , 1988, Ann. Pure Appl. Log..

[44]  Frank Pfenning,et al.  Higher-order abstract syntax , 1988, PLDI '88.

[45]  Frank Pfenning,et al.  Elf: a language for logic definition and verified metaprogramming , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[46]  Wayne Snyder,et al.  Complete Sets of Transformations for General E-Unification , 1989, Theor. Comput. Sci..

[47]  Wayne Snyder,et al.  Higher-Order Unification Revisited: Complete Sets of Transformations , 1989, J. Symb. Comput..

[48]  John Hannan,et al.  Proof-Theoretic Methods for Analysis of Functional Programs , 1989 .

[49]  David J. Pym,et al.  Proofs, search and computation in general logic , 1990 .

[50]  Gopalan Nadathur,et al.  Uniform Proofs as a Foundation for Logic Programming , 1991, Ann. Pure Appl. Log..