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.
- 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 Scholar
- J. Armstrong. Programming Erlang - Software for a Concurrent World. The Pragmatic Programmers, http://books.pragprog.com/titles/jaerlang, 2007. Google Scholar
Digital Library
- J. Armstrong. Making reliable distributed systems in the presence of software errors. PhD thesis, Royal Institute of Technology, Stockholm, Sweden, December 2003.Google Scholar
- J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, 1996. Google Scholar
Digital Library
- T. Arts and L. Fredlund. Trace analysis of Erlang programs. SIGPLAN Not., 37 (12), 2002. ISSN 0362-1340. Google Scholar
Digital Library
- T. Arts and J. Hughes. QuickCheck for Erlang. In Proceedings of the 2003 Erlang User Conference (EUC), 2003.Google Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- S. Blau and J. Rooth. AXD 301 - a new generation ATM switching system. Ericsson Review, 1: 10--17, 1998.Google Scholar
- K. Claessen and H. Svensson. A semantics for distributed Erlang. In Proceedings of the ACM SIPGLAN 2005 Erlang Workshop, 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Erlang 5.5/OTP R11B. The Erlang/OTP Team. http://www.erlang.org/doc/doc-5.5/doc/highlights.html.Google Scholar
- 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 Scholar
Digital Library
- L. Fredlund. A Framework for Reasoning about Erlang Code. PhD thesis, Royal Institute of Technology, Stockholm, Sweden, 2001.Google Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- P. Godefroid. Verisoft: A tool for the automatic analysis of concurrent reactive software. In Computer Aided Verification, pages 476--479, 1997. Google Scholar
Digital Library
- G. Holzmann. Design and Validation of Computer Protocols. Prentice-Hall, 1991. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- N. Lynch. Distributed Algorithms. Morgan Kaufmann Publishers, 1996. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- S. Torstendahl. Open telecom platform. Ericsson Review, 1, 1997.Google Scholar
- M. Y. Vardi and P. Wolper. An automata-theoretic approach to automatic program verification. pages 332--344, 1986.Google Scholar
- W3C. Web Services Choreography Description Language, Version 1.0 - W3C candidate recommendation 9 november 2005. Technical report, W3C, November 2005.Google Scholar
- U. Wiger. Fault tolerant leader election. small http://www.erlang.org/.Google Scholar
- A.G. Wouters. Manual for the μCRL toolset. Technical report, CWI, Amsterdam, 2001.Google Scholar
- 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 Scholar
Digital Library
Index Terms
McErlang: a model checker for a distributed functional programming language
Recommendations
McErlang: a model checker for a distributed functional programming language
ICFP '07: Proceedings of the 12th ACM SIGPLAN international conference on Functional programmingWe 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 ...
Analysing timed Rebeca using McErlang
AGERE! 2013: Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized controlAlthough timed actor-based models attracted more attention in the recent years, there is not much done on analyzing and model checking of such systems. The actor based language, Timed Rebeca, was introduced to model distributed and asynchronous systems ...
Recent improvements to the McErlang model checker
ERLANG '09: Proceedings of the 8th ACM SIGPLAN workshop on ERLANGIn this paper we describe a number of recent improvements to the McErlang model checker, including a new source to source translation to enable more Erlang programs to work under McErlang, a methodology for writing properties that can be verified by ...







Comments