Model-Checking Erlang – A Comparison between EtomCRL2 and McErlang

  • Qiang Guo
  • John Derrick
  • Clara Benac Earle
  • Lars-Åke Fredlund
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6303)


Model-checking programs is important in the development of a reliable software system. Two approaches might be applied to model-check a system at a source code level. One is to directly apply model-checking algorithm to the programming language; the other to abstract the program source codes into a formal specification, upon which some standard model-checkers can be used to verify system’s properties. Both methods have recently been investigated for model-checking the functional programming language Erlang. Correspondingly, two Erlang model-checkers McErlang and Etomcrl2 are developed. This paper evaluates the two model-checkers by applying them to verify a a distributed and concurrent example - telecoms implemented in Erlang/OTP. A number of system’s key properties are model-checked with both tool-sets. Advantages and disadvantages upon the uses of Etomcrl2 and McErlang are compared and summarized. Through such a case study, we intend to evaluate the two model-checkers on their effectiveness when verifying distributed and concurrent systems, and propose suggestions for their future work.


Erlang Model Checking Program Source Code Etomcrl2 McErlang 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Armstrong, J., Virding, R., Wikström, C., Williams, M.: Concurrent Programming in Erlang, 2nd edn. Prentice-Hall, Englewood Cliffs (1996)Google Scholar
  2. 2.
    Arts, T., Benac-Earle, C., Penas, J.J.S.: Translating Erlang to μCRL. In: Kishinevsky, M., Darondeau, P. (eds.) 4th International Conference on Application of Concurrency to System Design, pp. 135–144. IEEE Computer Society, Los Alamitos (June 2004)Google Scholar
  3. 3.
    Baeten, J.C.M., Weijland, W.P.: Process Algebra. Cambridge University Press, Cambridge (1990)Google Scholar
  4. 4.
    Benac-Earle, C., Fredlund, L.-Å.: Verification of Language Based Fault-Tolerance. In: Moreno Díaz, R., Pichler, F., Quesada Arencibia, A. (eds.) EUROCAST 2005. LNCS, vol. 3643, pp. 140–149. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  5. 5.
    Benac-Earle, C., Fredlund, L.-Å., Derrick, J.: Verifying Fault-Tolerant Erlang Programs. In: Sagonas, K., Armstrong, J. (eds.) Proceedings of ACM SigPlan Erlang 2005 Workshop, pp. 26–34. ACM Press, New York (September 2005)CrossRefGoogle Scholar
  6. 6.
  7. 7.
    Cesarini, F., Thompson, S.: Erlang Programming. O’Reilly Media, Sebastopol (2009)zbMATHGoogle Scholar
  8. 8.
    Fredlund, L., Svensson, H.: McErlang: a Model Checker for a Distributed Functional Programming Language. In: Hinze, R., Ramsey, N. (eds.) 12th ACM SIGPLAN International conference on functional programming (ICFP 2007), pp. 978–1–59593–815–2 (2007)Google Scholar
  9. 9.
    Groote, J.F., Mathijssena, A., van Weerdenburga, M., Usenkoa, Y.: From μCRL to mCRL2. Electronic Notes in Theoretical Computer Science 162, 191–196 (2006)CrossRefGoogle Scholar
  10. 10.
    Groote, J.F., Ponse, A.: The syntax and sematics of μCRL. In: Ponse, A., Verhoef, C., van Vlijmen, S. (eds.) Algebra of Communicating Processes 1994, Workshop in Computing, pp. 26–62 (1995)Google Scholar
  11. 11.
    Guo, Q.: Verifying Erlang/OTP Components in μCRL. In: Derrick, J., Vain, J. (eds.) FORTE 2007. LNCS, vol. 4574, pp. 227–246. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  12. 12.
    Guo, Q., Derrick, J.: Verification of Timed Erlang/OTP Components Using the Process Algebra μCRL. In: Thompson, S., Fredlund, L.-Å. (eds.) 6th ACM SIGPLAN Erlang Workshop, pp. 55–64. ACM Press, New York (2007)Google Scholar
  13. 13.
    Guo, Q., Derrick, J.: Formally Based Tool Support for Model Checking Erlang Applications. International Journal on Software Tools for Technology Transfer (2010) (under review)Google Scholar
  14. 14.
    Guo, Q., Derrick, J., Hoch, C.: Verifying Erlang Telecommunication Systems with the Process Algebra μCRL. In: Suzuki, K., Higashino, T., Yasumoto, K., El-Fakih, K. (eds.) FORTE 2008. LNCS, vol. 5048, pp. 201–217. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  15. 15.
    Havelund, K., Lowry, M., Penix, J.: Formal Analysis of a Space-Craft Controller Using SPIN. IEEE Transactions on Software Engineering 27(8), 749–765 (2001)CrossRefGoogle Scholar
  16. 16.
    Holzmann, H.: Design and Validation of Computer Protocols. Prentice-Hall, Englewood Cliffs (1991)Google Scholar
  17. 17.
    Svensson, H.: Implementing an LTL-to-Büchi translator in Erlang: a protest experience report. In: 8th ACM SIGPLAN Erlang Workshop, pp. 63–70. ACM Press, New York (September 2009)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Qiang Guo
    • 1
  • John Derrick
    • 1
  • Clara Benac Earle
    • 2
  • Lars-Åke Fredlund
    • 2
  1. 1.Department of Computer ScienceThe University of SheffieldPortobelloUK
  2. 2.Facultad de InformáticaUniversidad Politécnica de MadridMadridSpain

Personalised recommendations