Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

McErlang: a model checker for a distributed functional programming language

Published: 01 October 2007 Publication History

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.
[2]
J. Armstrong. Programming Erlang - Software for a Concurrent World. The Pragmatic Programmers, http://books.pragprog.com/titles/jaerlang, 2007.
[3]
J. Armstrong. Making reliable distributed systems in the presence of software errors. PhD thesis, Royal Institute of Technology, Stockholm, Sweden, December 2003.
[4]
J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, 1996.
[5]
T. Arts and L. Fredlund. Trace analysis of Erlang programs. SIGPLAN Not., 37 (12), 2002. ISSN 0362-1340.
[6]
T. Arts and J. Hughes. QuickCheck for Erlang. In Proceedings of the 2003 Erlang User Conference (EUC), 2003.
[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.
[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.
[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.
[10]
S. Blau and J. Rooth. AXD 301 - a new generation ATM switching system. Ericsson Review, 1: 10--17, 1998.
[11]
K. Claessen and H. Svensson. A semantics for distributed Erlang. In Proceedings of the ACM SIPGLAN 2005 Erlang Workshop, 2005.
[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.
[13]
Erlang 5.5/OTP R11B. The Erlang/OTP Team. http://www.erlang.org/doc/doc-5.5/doc/highlights.html.
[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.
[15]
L. Fredlund. A Framework for Reasoning about Erlang Code. PhD thesis, Royal Institute of Technology, Stockholm, Sweden, 2001.
[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.
[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.
[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.
[19]
P. Godefroid. Verisoft: A tool for the automatic analysis of concurrent reactive software. In Computer Aided Verification, pages 476--479, 1997.
[20]
G. Holzmann. Design and Validation of Computer Protocols. Prentice-Hall, 1991.
[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.
[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.
[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.
[24]
N. Lynch. Distributed Algorithms. Morgan Kaufmann Publishers, 1996.
[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.
[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.
[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.
[28]
S. Torstendahl. Open telecom platform. Ericsson Review, 1, 1997.
[29]
M. Y. Vardi and P. Wolper. An automata-theoretic approach to automatic program verification. pages 332--344, 1986.
[30]
W3C. Web Services Choreography Description Language, Version 1.0 - W3C candidate recommendation 9 november 2005. Technical report, W3C, November 2005.
[31]
U. Wiger. Fault tolerant leader election. small http://www.erlang.org/.
[32]
A.G. Wouters. Manual for the μCRL toolset. Technical report, CWI, Amsterdam, 2001.
[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.

Cited By

View all
  • (2020)Provably correct implementation of the AbC calculusScience of Computer Programming10.1016/j.scico.2020.102567(102567)Online publication date: Nov-2020
  • (2018)AErlang: Empowering Erlang with attribute-based communicationScience of Computer Programming10.1016/j.scico.2018.08.006168(71-93)Online publication date: Dec-2018
  • (2018)Declarative debugging of concurrent Erlang programsJournal of Logical and Algebraic Methods in Programming10.1016/j.jlamp.2018.07.005101(22-41)Online publication date: Dec-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

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
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 October 2007
Published in SIGPLAN Volume 42, Issue 9

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)18
  • Downloads (Last 6 weeks)0
Reflects downloads up to 25 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2020)Provably correct implementation of the AbC calculusScience of Computer Programming10.1016/j.scico.2020.102567(102567)Online publication date: Nov-2020
  • (2018)AErlang: Empowering Erlang with attribute-based communicationScience of Computer Programming10.1016/j.scico.2018.08.006168(71-93)Online publication date: Dec-2018
  • (2018)Declarative debugging of concurrent Erlang programsJournal of Logical and Algebraic Methods in Programming10.1016/j.jlamp.2018.07.005101(22-41)Online publication date: Dec-2018
  • (2018)CauDEr: A Causal-Consistent Reversible Debugger for ErlangFunctional and Logic Programming10.1007/978-3-319-90686-7_16(247-263)Online publication date: 24-Apr-2018
  • (2017)Actoverse: a reversible debugger for actorsProceedings of the 7th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control10.1145/3141834.3141840(50-57)Online publication date: 23-Oct-2017
  • (2016)Statistical model checking of Timed Rebeca modelsComputer Languages, Systems and Structures10.1016/j.cl.2016.01.00445:C(53-79)Online publication date: 1-Apr-2016
  • (2016)Revisiting actor programming in C++Computer Languages, Systems and Structures10.1016/j.cl.2016.01.00245:C(105-131)Online publication date: 1-Apr-2016
  • (2015)Detecting concurrency bugs in higher-order programs through abstract interpretationProceedings of the 17th International Symposium on Principles and Practice of Declarative Programming10.1145/2790449.2790530(232-243)Online publication date: 14-Jul-2015
  • (2015)A quantitative verification framework of SysML activity diagrams under time constraintsExpert Systems with Applications: An International Journal10.1016/j.eswa.2015.05.04942:21(7493-7510)Online publication date: 30-Nov-2015
  • (2015)Assessing the effects of introducing a new software development processInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-013-0275-017:1(1-16)Online publication date: 1-Feb-2015
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media