Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4349))

Abstract

We present and discuss techniques for performing and improving the model-checking of higher-order, functional programs based upon abstract interpretation [4]. We use continuation-passing-style conversion to produce an abstractable state machine, and then utilize abstract garbage collection and abstract counting [9] to indirectly prune false branches in the abstract state-to-state transition graph. In the process, we generalize abstract garbage collection to conditional garbage collection; that is, we collect values which an ordinary reaching-based collector would have deemed live when it is provable that such values will never be referenced. In addition, we enhance abstract counting, and then exploit it to more precisely evaluate conditions in the abstract.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Appel, A.W.: Compiling with Continuations. Cambridge University Press, Cambridge (1992)

    Google Scholar 

  2. Ball, T., Rajamani, S.K.: The SLAM project: Debugging system software via static analysis. In: Proceedings of the 29th Annual ACM SIGPLAN Conference on the Principles of Programming Languages, Portland, Oregon, pp. 1–3 (January 2002)

    Google Scholar 

  3. Cook, B., Podelski, A., Rybalchenko, A.: Termination proofs for systems code. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2006, Ottawa, Canada (June 2006)

    Google Scholar 

  4. Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: ACM SIGPLAN Symposium on Principles of Programming Languages, Los Angeles, California, vol. 4, pp. 238–252 (January 1977)

    Google Scholar 

  5. Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: ACM SIGPLAN Symposium on Principles of Programming Languages, San Antonio, Texas, vol. 6, pp. 269–282 (January 1979)

    Google Scholar 

  6. Danvy, O.: A first-order one-pass CPS transformation. Theoretical Computer Science 308 1(3), 239–257 (2003)

    Article  MathSciNet  Google Scholar 

  7. Leuschel, M., Bendisposto, J.: Animating and model checking b specifications with higher-order recursive functions. In: Abrial, J.-R., Glässer, U. (eds.) Rigorous Methods for Software Construction and Analysis, no. 06191 in Dagstuhl Seminar Proceedings (2006)

    Google Scholar 

  8. Might, M.: Logic-flow analysis of higher-order programs. In: Proceedings of the 34th Annual ACM SIGPLAN Conference on the Principles of Programming Languages, Nice, France (January 2007)

    Google Scholar 

  9. Might, M., Shivers, O.: Improving Flow Analysis via ΓCFA: Abstract Garbage Collection and Counting. In: Proceedings of the 11th ACM SIGPLAN International Conference on Functional Programming, ICFP 2006, Portland, Oregon (September 2006)

    Google Scholar 

  10. Sabry, A., Felleisen, M.: Reasoning about programs in continuation-passing style. Lisp and Symbolic Computation 6(3–4), 289–360 (1993)

    Article  Google Scholar 

  11. Shivers, O.: Control-flow analysis in Scheme. In: Proceedings of the SIGPLAN ’88 Conference on Programming Language Design and Implementation, PLDI, Atlanta, Georgia, pp. 164–174 (June 1988)

    Google Scholar 

  12. Steele, J.G.L.: RABBIT: a compiler for SCHEME. Master’s thesis, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, Massachusetts, Technical report AI-TR-474 (May 1978)

    Google Scholar 

  13. Wright, A.K., Jagannathan, S.: Polymorphic splitting: An effective polyvariant flow analysis. ACM Transactions on Programming Languages and Systems 20(1), 166–207 (1998)

    Article  Google Scholar 

Download references

Authors

Editor information

Byron Cook Andreas Podelski

Rights and permissions

Reprints and permissions

Copyright information

© 2007 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Might, M., Chambers, B., Shivers, O. (2007). Model Checking Via ΓCFA. In: Cook, B., Podelski, A. (eds) Verification, Model Checking, and Abstract Interpretation. VMCAI 2007. Lecture Notes in Computer Science, vol 4349. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69738-1_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-69738-1_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-69735-0

  • Online ISBN: 978-3-540-69738-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics