[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
book-review
Open access

Principles of Abstract Interpretation: By Patrick Cousot MIT Press, 2021, ISBN 9780262044905, pp. 1–819. Reviewed by Reinhard Wilhelm

Published: 19 September 2022 Publication History
Some years ago, the author of the reviewed book and the author of the review shared a ride in the shuttle from Grenoble to Lyon Airport. The author-to-be told the reviewer-to-be about the state of his book project. The existing draft had 1,000 pages. The reviewer explained to the author that in his deep insight into the nature of things and his long-term experience with textbooks there were books that improve the world and there were books that are being read. The author asked for confirmation whether the reviewer felt that the coming book would belong to those books that improve the world. Let me skip how I got myself out of this difficult situation. When asked whether a book will be read, the question is by whom. Citing the author, this book is intended for readers interested in the theory of abstract interpretation, the understanding of formal methods, and the design of verifiers and static analyzers. And my answer is, it is a must read for these groups of people.
To make one thing clear from the beginning: This reviewer need not be convinced of the value of Abstract Interpretation as his greatest scientific achievements [5, 6, 8, 10] are based on the foundational work on Abstract Interpretation by Patrick and Radhia Cousot.
Static analyses are distinct from …model checking, which verifies the correctness of a separate external specification of a program [9]. In model checking, a user supplies the program to be verified and the logical expression or the automaton against which the program is to be checked at the same time. In static analysis there are distinct times, a time when an abstract interpreter is designed with certain facts in mind to be extracted from a class of programs, and there is a time when the abstract interpreter is applied by programmers or verification engineers to extract these type of facts from particular programs. This enables a fruitful division of work. The first phase, the design of non-trivial abstract interpreters needs highly competent specialists, while the second phase is easier, although sometimes also non-trivial. The designer needs to identify abstract domains to represent these facts and transfer functions for the expressions or statements of the considered programming language that describe the transformation of facts by evaluating the expression or executing the statement. The book provides many ways to construct abstract domains for different static analyses, numerical as well as symbolic abstract domains. So, it is mainly written for the designers of abstract interpreters and researchers in formal methods to whom it provides an excellent mathematical foundation. Nowhere else are the foundations of sound static program analyses presented in such depth, breadth, and beauty, in particular the relation to programming-language semantics, which provides for many static analyses to be correct by construction.
This relation actually has been the inspiration of the work developing Abstract Interpretation by Patrick and Radhia Cousot. Compiler writers were using what they called Data Flow Analysis to compute applicability conditions for optimizing program transformations. However, these Data Flow Analyses lacked the relation to the semantics of the programming language, which would have been necessary to prove their correctness and thus correctness preservation of the program transformations. In Patrick’s dissertation and a sequence of POPL papers [1, 2, 3, 4] the Cousots and their students clarified this relation. This important relation to the programming language is introduced gently in Chapter 3 of the book using simple examples like statically computing the signs of expressions. Much of the correctness proofs in the book are based on Trace Semantics, which are introduced and thoroughly treated in Part III. Trace semantics are essential for understanding many static analyses [7]. Part IV, entitled Properties and their Abstraction, lays the foundation for the central notion of Abstraction. Abstraction, concretization, and their interaction in the computation of fixedpoints are the important ingredients of Abstract Interpretation. Fixedpoints and their abstractions are treated in Part V. The semantics of a programming language is abstracted into an abstract domain and an abstract interpreter in Part VII. This is a generic static analysis parameterized with an abstract domain. Particular abstract domains, numeric, relational, and symbolic abstract domains are developed in Parts IX, XI, and XII. Some sound static-analysis tools are described in Part XIV. An extensive bibliography concludes the book.
This book is Patrick Cousot’s opus maximum, a treasure for the researcher on formal methods.

References

[1]
Patrick Cousot. 1978. Méthodes Itératives de Construction et D’approximation de Points Fixes D’opérateurs Monotones Sur un Treillis, Analyse Sémantique Des Programmes. Retrieved March 21, 1978 from https://tel.archives-ouvertes.fr/tel-00288657.
[2]
Patrick Cousot and Radhia Cousot. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of the Conference Record of the 4th ACM Symposium on Principles of Programming Languages,Robert M. Graham, Michael A. Harrison, and Ravi Sethi (Eds.). ACM, 238–252. DOI:
[3]
Patrick Cousot and Radhia Cousot. 1979. Systematic design of program analysis frameworks. In Proceedings of the Conference Record of the 6th Annual ACM Symposium on Principles of Programming Languages,Alfred V. Aho, Stephen N. Zilles, and Barry K. Rosen (Eds.). ACM Press, 269–282. DOI:
[4]
Patrick Cousot and Nicolas Halbwachs. 1978. Automatic discovery of linear restraints among variables of a program. In Proceedings of the Conference Record of the 5th Annual ACM Symposium on Principles of Programming Languages, Alfred V. Aho, Stephen N. Zilles, and Thomas G. Szymanski (Eds.). ACM Press, 84–96. DOI:
[5]
Christian Ferdinand, Florian Martin, Reinhard Wilhelm, and Martin Helmut Alt. 1999. Cache behavior prediction by abstract interpretation. Science of Computer Programming 35, 2 (1999), 163–189. DOI:
[6]
Ulrich Möncke and Reinhard Wilhelm. 1991. Grammar flow analysis. In Proceedings of the Attribute Grammars, Applications and Systems, International Summer School SAGA, Henk Alblas and Borivoj Melichar (Eds.), Lecture Notes in Computer Science, Vol. 545. Springer, 151–186. DOI:
[7]
Jan Reineke. 2018. The semantic foundations and a landscape of cache-persistence analyses. Leibniz Transactions on Embedded Systems 5, 1 (2018), 03:1–03:52. DOI:
[8]
Mooly Sagiv, Thomas W. Reps, and Reinhard Wilhelm. 2002. Parametric shape analysis via 3-valued logic. ACM Transactions on Programming Languages and Systems 24, 3 (2002), 217–298. DOI:
[9]
Patrick Thomson. 2021. Static analysis. Communication of the ACM 65, 1 (Dec 2021), 50(Ð)54. DOI:
[10]
Reinhard Wilhelm and Björn Wachter. 2008. Abstract interpretation with applications to timing validation. In Proceedings of the 20th International Conference on Computer Aided Verification, Aarti Gupta and Sharad Malik (Eds.), Lecture Notes in Computer Science, Vol. 5123. Springer, 22–36. DOI:

Information & Contributors

Information

Published In

cover image Formal Aspects of Computing
Formal Aspects of Computing  Volume 34, Issue 2
June 2022
113 pages
ISSN:0934-5043
EISSN:1433-299X
DOI:10.1145/3557792
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 September 2022
Accepted: 20 June 2022
Received: 07 May 2022
Published in FAC Volume 34, Issue 2

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Book-review
  • Refereed

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 2,010
    Total Downloads
  • Downloads (Last 12 months)997
  • Downloads (Last 6 weeks)129
Reflects downloads up to 13 Dec 2024

Other Metrics

Citations

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media