Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
SYNERGY: a new algorithm for property checking
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Enforcing object protocols by combining static and runtime analysis
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Automatically refining abstract interpretations
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Counterexample driven refinement for abstract interpretation
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
Counter-example driven refinement using predicate abstraction has been successfully used to find bugs and verify properties in programs [1]. We describe two recent advances in counter-example driven refinement:- We present a counter-example driven refinement technique that combines verification and testing [4]. In our approach, we simultaneously use testing and proving, with the goal of either finding a test that demonstrates that Pviolates φ, or a proof that demonstrates that all executions of Psatisfy φ. The most interesting aspect of the approach is that unsuccessful proof attempts are used to generate tests, and unsuccessful attempts to generate tests are used to refine proofs. Besides being theoretically elegant, the approach has practical advantages ---precise alias information obtained during tests can be used to greatly aid the efficiency of constructing proofs [5].- In the past, counter-example driven refinement schemes have worked with a particular form of abstraction called predicate abstraction [1]. We present approaches to refine any abstract interpretation automatically using counterexamples. Several challenges arise: refining using disjunctions leads to powerset domains, and the use of joins forces us to consider counterexample DAGs instead of counterexample traces. We present our solutions to these problems [3,2]. We also present experiences implementing our techniques in a tool Dagger.