FDR3 — A Modern Refinement Checker for CSP

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8413)


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.


Operational Semantic Label Transition System Process Algebra Syntactic Process Structure Operational Semantic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Hoare, C.A.R.: Communicating Sequential Processes. Prentice-Hall, Inc., Upper Saddle River (1985)zbMATHGoogle 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),
  13. 13.
    University of Oxford, libcspm (2013),
  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

  1. 1.Department of Computer ScienceUniversity of OxfordOxfordUK

Personalised recommendations