Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Systematic Formal Verification for Fault-Tolerant Time-Triggered Algorithms
IEEE Transactions on Software Engineering
Dynamic Scheduling and Fault-Tolerance: Specification andVerification
Real-Time Systems
Validating Requirements for Fault Tolerant Systems using Model Checking
ICRE '98 Proceedings of the 3rd International Conference on Requirements Engineering: Putting Requirements Engineering to Practice
CADP - A Protocol Validation and Verification Toolbox
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
The syntax and semantics of timed $\mu CRL$
The syntax and semantics of timed $\'mu CRL$
ACSD '04 Proceedings of the Fourth International Conference on Application of Concurrency to System Design
Verification of timed erlang/OTP components using the process algebra μcrl
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
Verifying Erlang/OTP Components in μCRL
FORTE '07 Proceedings of the 27th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems
Verifying Erlang Telecommunication Systems with the Process Algebra μCRL
FORTE '08 Proceedings of the 28th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems
Model-checking Erlang: a comparison between EtomCRL2 and McErlang
TAIC PART'10 Proceedings of the 5th international academic and industrial conference on Testing - practice and research techniques
Hi-index | 0.00 |
In this paper we target the verification of fault tolerant aspects of distributed applications written in the Erlang programming language. Erlang programmers mostly work with ready-made language components. Our approach to verification of fault tolerance is to verify systems built using a central component of most Erlang software, a generic server component with fault tolerance handling. To verify such Erlang programs we automatically translate them into processes of the μCRL process algebra, generate their state spaces, and use a model checker to determine whether they satisfy correctness properties specified in the μ-calculus. The key observation of this paper is that, due to the usage of these higher-level design patterns, the state space generated from a Erlang program, even with failures occurring, is relatively small, and can be generated automatically.