Skip to main content

Low-Level Code Verification Based on CSP Models

  • Conference paper
Formal Methods: Foundations and Applications (SBMF 2009)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5902))

Included in the following conference series:

Abstract

This paper contributes to the broad field of software verification by proposing a methodology that uses CSP to verify implementations of real-life multithreaded applications. We therefore use CSP to formalize the compiler intermediate representation of a program. Our methodology divides the low-level representation into three parts: an application-specific part, describing the behavior of threads; a domain-specific part, which encapsulates low-level software concepts such as scheduling; and a platform-specific part, which is the hardware model. These three parts form a low-level CSP model that enables us to prove properties, e.g. the absence of race conditions in the model, by either model checking or theorem proving. The application-specific part is synthesized from the LLVM intermediate representation of a multithreaded program.

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.

Similar content being viewed by others

References

  1. FDR2 User Manual (2005), http://www.fsel.com/documentation/fdr2/

  2. ProB Manual (2005), http://www.stups.uni-duesseldorf.de/ProB/

  3. Barrett, G.: occam 3 Reference Manual. Inmos Ltd. (1992)

    Google Scholar 

  4. Göthel, T., Glesner, S.: Machine Checkable Timed CSP. In: The First NASA Formal Methods Symposium (2009)

    Google Scholar 

  5. Hoare, C.A.R.: Communicating Sequential Processes. Prentice Hall Int., Englewood Cliffs (1985)

    MATH  Google Scholar 

  6. Isobe, Y., Roggenbach, M.: A generic theorem prover of CSP refinement. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 108–123. Springer, Heidelberg (2005)

    Google Scholar 

  7. Lattner, C., Adve, V.: Automatic pool allocation for disjoint data structures. In: ACM SIGPLAN Workshop on Memory System Performance, Germany (2002)

    Google Scholar 

  8. LLVM Reference Manual (2008), http://llvm.org/docs/LangRef.html

  9. Leuschel, M., Massart, T., Currie, A.: How to make FDR Spin: LTL model checking of CSP using refinement. In: Oliveira, J.N., Zave, P. (eds.) FME 2001. LNCS, vol. 2021, p. 99. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  10. Montenegro, S., Briess, K., Kayal, H.: Dependable Software (BOSS) for the BEESAT pico satellite. In: DASIA 2006 - Data Systems In Aerospace, Germany (2006)

    Google Scholar 

  11. Oechslein, B.: Statische WCET Analyse von LLVM Bytecode. Master’s thesis, Universität Erlangen (2008)

    Google Scholar 

  12. Roscoe, A.W.: The Theory and Practice of Concurrency. Prentice Hall PTR, Upper Saddle River (1997)

    Google Scholar 

  13. Scattergood, B.: The semantics and implementation of machine-readable CSP PhD thesis, University of Oxford (1998)

    Google Scholar 

  14. Scuglik, F., Sveda, M.: Automatically generated CSP specifications. Journal of Universal Computer Science 9(11), 1277–1295 (2003)

    Google Scholar 

  15. Shi, H.: Java2CSP: A system for verifying concurrent Java programs. In: Workshop on Tools for System Design and Verification (FM-TOOLS), Ulmer Informatik-Berichte (2000)

    Google Scholar 

  16. Steensgaard, B.: Points-to analysis in almost linear time. In: Int. Symposium on Principles of programming languages (POPL), pp. 32–41. ACM, New York (1996)

    Google Scholar 

  17. Thompson, S., Brat, G.: Verification of C++ Flight Software with the MCP Model Checker. In: Aerospace Conference, pp. 1–9. IEEE, Los Alamitos (2008)

    Google Scholar 

  18. Welch, P.H., Martin, J.M.R.: A CSP model for Java multithreading. In: Software Engineering for Parallel and Distributed Systems, pp. 114–122. IEEE, Los Alamitos (2000)

    Chapter  Google Scholar 

  19. Zaks, A., Joshi, R.: Verifying multi-threaded C programs with Spin. In: Havelund, K., Majumdar, R., Palsberg, J. (eds.) SPIN 2008. LNCS, vol. 5156, pp. 325–342. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kleine, M., Helke, S. (2009). Low-Level Code Verification Based on CSP Models. In: Oliveira, M.V.M., Woodcock, J. (eds) Formal Methods: Foundations and Applications. SBMF 2009. Lecture Notes in Computer Science, vol 5902. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-10452-7_18

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-10452-7_18

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-10451-0

  • Online ISBN: 978-3-642-10452-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics