Semantic analysis of shared-memory concurrent languages using abstract model-checking
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Proving properties of dynamic process networks
Information and Computation
PVS: Combining Specification, Proof Checking, and Model Checking
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
Toward Parametric Verification of Open Distributed Systems
COMPOS'97 Revised Lectures from the International Symposium on Compositionality: The Significant Difference
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
System Description: Verification of Distributed Erlang Programs
CADE-15 Proceedings of the 15th International Conference on Automated Deduction: Automated Deduction
Timing UDP: Mechanized Semantics for Sockets, Threads, and Failures
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
The UDP Calculus: Rigorous Semantics for Real Networking
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Applying Rewriting Techniques to the Verification of Erlang Processes
CSL '99 Proceedings of the 13th International Workshop and 8th Annual Conference of the EACSL on Computer Science Logic
Semi-Automated Verification of Erlang Code
Proceedings of the 16th IEEE international conference on Automated software engineering
A relational trace logic for simple hierarchical actor-based component systems
Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions
Hi-index | 0.00 |
We describe a case-study in which formal methods were used to verify an important responsiveness property of a distributed database system which is used heavily at Ericsson in a number of recent products. One of the aims of the project was to verify the actual running code which is written in the distributed functional language Erlang. In a joint project between SICS and Ericsson we have over the past few years been developing a tableau-based verification tool for Erlang of considerable scope. In particular, we are capable of addressing -- on the level of running program code -- systems with unbounded behaviour along the many dimensions in which this happens in "real" programs, involving datatypes, recursive control structures, error handling and recovery, initialisation, and dynamic process creation. The database lookup manager considered here contains most of these features, giving rise to infinite state behaviour which is not very adequately handled using model checking or other approaches based purely on state space traversal. In the paper we introduce the case study, our approach to formalisation and verification, and discuss our experiences using the Erlang verification tool.