Abstract
The technique of abstracting abstract machines (AAM) provides a systematic approach for deriving computable approximations of evaluators that are easily proved sound. This article contributes a complementary step-by-step process for subsequently going from a naive analyzer derived under the AAM approach, to an efficient and correct implementation. The end result of the process is a two to three order-of-magnitude improvement over the systematically derived analyzer, making it competitive with hand-optimized implementations that compute fundamentally less precise results.
- Dominique Boucher and Marc Feeley. Abstract compilation: A new implementation paradigm for static analysis. In Tibor Gyimóthy, editor, Compiler Construction: 6th International Conference, CC'96 Linköping, Sweden, April 24-26, 1996 Proceedings, pages 192--207, 1996. Google Scholar
Digital Library
- Martin Bravenboer and Yannis Smaragdakis. Strictly declarative specification of sophisticated points-to analyses. In OOPSLA '09: Proceedings of the 24th annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, 2009. Google Scholar
Digital Library
- M. C. Browne, E. M. Clarke, and O. Grümberg. Characterizing finite kripke structures in propositional temporal logic. Theor. Comput. Sci., 59(1--2):115--131, 1988. Google Scholar
Digital Library
- Patrick Cousot and Radhia Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL '77: Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pages 238--252. ACM, 1977. Google Scholar
Digital Library
- Patrick Cousot and Radhia Cousot. Systematic design of program analysis frameworks. In Proceedings of the 6th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, POPL '79, pages 269--282. ACM, 1979. Google Scholar
Digital Library
- Olivier Danvy. An Analytical Approach to Program as Data Objects. DSc thesis, Department of Computer Science, Aarhus University, 2006.Google Scholar
- Olivier Danvy and Lasse R. Nielsen. Refocusing in reduction semantics. Research Report BRICS RS-04-26, Department of Computer Science, Aarhus University, 2004.Google Scholar
- E. D'Osualdo, J. Kochems, and C.-H. L. Ong. Automatic verification of Erlang-style concurrency. Technical report, University of Oxford DCS Technical Report, 2012. http://mjolnir.cs.ox.ac.uk/soter/papers/erlang-verif.pdf.Google Scholar
- E. D'Osualdo, J. Kochems, and C.-H. L. Ong. Soter: An automatic safety verifier for Erlang. Technical report, University of Oxford DCS Technical Report, 2012. http://mjolnir.cs.ox.ac.uk/soter/papers/soter-demo.pdf.Google Scholar
- Christopher Earl, Ilya Sergey, Matthew Might, and David Van Horn. Introspective pushdown analysis of higher-order programs. In Proceedings of the 17th ACM SIGPLAN International Conference on Functional Programming, ICFP '12, pages 177--188. ACM, 2012. Google Scholar
Digital Library
- Marc Feeley and Guy Lapalme. Using closures for code generation. Comput. Lang., 12(1):47--66, 1987. Google Scholar
Digital Library
- Matthias Felleisen, Robert B. Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, 2009. Google Scholar
Digital Library
- Pieter H. Hartel, Marc Feeley, Martin Alt, Lennart Augustsson, Peter Baumann, Marcel Beemster, Emmanuel Chailloux, Christine H. Flood, Wolfgang Grieskamp, John H. G. Van Groningen, Kevin Hammond, Bogumil Hausman, Melody Y. Ivory, Richard E. Jones, Jasper Kamperman, Peter Lee, Xavier Leroy, Rafael D. Lins, Sandra Loosemore, Niklas Röjemo, Manuel Serrano, Jean P. Talpin, Jon Thackray, Stephen Thomas, Pum Walters, Pierre Weis, and Peter Wentworth. Benchmarking implementations of functional languages with "pseudoknot", a float-intensive benchmark. Journal of Functional Programming, 6(04):621--655, 1996.Google Scholar
Cross Ref
- Suresh Jagannathan, Peter Thiemann, Stephen Weeks, and Andrew Wright. Single and loving it: must-alias analysis for higher-order languages. In POPL '98: Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 329--341. ACM, 1998. Google Scholar
Digital Library
- Suresh Jagannathan and Stephen Weeks. A unified treatment of flow analysis in higher-order languages. In POPL '95: Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 393--407. ACM Press, 1995. Google Scholar
Digital Library
- P. J. Landin. The next 700 programming languages. Commun. ACM, 9(3):157--166, 1966. Google Scholar
Digital Library
- Peter J. Landin. The mechanical evaluation of expressions. The Computer Journal, 6(4):308--320, 1964.Google Scholar
Cross Ref
- Philippe Meunier, Robert B. Findler, and Matthias Felleisen. Modular set-based analysis from contracts. In POPL '06: Conference record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 218--231. ACM, 2006. Google Scholar
Digital Library
- Jan Midtgaard. Control-flow analysis of functional programs. ACM Computing Surveys, 2011. Google Scholar
Digital Library
- Matthew Might and David Van Horn. A family of abstract interpretations for static analysis of concurrent Higher-Order programs. In Eran Yahav, editor, Static Analysis, volume 6887 of Lecture Notes in Computer Science, pages 180--197. Springer Berlin Heidelberg, 2011. Google Scholar
Digital Library
- Matthew Might and Panagiotis Manolios. A posteriori soundness for non-deterministic abstract interpretations. In Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI '09, pages 260--274. Springer-Verlag, 2009. Google Scholar
Digital Library
- Matthew Might and Olin Shivers. Improving flow analyses via(Γ)CFA: Abstract garbage collection and counting. In Proceedings of the 11th ACM International Conference on Functional Programming (ICFP 2006), pages 13--25, 2006. Google Scholar
Digital Library
- Matthew Might and David Van Horn. Scalable and precise abstractions of programs for trustworthy software. Technical report, 2012.Google Scholar
- Greg Morrisett. Harvard university course cs252r: Advanced functional language compilation. http://www.eecs.harvard.edu/ greg/cs252rfa12/.Google Scholar
- Flemming Nielson and Hanne R. Nielson. Infinitary control flow analysis: a collecting semantics for closure analysis. In POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 332--345. ACM Press, 1997. Google Scholar
Digital Library
- G. D. Plotkin. A structural approach to operational semantics. Technical Report DAIMI FN-19, 1981.Google Scholar
- John C. Reynolds. Definitional interpreters for Higher-Order programming languages. Higher-Order and Symbolic Computation, 11(4):363--397, 1998. Google Scholar
Digital Library
- Paul A. Steckler and Mitchell Wand. Lightweight closure conversion. ACM Trans. Program. Lang. Syst., 19(1):48--86, 1997. Google Scholar
Digital Library
- Sam Tobin-Hochstadt and David Van Horn. Higher-order symbolic execution via contracts. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '12, pages 537--554. ACM, 2012. Google Scholar
Digital Library
- David Van Horn and Matthew Might. Abstracting abstract machines: a systematic approach to higher-order program analysis. Communications of the ACM, 54:101--109, 2011. Google Scholar
Digital Library
- David Van Horn and Matthew Might. An analytic framework for JavaScript. CoRR, abs/1109.4467, 2011.Google Scholar
- David Van Horn and Matthew Might. Systematic abstraction of abstract machines. Journal of Functional Programming, 22(Special Issue 4-5):705--746, 2012. Google Scholar
Digital Library
- Dimitrios Vardoulakis and Olin Shivers. CFA2: a Context-Free approach to Control-Flow analysis. Logical Methods in Computer Science, 7(2), 2011.Google Scholar
- Andrew K. Wright and Suresh Jagannathan. Polymorphic splitting: an effective polyvariant flow analysis. ACM Trans. Program. Lang. Syst., 20(1):166--207, 1998. Google Scholar
Digital Library
- Feng Zhao. An O(N) algorithm for Three-Dimensional N-Body simulations. Master's thesis, MIT, 1987.Google Scholar
Index Terms
Optimizing abstract abstract machines
Recommendations
Abstracting abstract machines
ICFP '10: Proceedings of the 15th ACM SIGPLAN international conference on Functional programmingWe describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines. To demonstrate the technique and support our claim, we transform the CEK machine ...
Abstracting abstract machines
ICFP '10We describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines. To demonstrate the technique and support our claim, we transform the CEK machine ...
Optimizing abstract abstract machines
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingThe technique of abstracting abstract machines (AAM) provides a systematic approach for deriving computable approximations of evaluators that are easily proved sound. This article contributes a complementary step-by-step process for subsequently going ...







Comments