kirancodes.me
To Proof Maintenance & Beyond!

Explaining abstract counterexamples

Sagar Chaki, Alex Groce, Ofer Strichman

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

BibTeX
@inproceedings{Chaki-al:FSE04,
  author    = {Sagar Chaki and
               Alex Groce and
               Ofer Strichman},
  title     = {Explaining abstract counterexamples},
  booktitle = {FSE},
  pages     = {73--82},
  publisher = {{ACM}},
  year      = {2004},
}

Related papers