Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Software engineering with B
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Isolating cause-effect chains from computer programs
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
Random Testing in Isabelle/HOL
SEFM '04 Proceedings of the Software Engineering and Formal Methods, Second International Conference
A new leader election implementation
Proceedings of the 2005 ACM SIGPLAN workshop on Erlang
McErlang: a model checker for a distributed functional programming language
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Elections in a Distributed Computing System
IEEE Transactions on Computers
Programming Erlang: Software for a Concurrent World
Programming Erlang: Software for a Concurrent World
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Verification of object-oriented software: The KeY approach
Verification of object-oriented software: The KeY approach
Semi-formal development of a fault-tolerant leader election protocol in erlang
FATES'04 Proceedings of the 4th international conference on Formal Approaches to Software Testing
QuickCheck testing for fun and profit
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Using Dynamic Symbolic Execution to Improve Deductive Verification
SPIN '08 Proceedings of the 15th international workshop on Model Checking Software
Could We Have Chosen a Better Loop Invariant or Method Contract?
TAP '09 Proceedings of the 3rd International Conference on Tests and Proofs
Testing first-order logic axioms in program verification
TAP'10 Proceedings of the 4th international conference on Tests and proofs
Generating counterexamples for structural inductions by exploiting nonstandard models
LPAR'10 Proceedings of the 17th international conference on Logic for programming, artificial intelligence, and reasoning
A framework for testing first-order logic axioms in program verification
Software Quality Control
Hi-index | 0.00 |
This paper addresses a problem arising in automated proof of invariants of transition systems, for example transition systems modelling distributed programs. Most of the time, the actual properties we want to prove are too weak to hold inductively, and auxiliary invariants need to be introduced. The problem is how to find these extra invariants. We propose a method where we find minimal counter examples to candidate invariants by means of automated random testing techniques. These counter examples can be inspected by a human user, and used to adapt the set of invariants at hand. We are able to find two different kinds of counter examples, either indicating (1) that the used invariants are too strong (a concrete trace of the system violates at least one of the invariants), or (2) that the used invariants are too weak (a concrete transition of the system does not maintain all invariants). We have developed and evaluated our method in the context of formally verifying an industrial-strength implementation of a fault-tolerant distributed leader election protocol.