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.
Similar content being viewed by others
References
Birkhoff, G.: Lattice theory, 3rd edn. (AMS Coll. Publ. XXV). Baltimore: American Mathematical Society
Bobrow, D.G. (ed.): Qualitative reasoning about physical systems. Cambridge, MA: MIT, Press 1985
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)
Burn, G., Hankin, C., Abramsky, S.: Strictness analysis for higher order functions. Sci. Comput. Program.7, 249–278 (1986).
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).
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)
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
Emden, M. van, Kowalski, R.: The semantics of logic as a programming language. J. ACM23, 733–742 (1976)
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
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
Marriott, K., Søndergaard, H.: Bottom-up dataflow analysis of normal logic programs. J. Logic Program.13, 181–204 (1992)
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
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
Nielson, F.: A denotational framework for data flow analysis. Acta Inf.18, 265–287 (1982)
Nielson, F.: Strictness analysis and denotational abstract interpretation. Inf. Comput.76, 29–92 (1988)
Plaisted, D.: Theorem proving with abstraction. Artif. Intell.16, 47–108 (1981)
Sato, T., Tamaki, H.: Enumeration of success patterns in logic programs. Theor. Comput. Sci.34, 227–240 (1984)
Schmidt, D.: Denotational Semantics: A Methodology for Language Development. Needham Heights: Allyn and Bacon 1986
Author information
Authors and Affiliations
Rights 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
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF01178576