FDR3 — A Modern Refinement Checker for CSP

  • Thomas Gibson-Robinson
  • Philip Armstrong
  • Alexandre Boulgakov
  • Andrew W. Roscoe
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8413)

Abstract

FDR3 is a complete rewrite of the CSP refinement checker FDR2, incorporating a significant number of enhancements. In this paper we describe the operation of FDR3 at a high level and then give a detailed description of several of its more important innovations. This includes the new multi-core refinement-checking algorithm that is able to achieve a near linear speed up as the number of cores increase. Further, we describe the new algorithm that FDR3 uses to construct its internal representation of CSP processes—this algorithm is more efficient than FDR2’s, and is able to compile a large class of CSP processes to more efficient internal representations. We also present experimental results that compare FDR3 to related tools, which show it is unique (as far as we know) in being able to scale beyond the bounds of main memory.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Hoare, C.A.R.: Communicating Sequential Processes. Prentice-Hall, Inc., Upper Saddle River (1985)MATHGoogle Scholar
  2. 2.
    Roscoe, A.W.: The Theory and Practice of Concurrency. Prentice Hall (1997)Google Scholar
  3. 3.
    Roscoe, A.W.: Understanding Concurrent Systems. Springer (2010)Google Scholar
  4. 4.
    Lawrence, J.: Practical Application of CSP and FDR to Software Design. In: Abdallah, A.E., Jones, C.B., Sanders, J.W. (eds.) CSP25. LNCS, vol. 3525, pp. 151–174. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  5. 5.
    Mota, A., Sampaio, A.: Model-checking CSP-Z: strategy, tool support and industrial application. Science of Computer Programming 40(1) (2001)Google Scholar
  6. 6.
    Fischer, C., Wehrheim, H.: Model-Checking CSP-OZ Specifications with FDR. In: IFM 1999. Springer (1999)Google Scholar
  7. 7.
    Lowe, G.: Casper: A Compiler for the Analysis of Security Protocols. Journal of Computer Security 6(1-2) (1998)Google Scholar
  8. 8.
    Roscoe, A.W., Hopkins, D.: SVA, a Tool for Analysing Shared-Variable Programs. In: Proceedings of AVoCS 2007 (2007)Google Scholar
  9. 9.
    Holzmann, G.: Spin Model Checker: The Primer and Reference Manual. Addison-Wesley Professional (2003)Google Scholar
  10. 10.
    Barnat, J., Brim, L., Havel, V., Havlíček, J., Kriho, J., Lenčo, M., Ročkai, P., Štill, V., Weiser, J.: DiVinE 3.0 – An Explicit-State Model Checker for Multithreaded C & C++ Programs. In: Sharygina, N., Veith, H. (eds.) CAV 2013. LNCS, vol. 8044, pp. 863–868. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  11. 11.
    Laarman, A., van de Pol, J., Weber, M.: Multi-Core LTSmin: Marrying Modularity and Scalability. In: Bobaru, M., Havelund, K., Holzmann, G.J., Joshi, R. (eds.) NFM 2011. LNCS, vol. 6617, pp. 506–511. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  12. 12.
    University of Oxford, Failures-Divergence Refinement—FDR 3 User Manual (2013), https://www.cs.ox.ac.uk/projects/fdr/manual/
  13. 13.
    University of Oxford, libcspm (2013), https://github.com/tomgr/libcspm
  14. 14.
    Reed, G.M., Roscoe, A.W.: A Timed Model for Communicating Sequential Processes. Theoretical Computer Science 58 (1988)Google Scholar
  15. 15.
    Armstrong, P., Lowe, G., Ouaknine, J., Roscoe, A.W.: Model checking Timed CSP. In: Proceedings of HOWARD (Festschrift for Howard Barringer) (2012)Google Scholar
  16. 16.
    Ouaknine, J.: Discrete Analysis of Continuous Behaviour in Real-Time Concurrent Systems. DPhil Thesis (2001)Google Scholar
  17. 17.
    Barringer, H., Kuiper, R., Pnueli, A.: A really abstract concurrent model and its temporal logic. In: Proceedings of the 13th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages. ACM (1986)Google Scholar
  18. 18.
    Roscoe, A.W., Hopcroft, P.J.: Slow abstraction via priority. In: Liu, Z., Woodcock, J., Zhu, H. (eds.) Theories of Programming and Formal Methods. LNCS, vol. 8051, pp. 326–345. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  19. 19.
    Roscoe, A.W.: Model-Checking CSP. In: A Classical Mind: Essays in Honour of CAR Hoare (1994)Google Scholar
  20. 20.
    Goldsmith, M., Martin, J.: The parallelisation of FDR. In: Proceedings of the Workshop on Parallel and Distributed Model Checking (2002)Google Scholar
  21. 21.
    Leiserson, C.E., Schardl, T.B.: A work-efficient parallel breadth-first search algorithm (or how to cope with the nondeterminism of reducers). In: Proc. 22nd ACM Symposium on Parallelism in Algorithms and Architectures, SPAA 2010 (2010)Google Scholar
  22. 22.
    Korf, R.E., Schultze, P.: Large-scale parallel breadth-first search. In: Proc. 20th National Conference on Artificial Intelligence, vol. 3. AAAI (2005)Google Scholar
  23. 23.
    Holzmann, G.J.: Parallelizing the Spin Model Checker. In: Donaldson, A., Parker, D. (eds.) SPIN 2012. LNCS, vol. 7385, pp. 155–171. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  24. 24.
    Laarman, A., van de Pol, J., Weber, M.: Boosting multi-core reachability performance with shared hash tables. In: Formal Methods in Computer-Aided Design (2010)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Thomas Gibson-Robinson
    • 1
  • Philip Armstrong
    • 1
  • Alexandre Boulgakov
    • 1
  • Andrew W. Roscoe
    • 1
  1. 1.Department of Computer ScienceUniversity of OxfordOxfordUK

Personalised recommendations