Non-standard type inference for functional programs

We propose a general framework for “non-standard type inference based” static analyses of typed functional programs and study inference systems (with and without conjunction) for strictness, totality, and dead-code analyses. A key feature of our framework is that it provides a foundation of the program analyses which is based directly on the operational semantics of the programming language considered. This results in a rather direct presentation which involves relatively little mathematical overhead. We develop a semantical investigation of the systems and discuss in some detail possible implementations of the presented analyses. In particular we give sound and complete inference algorithms for strictness and dead-code analyses without conjunction.

[1]  Flemming Nielson,et al.  Two-Level Semantics and Abstract Interpretation , 1989, Theor. Comput. Sci..

[2]  G.D. Plotkin,et al.  LCF Considered as a Programming Language , 1977, Theor. Comput. Sci..

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

[4]  Christine Paulin-Mohring,et al.  Extracting ω's programs from proofs in the calculus of constructions , 1989, POPL '89.

[5]  S. V. Bakel Complete restrictions of the intersection type discipline Corrected version , 1992 .

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

[7]  Alan Mycroft,et al.  Uniform PERs and Comportment Analysis , 1995, PLILP.

[8]  Christian Mossin,et al.  Flow analysis of typed higher-order programs , 1996, Technical report / University of Copenhagen / Datalogisk institut.

[9]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[10]  S. V. Bakel,et al.  Intersection type disciplines in Lambda Calculus and applicative term rewriting systems , 1993 .

[11]  Flemming Nielson,et al.  Strictness analysis and denotational abstract interpretation , 1987, POPL '87.

[12]  Frank Pfenning,et al.  The Practice of Logical Frameworks , 1996, CAAP.

[13]  Christine Paulin-Mohring Extraction de programmes dans le Calcul des Constructions. (Program Extraction in the Calculus of Constructions) , 1989 .

[14]  David Sands,et al.  Binding time analysis: a new PERspective , 1991, PEPM '91.

[15]  Dana S. Scott,et al.  Some Domain Theory and Denotational Semantics in Coq , 2009, TPHOLs.

[16]  Hanne Riis Nielson,et al.  Strictness and Totality Analysis , 1994 .

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

[18]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.

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

[20]  Kirsten Lackner Solberg,et al.  Annotated Type Systems for Program Analysis , 1995 .

[21]  Jeffrey D. Ullman Elements of ML programming , 1994 .

[22]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[23]  B. Pierce Programming with intersection types and bounded polymorphism , 1992 .

[24]  David Amson Wright,et al.  Reduction types and intensionality in the lambda-calculus , 1992 .

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

[26]  Lawrence Charles Paulson,et al.  ML for the working programmer , 1991 .

[27]  Robin Milner,et al.  Definition of standard ML , 1990 .

[28]  Andrew Pitts,et al.  Semantics and Logics of Computation: Operationally-Based Theories of Program Equivalence , 1997 .

[29]  David A. Wright,et al.  A New Technique for Strictness Analysis , 1991, TAPSOFT, Vol.2.

[30]  Daniel Le Métayer,et al.  A new method for strictness analysis on non-flat domains , 1989, Fourth IEEE Region 10 International Conference TENCON.

[31]  Alan Mycroft,et al.  Abstract interpretation and optimising transformations for applicative programs , 1982 .

[32]  Paul Hudak,et al.  Conception, evolution, and application of functional programming languages , 1989, CSUR.

[33]  David Park,et al.  Concurrency and Automata on Infinite Sequences , 1981, Theoretical Computer Science.

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

[36]  Chris Hankin,et al.  Lazy Type Inference for the Strictness Analysis of Lists , 1994, ESOP.

[37]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[38]  V. Rich Personal communication , 1989, Nature.

[39]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[40]  高山 幸秀 Extraction of redundancy-free programs from constructive natural deduction proofs , 1991 .

[41]  Chris Hankin,et al.  Lazy Type Inference and Program Analysis , 1995, Sci. Comput. Program..

[42]  Thomas P. Jensen,et al.  Conjunctive Type Systems and Abstract Interpretation of Higher-Order Functional Programs , 1995, J. Log. Comput..

[43]  Kirsten Lackner Solberg Strictness and Totality Analysis with Conjunction , 1995 .

[44]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[45]  Douglas J. Howe Proving Congruence of Bisimulation in Functional Programming Languages , 1996, Inf. Comput..

[46]  Douglas J. Howe Equality in lazy computation systems , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[47]  J. V. Tucker,et al.  Basic Simple Type Theory , 1997 .

[48]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..