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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
FDR2 User Manual (2005), http://www.fsel.com/documentation/fdr2/
ProB Manual (2005), http://www.stups.uni-duesseldorf.de/ProB/
Barrett, G.: occam 3 Reference Manual. Inmos Ltd. (1992)
Göthel, T., Glesner, S.: Machine Checkable Timed CSP. In: The First NASA Formal Methods Symposium (2009)
Hoare, C.A.R.: Communicating Sequential Processes. Prentice Hall Int., Englewood Cliffs (1985)
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)
Lattner, C., Adve, V.: Automatic pool allocation for disjoint data structures. In: ACM SIGPLAN Workshop on Memory System Performance, Germany (2002)
LLVM Reference Manual (2008), http://llvm.org/docs/LangRef.html
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)
Montenegro, S., Briess, K., Kayal, H.: Dependable Software (BOSS) for the BEESAT pico satellite. In: DASIA 2006 - Data Systems In Aerospace, Germany (2006)
Oechslein, B.: Statische WCET Analyse von LLVM Bytecode. Master’s thesis, Universität Erlangen (2008)
Roscoe, A.W.: The Theory and Practice of Concurrency. Prentice Hall PTR, Upper Saddle River (1997)
Scattergood, B.: The semantics and implementation of machine-readable CSP PhD thesis, University of Oxford (1998)
Scuglik, F., Sveda, M.: Automatically generated CSP specifications. Journal of Universal Computer Science 9(11), 1277–1295 (2003)
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)
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)
Thompson, S., Brat, G.: Verification of C++ Flight Software with the MCP Model Checker. In: Aerospace Conference, pp. 1–9. IEEE, Los Alamitos (2008)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)