Skip to main content
Log in

Frameworks for abstract interpretation

  • Published:
Acta Informatica Aims and scope Submit manuscript

Abstract

Abstract interpretation theory provides a semantic foundation for dataflow analysis of programs by formalizing the relationship between analysis and semantics. In the original theory for abstract interpretation, due to Cousot and Cousot, this relationship was given in terms of an adjoined pair of functions. One function, called the abstraction function, mapped data to their best description, while the second function, called the concretization function, mapped descriptions to the largest data object they described. Since this time, however, a number of other “frameworks” for abstract interpretation have been developed, differing in how the descriptions are related to the actual data used in computation. For instance, one framework uses only abstraction functions, another uses only concretization functions, while yet another allows an arbitrary approximation relation. We illustrate that each of these frameworks has certain advantages and limitations. This motivates our development and study of a general framework which encompasses these other approaches. We examine this framework with regard to three questions: when does approximation lift from base functions to all expressions; when is approximation transitive; and when is there an optimal approximation and how can it be inferred? Answers to these questions are not only interesting in the context of our framework but also provide a better understanding of the other frameworks.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Birkhoff, G.: Lattice theory, 3rd edn. (AMS Coll. Publ. XXV). Baltimore: American Mathematical Society

  2. Bobrow, D.G. (ed.): Qualitative reasoning about physical systems. Cambridge, MA: MIT, Press 1985

    Google Scholar 

  3. Bruynooghe, M., Janssens, G., Callebaut, A., Demoen, B.: Abstract interpretation: towards the global optimization of Prolog programs. Proceedings 1987 International Symposium Logic Programming, San Francisco, California, pp. 192–204 (1987)

  4. Burn, G., Hankin, C., Abramsky, S.: Strictness analysis for higher order functions. Sci. Comput. Program.7, 249–278 (1986).

    Google Scholar 

  5. Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of Fixpoints. Proceedings Fourth Annual. ACM Symposium Principles of Programming Languages, Los Angeles, California, pp. 238–252 (1977).

  6. Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. Proceedings Sixth Annual ACM Symposium. Principles of Programming Languages, San Antonio, Texas. pp. 269–282 (1979)

  7. Cremonini, R., Marriott, K., Søndergaard, H.: A general theory for abstraction. Proceedings 1990 Australian Joint Conference Artificial Intelligence, pp. 121–134. Singapore: World Scientific Publishing 1990

    Google Scholar 

  8. Emden, M. van, Kowalski, R.: The semantics of logic as a programming language. J. ACM23, 733–742 (1976)

    Google Scholar 

  9. Jones, N.D.: Flow analysis of lambda expressions In: Even, S., Kariv, O. (eds.) Proceedings eighth International Colloquium Automata, Languages and Programming (Lect. Notes Comput. Sci., vol. 115, pp. 114–128) Berlin Heidelberg New York: Springer 1981

    Google Scholar 

  10. Jones, N.D.: Flow analysis of lazy higher-order functional programs. In: Abramsky, S., Hankin, C. (eds.) Abstract interpretation of declarative languages, pp. 103–122. Chichester: Ellis Horwood 1987

    Google Scholar 

  11. Marriott, K., Søndergaard, H.: Bottom-up dataflow analysis of normal logic programs. J. Logic Program.13, 181–204 (1992)

    Google Scholar 

  12. Marriott, K., Søndergaard, H.: Semantics-based dataflow analysis of logic programs. In: Ritter, G. (ed.) Information processing 89, pp. 601–606. Amsterdam: North-Holland 1989

    Google Scholar 

  13. Mycroft, A., Jones, N.: A relational framework for abstract interpretation. InPrograms as data objects (Lect. Notes Comput. Sci., vol. 154, pp. 536–547) Berlin Heidelberg New York: Springer 1986

    Google Scholar 

  14. Nielson, F.: A denotational framework for data flow analysis. Acta Inf.18, 265–287 (1982)

    Google Scholar 

  15. Nielson, F.: Strictness analysis and denotational abstract interpretation. Inf. Comput.76, 29–92 (1988)

    Google Scholar 

  16. Plaisted, D.: Theorem proving with abstraction. Artif. Intell.16, 47–108 (1981)

    Google Scholar 

  17. Sato, T., Tamaki, H.: Enumeration of success patterns in logic programs. Theor. Comput. Sci.34, 227–240 (1984)

    Google Scholar 

  18. Schmidt, D.: Denotational Semantics: A Methodology for Language Development. Needham Heights: Allyn and Bacon 1986

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Marriott, K. Frameworks for abstract interpretation. Acta Informatica 30, 103–129 (1993). https://doi.org/10.1007/BF01178576

Download citation

  • Received:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01178576

Keywords

Navigation