Explaining abstract counterexamples
Authors:
Open Access
- 31 October 2004
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGSOFT Software Engineering Notes
- Vol. 29 (6) , 73-82
Abstract
When a program violates its specification a model checker produces a counterexample that shows an example of undesirable behavior. It is up to the user to understand the error, locate it, and fix the problem. Previous work introduced a technique for explaining and localizing errors based on finding the closest execution to a counterexample, with respect to a distance metric. That approach was applied only to concrete executions of programs. This paper extends and generalizes the approach by combining it with predicate abstraction. Using an abstract state-space increases scalability and makes explanations more informative. Differences between executions are presented in terms of predicates derived from the specification and program, rather than specific changes to variable values. Reasoning to the cause of an error from the factthat in the failing run x < y, but in the successful execution x = y is easier than reasoning from the information that in the failing run y = 239, but in the successful execution y = 232. An abstract explanation is automatically generalized Predicate abstraction has previously been used in model checking purely as a state-space reduction technique. However, an abstraction good enough to enable a model checking tool to find an error is also likely to be useful as an automatically generated high-level description of a state space --- suitable for use by programmers. Results demonstrating the effectiveness of abstract explanations support this claim.Keywords
This publication has 15 references indexed in Scilit:
- Modular verification of software components in CIEEE Transactions on Software Engineering, 2004
- Fault localization with nearest neighbor queries2004
- Error Explanation with Distance Metrics2004
- Understanding Counterexamples with explain2004
- Predicate Abstraction with Minimum Predicates2003
- Isolating cause-effect chains from computer programs2002
- Simplifying and isolating failure-inducing inputIEEE Transactions on Software Engineering, 2002
- Empirical studies of a safe regression test selection techniqueIEEE Transactions on Software Engineering, 1998
- Detecting equality of variables in programs1988
- CausationThe Journal of Philosophy, 1973