Higher-order abstract interpretation (and application to comportment analysis generalizing strictness, termination, projection and PER analysis of functional languages)

The original formulation of abstract interpretation represents program properties by sets. A property is understood as the set of semantic values satisfying it. Strongest program properties are defined by the collecting semantics which extends the standard semantics to powersets of semantic values. The approximation relation corresponding to the logical implication of program properties is subset inclusion. This was expressed using set and lattice theory in the context of transition systems. Some applications of abstract interpretation, such as strictness analysis for lazy functional languages, require infinite behaviours of higher-order functions to be taken into account. We solve the problem by returning to the sources of abstract interpretation, which consists in considering collecting semantics. By using Galois connections, properties of the standard semantics naturally transfer to the collecting and then to the abstract semantics. This set-theoretic abstract interpretation framework is formulated in a way which is independent of both the programming language and the method used to specify its semantics. It is illustrated for a higher-order monomorphically typed lazy functional language starting from its standard denotational semantics.<<ETX>>

[1]  Prateek Mishra,et al.  A precise relationship between the deductive power of forward and backward strictness analysis , 1992, LFP '92.

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

[3]  Patrick Cousot,et al.  Galois Connection Based Abstract Interpretations for Strictness Analysis (Invited Paper) , 1993, Formal Methods in Programming and Their Applications.

[4]  Thomas P. Jensen,et al.  Strictness Analysis in Logical Form , 1991, FPCA.

[5]  Robert Muller,et al.  Abstract interpretation in weak powerdomains , 1992, LFP '92.

[6]  Alain Deutsch,et al.  An Operational Model of Strictness Properties and Its Abstractions (Extended Abstract) , 1991, Functional Programming.

[7]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

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

[9]  Kei Davis Higher-order binding-time analysis , 1993, PEPM '93.

[10]  Samson Abramsky,et al.  Abstract Interpretation, Logical Relations and Kan Extensions , 1990, J. Log. Comput..

[11]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[12]  Samson Abramsky,et al.  A relational approach to strictness analysis for higher-order polymorphic functions , 1991, POPL '91.

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

[14]  Carl A. Gunter,et al.  Semantic Domains , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[15]  Cordelia V. Hall,et al.  Compiling strictness into streams , 1987, POPL '87.

[16]  Tsung-Min Kuo,et al.  On strictness and its analysis , 1987, POPL '87.

[17]  Gebreselassie Baraki,et al.  A Note on Abstract Interpretation of Polymorphic Functions , 1991, FPCA.

[18]  Neil D. Jones,et al.  A relational framework for abstract interpretation , 1985, Programs as Data Objects.

[19]  C. J. Everett Closure operators and Galois theory in lattices , 1944 .

[20]  M. Mccarty,et al.  Multiple mouse-protective antibodies directed against group B streptococci. Special reference to antibodies effective against protein antigens , 1975, The Journal of experimental medicine.

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

[22]  John Hughes Projections for Polymorphic Strictness Analysis , 1989, Category Theory and Computer Science.

[23]  Philip Wadler,et al.  Strictness analysis aids time analysis , 1988, POPL '88.

[24]  John Hughes,et al.  Relational Reversal of Abstract Interpretation , 1992, J. Log. Comput..

[25]  Patrick Cousot,et al.  Abstract Interpretation and Application to Logic Programs , 1992, J. Log. Program..

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

[27]  Geoffrey L. Burn A relationship between abstract interpretation and projection analysis , 1989, POPL '90.

[28]  Flemming Nielson,et al.  Strong Abstract Interpretation Using Power Domains (Extended Abstract) , 1983, ICALP.

[29]  G. Birkhoff,et al.  On the Structure of Abstract Algebras , 1935 .

[30]  Patrick Cousot,et al.  Invariance proof methods and analysis techniques for parallel programs , 1984 .

[31]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[32]  Alan Mycroft,et al.  Uniform Ideals and Strictness Analysis , 1991, ICALP.

[33]  R. Croisot,et al.  Propriétés générales de la résiduation en liaison avec les correspondances de Galois , 1954 .

[34]  Chris Hankin,et al.  Strictness Analysis for Higher-Order Functions , 1986, Sci. Comput. Program..

[35]  John Hughes,et al.  Projections for polymorphic first-order strictness analysis , 1992, Mathematical Structures in Computer Science.

[36]  Patrick Cousot,et al.  Semantic Analysis of Communicating Sequential Processes (Shortened Version) , 1980, ICALP.

[37]  John Launchbury,et al.  Projection factorisations in partial evaluation , 1991 .

[38]  Alberto Ferrari,et al.  Type Inference, Abstract Interpretation and Strictness Analysis , 1993, Theor. Comput. Sci..

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

[40]  Chris Hankin,et al.  Abstract Interpretation of Declarative Languages , 1987 .

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

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

[43]  John Hughes,et al.  Strictness detection in non-flat domains , 1985, Programs as Data Objects.

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

[45]  Peter Dybjer,et al.  Inverse Image Analysis Generalises Strictness Analysis , 1991, Inf. Comput..

[46]  Paul Hudak,et al.  Higher-order strictness analysis in untyped lambda calculus , 1986, POPL '86.

[47]  Philip Wadler,et al.  Strictness Analysis in 4D , 1990, Functional Programming.

[48]  John Hughes,et al.  Reversing Abstract Interpretations , 1994, Sci. Comput. Program..

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

[50]  Patrick Cousot,et al.  Semantic foundations of program analysis , 1981 .

[51]  Patrick Cousot,et al.  Static Determination of Dynamic Properties of Recursive Procedures , 1977, Formal Description of Programming Concepts.

[52]  Neil D. Jones,et al.  Complexity of flow analysis, inductive assertion synthesis and a language due to Dijkstra , 1980, 21st Annual Symposium on Foundations of Computer Science (sfcs 1980).

[53]  Flemming Nielson Strictness Analysis and Denotational Abstract Interpretation , 1988, Inf. Comput..