skip to main content
article

McErlang: a model checker for a distributed functional programming language

Published:01 October 2007Publication History
Skip Abstract Section

Abstract

We present a model checker for verifying distributed programs written in the Erlang programming language. Providing a model checker for Erlang is especially rewarding since the language is by now being seen as a very capable platform for developing industrial strength distributed applications with excellent failure tolerance characteristics. In contrast to most other Erlang verification attempts, we provide support for a very substantial part of the language. The model checker has full Erlang data type support, support for general process communication, node semantics (inter-process behave subtly different from intra-process communication), fault detection and fault tolerance through process linking, and can verify programs written using the OTP Erlang component library (used by most modern Erlang programs).

As the model checking tool is itself implemented in Erlang we benefit from the advantages that a (dynamically typed) functional programming language offers: easy prototyping and experimentation with new verification algorithms, rich executable models that use complex data structures directly programmed in Erlang, the ability to treat executable models interchangeably as programs (to be executed directly by the Erlang interpreter) and data, and not least the possibility to cleanly structure and to cleanly combine various verification sub-tasks. In the paper we discuss the design of the tool and provide early indications on its performance.

References

  1. T. Andrews, S. Qadeer, S. K. Rajamani, J. Rehof, and Y. Xie. Zing: A model checker for concurrent software. In Lecture Notes in Computer Science, volume Vol. 3114, pages 484--487, Jan 2004.Google ScholarGoogle Scholar
  2. J. Armstrong. Programming Erlang - Software for a Concurrent World. The Pragmatic Programmers, http://books.pragprog.com/titles/jaerlang, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Armstrong. Making reliable distributed systems in the presence of software errors. PhD thesis, Royal Institute of Technology, Stockholm, Sweden, December 2003.Google ScholarGoogle Scholar
  4. J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. T. Arts and L. Fredlund. Trace analysis of Erlang programs. SIGPLAN Not., 37 (12), 2002. ISSN 0362-1340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. T. Arts and J. Hughes. QuickCheck for Erlang. In Proceedings of the 2003 Erlang User Conference (EUC), 2003.Google ScholarGoogle Scholar
  7. T. Arts, C. Benac Earle, and J. J. Sánchez Penas. Translating Erlang to mucrl. In Proceedings of the International Conference on Application of Concurrency to System Design (ACSD2004). IEEE Computer Society Press, June 2004.Google ScholarGoogle Scholar
  8. T. Arts, C. Benac Earle, and J. Derrick. Development of a verified Erlang program for resource locking. International Journal on Software Tools for Technology Transfer (STTT), 5 (2-3): 205--220, March 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. T. Arts, K. Claessen, and H. Svensson. Semi-formal development of a fault-tolerant leader election protocol in Erlang. Lecture Notes in Computer Science, 3395: 140--154, January 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. S. Blau and J. Rooth. AXD 301 - a new generation ATM switching system. Ericsson Review, 1: 10--17, 1998.Google ScholarGoogle Scholar
  11. K. Claessen and H. Svensson. A semantics for distributed Erlang. In Proceedings of the ACM SIPGLAN 2005 Erlang Workshop, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. S. Dolev, A. Israeli, and S. Moran. Uniform dynamic self-stabilizing leader election. IEEE Trans. Parallel Distrib. Syst., 8 (4): 424--440, 1997. ISSN 1045-9219. doi: http://dx.doi.org/10.1109/71.588622. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Erlang 5.5/OTP R11B. The Erlang/OTP Team. http://www.erlang.org/doc/doc-5.5/doc/highlights.html.Google ScholarGoogle Scholar
  14. J.-C. Fernandez, H. Garavel, A. Kerbrat, L. Mounier, R. Mateescu, and M. Sighireanu. CADP: A protocol validation and verification toolbox. In Proceedings of the 8th Conference on Computer-Aided Verification, volume 1102 of Lecture Notes in Computer Science, pages 437--440. Springer, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. L. Fredlund. A Framework for Reasoning about Erlang Code. PhD thesis, Royal Institute of Technology, Stockholm, Sweden, 2001.Google ScholarGoogle Scholar
  16. L. Fredlund. Implementing WS-CDL. In Proceedings of the second Spanish workshop on Web Technologies (JSWEB 2006). Universidade de Santiago de Compostela, November 2006.Google ScholarGoogle Scholar
  17. L. Fredlund and J. J. Sánchez Penas. Model checking a VoD server using McErlang. In In proceedings of the 2007 Eurocast conference, Feb 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. L. Fredlund, D. Gurov, T. Noll, M. Dam, T. Arts, and G. Chugunov. A verification tool for Erlang. International Journal on Software Tools for Technology Transfer (STTT), 4 (4): 405--420, Aug 2003.Google ScholarGoogle Scholar
  19. P. Godefroid. Verisoft: A tool for the automatic analysis of concurrent reactive software. In Computer Aided Verification, pages 476--479, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. G. Holzmann. Design and Validation of Computer Protocols. Prentice-Hall, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. G. Holzmann, D. Peled, and M. Yannakakis. On nested depth first search. In Proc. Second SPIN Workshop, pages 23--32. American Mathematical Society, 1996.Google ScholarGoogle Scholar
  22. G. J. Holzmann and M. H. Smith. An automated verification method for distributed systems software based on model extraction. IEEE Trans. Softw. Eng., 28 (4): 364--377, 2002. ISSN 0098-5589. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. F. Huch. Verification of Erlang programs using abstract interpretation and model checking. In Proceedings of the 1999 ACM SIGPLAN International Conference on Functional Programming, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. N. Lynch. Distributed Algorithms. Morgan Kaufmann Publishers, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. G. Singh. Leader election in the presence of link failures. In IEEE Transactions on Parallel and Distributed Systems, Vol 7. IEEE computer society, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. I. Stoica, R. Morris, D. Karger, F. Kaashoek, and H. Balakrishnan. Chord: A scalable Peer-To-Peer lookup service for internet applications. In Proceedings of the 2001 ACM SIGCOMM Conference, pages 149--160, 2001. citeseer.ist.psu.edu/stoica01chord.html. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. S. D. Stoller. Leader election in distributed systems with crash failures. Technical Report 481, Computer Science Dept., Indiana University, May 1997. Revised July 1997.Google ScholarGoogle Scholar
  28. S. Torstendahl. Open telecom platform. Ericsson Review, 1, 1997.Google ScholarGoogle Scholar
  29. M. Y. Vardi and P. Wolper. An automata-theoretic approach to automatic program verification. pages 332--344, 1986.Google ScholarGoogle Scholar
  30. W3C. Web Services Choreography Description Language, Version 1.0 - W3C candidate recommendation 9 november 2005. Technical report, W3C, November 2005.Google ScholarGoogle Scholar
  31. U. Wiger. Fault tolerant leader election. small http://www.erlang.org/.Google ScholarGoogle Scholar
  32. A.G. Wouters. Manual for the μCRL toolset. Technical report, CWI, Amsterdam, 2001.Google ScholarGoogle Scholar
  33. J. Yang, P. Twohey, D. Engler, and M. Musuvathi. Using model checking to find serious file system errors. In Sixth Symposium on Operating Systems Design and Implementation, pages 273--288. USENIX, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. McErlang: a model checker for a distributed functional programming language

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 42, Issue 9
        Proceedings of the ICFP '07 conference
        September 2007
        331 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/1291220
        Issue’s Table of Contents
        • cover image ACM Conferences
          ICFP '07: Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
          October 2007
          346 pages
          ISBN:9781595938152
          DOI:10.1145/1291151

        Copyright © 2007 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 1 October 2007

        Check for updates

        Qualifiers

        • article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!