Advertisement

Modelling and Analysing Software in mCRL2

  • Jan Friso Groote
  • Jeroen J. A. Keiren
  • Bas Luttik
  • Erik P. de Vink
  • Tim A. C. WillemseEmail author
Conference paper
  • 11 Downloads
Part of the Lecture Notes in Computer Science book series (LNCS, volume 12018)

Abstract

Model checking is an effective way to design correct software. Making behavioural models of software, formulating correctness properties using modal formulas, and verifying these using finite state analysis techniques, is a very efficient way to obtain the required insight in the software. We illustrate this on four common but tricky examples.

References

  1. 1.
  2. 2.
    Bartholomeus, M., Luttik, B., Willemse, T.: Modelling and analysing ERTMS hybrid level 3 with the mCRL2 toolset. In: Howar, F., Barnat, J. (eds.) FMICS 2018. LNCS, vol. 11119, pp. 98–114. Springer, Cham (2018).  https://doi.org/10.1007/978-3-030-00244-2_7CrossRefGoogle Scholar
  3. 3.
    Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development - Coq’Art: The Calculus of Inductive Constructions. Texts in Theoretical Computer Science. An EATCS Series. Springer, Berlin (2004).  https://doi.org/10.1007/978-3-662-07964-5CrossRefzbMATHGoogle Scholar
  4. 4.
    van Beusekom, R., et al.: Formalising the Dezyne modelling language in mCRL2. In: Petrucci, L., Seceleanu, C., Cavalcanti, A. (eds.) FMICS/AVoCS -2017. LNCS, vol. 10471, pp. 217–233. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-67113-0_14CrossRefGoogle Scholar
  5. 5.
    Bouwman, M., Janssen, B., Luttik, B.: Formal modelling and verification of an interlocking using mCRL2. In: Larsen, K.G., Willemse, T. (eds.) FMICS 2019. LNCS, vol. 11687, pp. 22–39. Springer, Cham (2019).  https://doi.org/10.1007/978-3-030-27008-7_2CrossRefGoogle Scholar
  6. 6.
    Bunte, O., et al.: The mCRL2 toolset for analysing concurrent systems. In: Vojnar, T., Zhang, L. (eds.) TACAS 2019. LNCS, vol. 11428, pp. 21–39. Springer, Cham (2019).  https://doi.org/10.1007/978-3-030-17465-1_2CrossRefGoogle Scholar
  7. 7.
    Cimatti, A., et al.: NuSMV 2: an opensource tool for symbolic model checking. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 359–364. Springer, Heidelberg (2002).  https://doi.org/10.1007/3-540-45657-0_29CrossRefGoogle Scholar
  8. 8.
    Dechev, D., Pirkelbauer, P., Stroustrup, B.: Understanding and effectively preventing the ABA problem in descriptor-based lock-free designs. In: 13th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC 2010), Carmona, Sevilla, Spain, 5–6 May 2010, pp. 185–192. IEEE Computer Society (2010).  https://doi.org/10.1109/ISORC.2010.10
  9. 9.
    Ernst, G., Huisman, M., Mostowski, W., Ulbrich, M.: VerifyThis – verification competition with a human factor. In: Beyer, D., Huisman, M., Kordon, F., Steffen, B. (eds.) TACAS 2019. LNCS, vol. 11429, pp. 176–195. Springer, Cham (2019).  https://doi.org/10.1007/978-3-030-17502-3_12CrossRefGoogle Scholar
  10. 10.
    Garavel, H., Lang, F., Mateescu, R., Serwe, W.: CADP 2011: a toolbox for the construction and analysis of distributed processes. STTT 15(2), 89–107 (2013)CrossRefGoogle Scholar
  11. 11.
    Gibson-Robinson, T., Armstrong, P., Boulgakov, A., Roscoe, A.W.: FDR3—a modern refinement checker for CSP. In: Ábrahám, E., Havelund, K. (eds.) TACAS 2014. LNCS, vol. 8413, pp. 187–201. Springer, Heidelberg (2014).  https://doi.org/10.1007/978-3-642-54862-8_13CrossRefzbMATHGoogle Scholar
  12. 12.
    Groote, J.F., Mousavi, M.R.: Modeling and Analysis of Communicating Systems. MIT Press, Cambridge (2014). https://mitpress.mit.edu/books/modeling-and-analysis-communicating-systemsCrossRefGoogle Scholar
  13. 13.
    Hennessy, M., Milner, R.: Algebraic laws for nondeterminism and concurrency. J. ACM 32(1), 137–161 (1985).  https://doi.org/10.1145/2455.2460MathSciNetCrossRefzbMATHGoogle Scholar
  14. 14.
    Hitotumatu, H., Noshita, K.: A technique for implementing backtrack algorithms and its application. Inf. Process. Lett. 8(4), 174–175 (1979).  https://doi.org/10.1016/0020-0190(79)90016-4CrossRefGoogle Scholar
  15. 15.
    Holzmann, G.J.: The model checker SPIN. IEEE Trans. Softw. Eng. 23(5), 279–295 (1997).  https://doi.org/10.1109/32.588521CrossRefGoogle Scholar
  16. 16.
    Hwong, Y.L., Keiren, J.J.A., Kusters, V.J.J., Leemans, S., Willemse, T.A.C.: Formalising and analysing the control software of the Compact Muon Solenoid experiment at the large Hadron Collider. Sci. Comput. Program. 78(12), 2435–2452 (2013).  https://doi.org/10.1016/j.scico.2012.11.009CrossRefGoogle Scholar
  17. 17.
    Keiren, J.J.A., Klabbers, M.D.: Modelling and verifying IEEE Std 11073–20601 session setup using mCRL2. Electron. Commun. EASST 53 (2013).  https://doi.org/10.14279/tuj.eceasst.53.793
  18. 18.
    Knuth, D.E.: Dancing links (2000). arXiv:cs/0011047
  19. 19.
    Lamport, L.: How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Comput. C-28(9), 690–691 (1979).  https://doi.org/10.1109/TC.1979.1675439
  20. 20.
    Lamport, L.: Specifying concurrent program modules. ACM Trans. Program. Lang. Syst. 5(2), 190–222 (1983).  https://doi.org/10.1145/69624.357207CrossRefzbMATHGoogle Scholar
  21. 21.
    Laveaux, M., Groote, J.F., Willemse, T.A.C.: Correct and efficient antichain algorithms for refinement checking. In: Pérez, J.A., Yoshida, N. (eds.) FORTE 2019. LNCS, vol. 11535, pp. 185–203. Springer, Cham (2019).  https://doi.org/10.1007/978-3-030-21759-4_11CrossRefGoogle Scholar
  22. 22.
    Nipkow, T., Wenzel, M., Paulson, L.C. (eds.): Isabelle/HOL - A Proof Assistant for Higher-Order Logic. LNCS, vol. 2283. Springer, Heidelberg (2002).  https://doi.org/10.1007/3-540-45949-9CrossRefzbMATHGoogle Scholar
  23. 23.
    Peterson, G.L.: Myths about the mutual exclusion problem. Inf. Process. Lett. 12(3), 115–116 (1981)CrossRefGoogle Scholar
  24. 24.
    Remenska, D., Willemse, T.A.C., Verstoep, K., Templon, J., Bal, H.: Using model checking to analyze the system behavior of the LHC production grid. Future Gener. Comput. Syst. 29(8), 2239–2251 (2013).  https://doi.org/10.1016/j.future.2013.06.004CrossRefGoogle Scholar
  25. 25.
    Roscoe, A.W.: Understanding Concurrent Systems. Texts in Computer Science. Springer, London (2010).  https://doi.org/10.1007/978-1-84882-258-0CrossRefzbMATHGoogle Scholar
  26. 26.
    Treiber, R.K.: Systems programming: coping with parallelism. Technical Report RJ 5118 (53162). International Business Machines Incorporated, Thomas J. Watson Research Center, San Jose, California (1986)Google Scholar
  27. 27.
    Wikipedia. http://en.wikipedia.org/wiki/peterson’s_algorithm (2015). Accessed 17 May 2015

Copyright information

© Springer Nature Switzerland AG 2020

Authors and Affiliations

  • Jan Friso Groote
    • 1
  • Jeroen J. A. Keiren
    • 1
  • Bas Luttik
    • 1
  • Erik P. de Vink
    • 1
  • Tim A. C. Willemse
    • 1
    Email author
  1. 1.Faculty of Mathematics and Computer ScienceEindhoven University of TechnologyEindhovenThe Netherlands

Personalised recommendations