Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Monadic abstract interpreters
Sergey I., Devriese D., Might M., Midtgaard J., Darais D., Clarke D., Piessens F.  PLDI 2013 (Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, Seattle, WA, Jun 16-19, 2013)399-410.2013.Type:Proceedings
Date Reviewed: Aug 19 2013

Abstract interpretation is an important conceptual framework that unifies many different concepts in static analysis. However, writing a general, modular, abstract interpreter has not been as straightforward. There are two difficulties: a software engineering challenge, and an encoding issue. The software engineering challenge is to find the right abstractions that capture the kind of polymorphism inherent in abstract interpretation. The encoding issue involves finding a way to phrase the operational semantics of languages using a suitable abstract machine that lends itself well to abstract interpretation.

This is exactly what the authors solve in this gem of a paper. Aimed directly at experts, the paper walks readers through the process of taking a lambda calculus and rewriting it (using continuation passing style, an explicit store, and explicit contexts) so that it is better suited for abstract interpretation. Next, using an explicit implementation in Haskell, various aspects (nondeterminism, store, time, and addresses) are systematically abstracted away from the interpreter into a monad.

Then, to prove that this beautiful series of abstractions is more than mere theory, the authors show how to concretely implement a variety of analyses using this framework. While this section might seem a little ad hoc, they then show how it all fits together in an elegant conceptual framework.

This paper is a real tour de force. Not only is it very well written, it presents an extremely elegant solution to an important, thorny problem. The only unfortunate aspect is that the authors chose an initial algebra encoding of their base language, rather than the much more flexible “finally tagless” encoding.

Reviewer:  Jacques Carette Review #: CR141479 (1311-1021)
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Program Analysis (F.3.2 ... )
 
 
Applicative (Functional) Languages (D.3.2 ... )
 
 
Operational Semantics (F.3.2 ... )
 
 
Semantics (D.3.1 ... )
 
 
Processors (D.3.4 )
 
Would you recommend this review?
yes
no
Other reviews under "Program Analysis": Date
Practical extraction techniques for Java
Tip F., Sweeney P., Laffra C., Eisma A., Streeter D. ACM Transactions on Programming Languages and Systems 24(6): 625-666, 2002. Type: Article
Mar 10 2003
Design and implementation of a special-purpose static program analyzer for safety-critical real-time embedded software
Blanchet B., Cousot P., Cousot R., Feret J., Mauborgne L., Miné A., Monniaux D., Rival X. In The essence of computation. New York, NY: Springer-Verlag New York, Inc., 2002. Type: Book Chapter
Oct 3 2003
Types in program analysis
Jensen T. In The essence of computation. New York, NY: Springer-Verlag New York, Inc., 2002. Type: Book Chapter
Sep 23 2003
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy