skip to main content
research-article

Optimizing abstract abstract machines

Published:25 September 2013Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. Olivier Danvy. An Analytical Approach to Program as Data Objects. DSc thesis, Department of Computer Science, Aarhus University, 2006.Google ScholarGoogle Scholar
  7. Olivier Danvy and Lasse R. Nielsen. Refocusing in reduction semantics. Research Report BRICS RS-04-26, Department of Computer Science, Aarhus University, 2004.Google ScholarGoogle Scholar
  8. 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 ScholarGoogle Scholar
  9. 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 ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. Marc Feeley and Guy Lapalme. Using closures for code generation. Comput. Lang., 12(1):47--66, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Matthias Felleisen, Robert B. Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarCross RefCross Ref
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. J. Landin. The next 700 programming languages. Commun. ACM, 9(3):157--166, 1966. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Peter J. Landin. The mechanical evaluation of expressions. The Computer Journal, 6(4):308--320, 1964.Google ScholarGoogle ScholarCross RefCross Ref
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. Jan Midtgaard. Control-flow analysis of functional programs. ACM Computing Surveys, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. Matthew Might and David Van Horn. Scalable and precise abstractions of programs for trustworthy software. Technical report, 2012.Google ScholarGoogle Scholar
  24. Greg Morrisett. Harvard university course cs252r: Advanced functional language compilation. http://www.eecs.harvard.edu/ greg/cs252rfa12/.Google ScholarGoogle Scholar
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. G. D. Plotkin. A structural approach to operational semantics. Technical Report DAIMI FN-19, 1981.Google ScholarGoogle Scholar
  27. John C. Reynolds. Definitional interpreters for Higher-Order programming languages. Higher-Order and Symbolic Computation, 11(4):363--397, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Paul A. Steckler and Mitchell Wand. Lightweight closure conversion. ACM Trans. Program. Lang. Syst., 19(1):48--86, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. David Van Horn and Matthew Might. An analytic framework for JavaScript. CoRR, abs/1109.4467, 2011.Google ScholarGoogle Scholar
  32. David Van Horn and Matthew Might. Systematic abstraction of abstract machines. Journal of Functional Programming, 22(Special Issue 4-5):705--746, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Dimitrios Vardoulakis and Olin Shivers. CFA2: a Context-Free approach to Control-Flow analysis. Logical Methods in Computer Science, 7(2), 2011.Google ScholarGoogle Scholar
  34. Andrew K. Wright and Suresh Jagannathan. Polymorphic splitting: an effective polyvariant flow analysis. ACM Trans. Program. Lang. Syst., 20(1):166--207, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Feng Zhao. An O(N) algorithm for Three-Dimensional N-Body simulations. Master's thesis, MIT, 1987.Google ScholarGoogle Scholar

Index Terms

  1. Optimizing abstract abstract machines

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 48, Issue 9
        ICFP '13
        September 2013
        457 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2544174
        Issue’s Table of Contents
        • cover image ACM Conferences
          ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
          September 2013
          484 pages
          ISBN:9781450323260
          DOI:10.1145/2500365

        Copyright © 2013 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 25 September 2013

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!