Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1029894.1029908acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

Explaining abstract counterexamples

Published: 31 October 2004 Publication History

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 <i>automatically generalized</i>
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 <i>automatically generated high-level description of a state space</i> --- suitable for use by programmers. Results demonstrating the effectiveness of abstract explanations support this claim.

References

[1]
F. Aloul, A. Ramani, I. Markov, and K. Sakallah. PBS: A backtrack search pseudo Boolean solver. In Symposium on the theory and applications of satisfiability testing (SAT), pages 346--353, 2002.]]
[2]
B. Alpern, M. Wegman, and F. Zadeck. Detecting equality of variables in programs. In Principles of Programming Languages, pages 1--11, 1988.]]
[3]
P. Anderson and T. Teitelbaum. Software inspection using CodeSurfer. In Workshop on Inspection in Software Engineering, 2001.]]
[4]
T. Ball, M. Naik, and S. Rajamani. From symptom to cause: Localizing errors in counterexample traces. In Principles of Programming Languages, pages 97--105, 2003.]]
[5]
T. Ball and S. Rajamani. Automatically validating temporal safety properties of interfaces. In SPIN Workshop on Model Checking of Software, pages 103--122, 2001.]]
[6]
A. Biere, A. Cimatti, E. Clarke, and Y. Zhu. Symbolic model checking without BDDs. In Tools and Algorithms for the Construction and Analysis of Systems, pages 193--207, 1999.]]
[7]
S. Chaki, E. Clarke, A. Groce, S. Jha, and H. Veith. Modular verification of software components in C. IEEE Transactions on Software Engineering, 30(6):388--402, 2004.]]
[8]
S. Chaki, E. Clarke, A. Groce, and O. Strichman. Predicate abstraction with minimum predicates. In Advanced Research Working Conference on Correct Hardware Design and Verification Methods (CHARME), pages 19--34, 2003.]]
[9]
E. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In Computer-Aided Verification, pages 154--169, 2000.]]
[10]
E. Clarke, O. Grumberg, and D. Peled. Model Checking. MIT Press, 2000.]]
[11]
R. Gerth, D. Peled, M. Vardi, and P. Wolper. Simple on-the-fly automatic verification of linear temporal logic. In Protocol Specification Testing and Verification, pages 3--18, 1995.]]
[12]
S. Graf and H. Saidi. Construction of abstract state graphs with PVS. In Computer-Aided Verification, pages 72--83, 1997.]]
[13]
A. Groce. Error explanation with distance metrics. In Tools and Algorithms for the Construction and Analysis of Systems, pages 108--122, 2004.]]
[14]
A. Groce, D. Kroening, and F. Lerda. Understanding counterexamples with explain. In Computer-Aided Verification, 2004. To appear.]]
[15]
A. Groce and W. Visser. What went wrong: Explaining counterexamples. In SPIN Workshop on Model Checking of Software, pages 121--135, 2003.]]
[16]
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In Principles of Programming Languages, pages 58--70, 2002.]]
[17]
S. Horwitz and T. Reps. The use of program dependence graphs in software engineering. In International Conference of Software Engineering, pages 392--411, 1992.]]
[18]
H. Jin, K. Ravi, and F. Somenzi. Fate and free will in error traces. In Tools and Algorithms for the Construction and Analysis of Systems, pages 445--458, 2002.]]
[19]
D. Kroening, E. Clarke, and F. Lerda. A tool for checking ANSI-C programs. In Tools and Algorithms for the Construction and Analysis of Systems, pages 168--176, 2004.]]
[20]
D. Lewis. Causation. Journal of Philosophy, 70:556--567, 1973.]]
[21]
M. Renieris and S. Reiss. Fault localization with nearest neighbor queries. In Automated Software Engineering, pages 30--39, 2003.]]
[22]
G. Rothermel and M. J. Harrold. Empirical studies of a safe regression test selection technique. Software Engineering, 24(6):401--419, 1999.]]
[23]
D. Sankoff and J. Kruskal, editors. Time Warps, String Edits, and Macromolecules: the Theory and Practice of Sequence Comparison. Addison Wesley, 1983.]]
[24]
A. Zeller. Isolating cause-effect chains from computer programs. In Foundations of Software Engineering, pages 1--10, 2002.]]
[25]
A. Zeller and R. Hildebrandt. Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering, 28(2):183--200, 2002.]]

Cited By

View all
  • (2024)Synthesis of Temporal CausalityComputer Aided Verification10.1007/978-3-031-65633-0_5(87-111)Online publication date: 24-Jul-2024
  • (2023)Checking and Sketching Causes on Temporal SequencesAutomated Technology for Verification and Analysis10.1007/978-3-031-45332-8_18(314-327)Online publication date: 19-Oct-2023
  • (2022)Visual Analysis of Hyperproperties for Understanding Model Checking ResultsIEEE Transactions on Visualization and Computer Graphics10.1109/TVCG.2021.311486628:1(357-367)Online publication date: 1-Jan-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SIGSOFT '04/FSE-12: Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
October 2004
282 pages
ISBN:1581138555
DOI:10.1145/1029894
  • cover image ACM SIGSOFT Software Engineering Notes
    ACM SIGSOFT Software Engineering Notes  Volume 29, Issue 6
    November 2004
    275 pages
    ISSN:0163-5948
    DOI:10.1145/1041685
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 31 October 2004

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. fault localization
  2. model checking
  3. predicate abstraction

Qualifiers

  • Article

Conference

SIGSOFT04/FSE-12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)14
  • Downloads (Last 6 weeks)0
Reflects downloads up to 02 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Synthesis of Temporal CausalityComputer Aided Verification10.1007/978-3-031-65633-0_5(87-111)Online publication date: 24-Jul-2024
  • (2023)Checking and Sketching Causes on Temporal SequencesAutomated Technology for Verification and Analysis10.1007/978-3-031-45332-8_18(314-327)Online publication date: 19-Oct-2023
  • (2022)Visual Analysis of Hyperproperties for Understanding Model Checking ResultsIEEE Transactions on Visualization and Computer Graphics10.1109/TVCG.2021.311486628:1(357-367)Online publication date: 1-Jan-2022
  • (2022)Explaining Hyperproperty ViolationsComputer Aided Verification10.1007/978-3-031-13185-1_20(407-429)Online publication date: 7-Aug-2022
  • (2018)Causal Distance-Metric-Based Assistance for Debugging after Compiler Fuzzing2018 IEEE 29th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE.2018.00027(166-177)Online publication date: Oct-2018
  • (2017)Computing counter-examples for privilege protection losses using security models2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER.2017.7884625(240-249)Online publication date: Feb-2017
  • (2016)Automatic generation of UML sequence diagrams from test counterexamplesProceedings of the 15th International Workshop on Erlang10.1145/2975969.2975977(58-59)Online publication date: 23-Sep-2016
  • (2016)A Survey on Software Fault LocalizationIEEE Transactions on Software Engineering10.1109/TSE.2016.252136842:8(707-740)Online publication date: 1-Aug-2016
  • (2015)Guidelines for Coverage-Based Comparisons of Non-Adequate Test SuitesACM Transactions on Software Engineering and Methodology10.1145/266076724:4(1-33)Online publication date: 2-Sep-2015
  • (2013)Taming compiler fuzzersACM SIGPLAN Notices10.1145/2499370.246217348:6(197-208)Online publication date: 16-Jun-2013
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media