Reduction types and intensionality in the lambda-calculus

In this thesis I introduce a new approach to the automated analysis of the reduction behaviour of A-calculus terms. This new approach improves on earlier analysers in several ways, not least in its treatment of higher-order terms and polymorphism, two notably troublesome issues. In addition, this thesis introduces a stronger notion of reduction behaviour than strictness. This concept, called strong head neededness, forms the basis for a new notation for describing the reduction behaviour of terms. This notation is a kind of type, elements of which are built using a Boolean algebra of function type constructors. Thus the form of the methodology proposed is that of a type system. Consideration is given to a variety of type assignment systems for the new type system. This supports the hypothesis that the approach proposed is suitable as a framework for building a range of analyses. Having established this framework it is then a matter of engineering to determine the appropriate trade off between information derived and performance achieved. An investigation is conducted into the formal semantics of all the constructs introduced. In particular, the investigation proves a range of soundness and completeness results. Also examined is the semantics of the new notion of type and the development of a model for reduction types. The model is of interest in its own right, as it gives further insight into the reduction behaviour of A-terms. The thesis includes detailed implementations of all the type assignment systems and ascertains the correctness of these implementations.

[1]  Prateek Mishra,et al.  Reasoning about Simple and Exhaustive Demand in Highter-Order Lazy Languages , 1991, FPCA.

[2]  Ernst-Erich Doberkat Topological Completeness in an Ideal Model for Polymorphic Types , 1989, SIAM J. Comput..

[3]  George Boole,et al.  The mathematical analysis of logic , 1948 .

[4]  Haskell B. Curry,et al.  Combinatory Logic, Volume I , 1959 .

[5]  S. C. Wray Implementation and programming techniques for functional languages , 1986 .

[6]  Mariangiola Dezani-Ciancaglini,et al.  A filter lambda model and the completeness of type assignment , 1983, Journal of Symbolic Logic.

[7]  Phil Wadfer,et al.  Strictness analysis on non-fiat domains (by abstract interpretation over finite domains) , 1985 .

[8]  P. Wadler Is there a use for linear logic? , 1991, PEPM '91.

[9]  D. A. Turner The semantic elegance of applicative languages , 1981, FPCA '81.

[10]  Mario Coppo,et al.  Type Inference with Recursive Types: Syntax and Semantics , 1991, Inf. Comput..

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

[12]  Jörg H. Siekmann,et al.  Unification theory , 1986, Decis. Support Syst..

[13]  F. Cardone,et al.  Two extensions of Curry's type inference system , 1990 .

[14]  Gordon D. Plotkin,et al.  A Semantics for Type Checking , 1991, TACS.

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

[16]  Sebastian Hunt,et al.  Frontiers and open sets in abstract interpretation , 1989, FPCA.

[17]  Tsung-Min Kuo,et al.  Strictness analysis: a new perspective based on type inference , 1989, FPCA.

[18]  G. Kreisel The Collected Papers of Gerhard Gentzen , 1971 .

[19]  Philip Wadler,et al.  Projections for strictness analysis , 1987, FPCA.

[20]  Peter Dybjer,et al.  Inverse Image Analysis , 1987, ICALP.

[21]  Andrew Simon Partridge Speculative evaluation in parallel implementations of lazy functional languages , 1991 .

[22]  Dieter Maurer,et al.  Strictness computation using special lambda-expressions , 1985, Programs as Data Objects.

[23]  Jan Willem Klop,et al.  Combinatory reduction systems , 1980 .

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

[25]  Simona Ronchi Della Rocca,et al.  Principal Type Schemes for an Extended Type Theory , 1984, Theor. Comput. Sci..

[26]  Geoffrey Livingston Burn,et al.  Abstract interpretation and the parallel evaluation of functional languages , 1987 .

[27]  Mario Coppo,et al.  An Extended Polymorphic Type System for Applicative Languages , 1980, MFCS.

[28]  Philip Wadler,et al.  Backwards Strictness Analysis: Proved and Improved , 1989, Functional Programming.

[29]  Samson Abramsky,et al.  Strictness analysis and polymorphic invariance , 1985, Programs as Data Objects.

[30]  Mitchell Wand,et al.  On the complexity of type inference with coercion , 1989, FPCA.

[31]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[32]  Simona Ronchi Della Rocca,et al.  Principal Type Scheme and Unification for Intersection Type Discipline , 1988, Theor. Comput. Sci..

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

[34]  Graham Hutton,et al.  Parsing Using Combinators , 1989, Functional Programming.

[35]  Alan Mycroft,et al.  The Theory and Practice of Transforming Call-by-need into Call-by-value , 1980, Symposium on Programming.

[36]  Peter Sestoft,et al.  Analysis and efficient implementation of functional programs , 1991 .

[37]  Torben Æ. Mogensen,et al.  A Backwards Analysis for Compile-time Garbage Collection , 1990, ESOP.

[38]  Geoffrey L. Burn,et al.  Lazy functional languages - abstract interpretation and compilation , 1991, Research monographs in parallel and distributed computing.

[39]  M. Stone The theory of representations for Boolean algebras , 1936 .

[40]  John Mitchell,et al.  Type Inference and Type Containment , 1984, Semantics of Data Types.

[41]  Tobias Nipkow,et al.  Boolean Unification - The Story So Far , 1989, J. Symb. Comput..