Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2786805.2786867acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Witness validation and stepwise testification across software verifiers

Published: 30 August 2015 Publication History

Abstract

It is commonly understood that a verification tool should provide a counterexample to witness a specification violation. Until recently, software verifiers dumped error witnesses in proprietary formats, which are often neither human- nor machine-readable, and an exchange of witnesses between different verifiers was impossible. To close this gap in software-verification technology, we have defined an exchange format for error witnesses that is easy to write and read by verification tools (for further processing, e.g., witness validation) and that is easy to convert into visualizations that conveniently let developers inspect an error path. To eliminate manual inspection of false alarms, we develop the notion of stepwise testification: in a first step, a verifier finds a problematic program path and, in addition to the verification result FALSE, constructs a witness for this path; in the next step, another verifier re-verifies that the witness indeed violates the specification. This process can have more than two steps, each reducing the state space around the error path, making it easier to validate the witness in a later step. An obvious application for testification is the setting where we have two verifiers: one that is efficient but imprecise and another one that is precise but expensive. We have implemented the technique of error-witness-driven program analysis in two state-of-the-art verification tools, CPAchecker and Ultimate Automizer, and show by experimental evaluation that the approach is applicable to a large set of verification tasks.

References

[1]
L. Alawneh and A. Hamou-Lhadj. MTF: A scalable exchange format for traces of high performance computing systems. In Proc. ICPC, pages 181–184. IEEE, 2011.
[2]
T. Ball and S. K. Rajamani. The Slam project: Debugging system software via static analysis. In Proc. POPL, pages 1–3. ACM, 2002.
[3]
T. Ball and S. K. Rajamani. SLIC: A specification language for interface checking (of C). Technical Report MSR-TR-2001-21, Microsoft Research, 2002.
[4]
D. Beyer. Status report on software verification. In Proc. TACAS, LNCS 8413, pages 373–388. Springer, 2014.
[5]
D. Beyer. Software verification and verifiable witnesses (Report on SV-COMP 2015). In Proc. TACAS, LNCS 9035, pages 401–416. Springer, 2015.
[6]
D. Beyer, A. J. Chlipala, T. A. Henzinger, R. Jhala, and R. Majumdar. Generating tests from counterexamples. In Proc. ICSE, pages 326–335. IEEE, 2004.
[7]
D. Beyer, A. J. Chlipala, T. A. Henzinger, R. Jhala, and R. Majumdar. The Blast query language for software verification. In Proc. SAS, LNCS 3148, pages 2–18. Springer, 2004.
[8]
D. Beyer, A. Cimatti, A. Griggio, M. E. Keremoglu, and R. Sebastiani. Software model checking via large-block encoding. In Proc. FMCAD, pages 25–32. IEEE, 2009.
[9]
D. Beyer, T. A. Henzinger, R. Jhala, and R. Majumdar. The software model checker Blast. Int. J. Softw. Tools Technol. Transfer, 9(5-6):505–525, 2007.
[10]
D. Beyer, T. A. Henzinger, M. E. Keremoglu, and P. Wendler. Conditional model checking: A technique to pass information between verifiers. In Proc. FSE. ACM, 2012.
[11]
D. Beyer, T. A. Henzinger, R. Majumdar, and A. Rybalchenko. Path invariants. In Proc. PLDI, pages 300–309. ACM, 2007.
[12]
D. Beyer, T. A. Henzinger, and G. Théoduloz. Configurable software verification: Concretizing the convergence of model checking and program analysis. In Proc. CAV, LNCS 4590, pages 504–518. Springer, 2007.
[13]
D. Beyer, A. Holzer, M. Tautschnig, and H. Veith. Information reuse for multi-goal reachability analyses. In Proc. ESOP, LNCS 7792, pages 472–491. Springer, 2013.
[14]
D. Beyer and M. E. Keremoglu. CPAchecker: A tool for configurable software verification. In Proc. CAV, LNCS 6806, pages 184–190. Springer, 2011.
[15]
D. Beyer, M. E. Keremoglu, and P. Wendler. Predicate abstraction with adjustable-block encoding. In Proc. FMCAD, pages 189–197. FMCAD, 2010.
[16]
D. Beyer and S. Löwe. Explicit-state software model checking based on CEGAR and interpolation. In Proc. FASE, LNCS 7793, pages 146–162. Springer, 2013.
[17]
D. Beyer, S. Löwe, and P. Wendler. Benchmarking and resource measurement. In Proc. SPIN, LNCS 9232. Springer, 2015.
[18]
D. Beyer and P. Wendler. Reuse of verification results: Conditional model checking, precision reuse, and verification witnesses. In Proc. SPIN, LNCS 7976, pages 1–17. Springer, 2013.
[19]
U. Brandes, M. Eiglsperger, I. Herman, M. Himsolt, and M. S. Marshall. GraphML progress report. In Graph Drawing, LNCS 2265, pages 501–512. Springer, 2001.
[20]
S. Chaki, E. M. Clarke, A. Groce, S. Jha, and H. Veith. Modular verification of software components in C. IEEE Trans. Softw. Eng., 30(6):388–402, 2004.
[21]
E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement for symbolic model checking. J. ACM, 50(5):752–794, 2003.
[22]
E. M. Clarke, T. A. Henzinger, and H. Veith. Handbook of Model Checking. Springer.
[23]
E. M. Clarke, M. Talupur, H. Veith, and D. Wang. SAT-based predicate abstraction for hardware verification. In Proc. SAT, LNCS 2919, pages 78–92. Springer, 2003.
[24]
E. M. Clarke and H. Veith. Counterexamples revisited: Principles, algorithms, applications. In Verification: Theory and Practice, Essays Dedicated to Zohar Manna on the Occasion of His 64th Birthday, LNCS 2772, pages 208–224. Springer, 2003.
[25]
H. Cleve and A. Zeller. Locating causes of program failures. In Proc. ICSE, pages 342–351. ACM, 2005.
[26]
L. Correnson and J. Signoles. Combining analyses for C program verification. In Proc. FMICS, LNCS 7437, pages 108–130. Springer, 2012.
[27]
P. Cousot and R. Cousot. Static determination of dynamic properties of programs. In Proc. Int. Symp. on Programming, pages 106–130. Dunod, 1976.
[28]
P. Cousot and R. Cousot. Systematic design of program-analysis frameworks. In Proc. POPL, pages 269–282. ACM, 1979.
[29]
D. Dams and K. S. Namjoshi. Orion: High-precision methods for static error analysis of C and C++ programs. In Proc. FMCO, LNCS 4111, pages 138–160. Springer, 2005.
[30]
M. Dangl, S. Löwe, and P. Wendler. CPAchecker with support for recursive programs and floating-point arithmetic. In Proc. TACAS, LNCS 9035, pages 423–425. Springer, 2015.
[31]
S. Graf and H. Sa¨ıdi. Construction of abstract state graphs with Pvs. In Proc. CAV, LNCS 1254, pages 72–83. Springer, 1997.
[32]
A. Groce, S. Chaki, D. Kröning, and O. Strichman. Error explanation with distance metrics. STTT, 8(3):229–247, 2006.
[33]
A. Groce and W. Visser. What went wrong: Explaining counterexamples. In Proc. SPIN, LNCS 2648, pages 121–135. Springer, 2003.
[34]
M. Heizmann, D. Dietsch, J. Leike, B. Musa, and A. Podelski. Ultimate Automizer with array interpolation. In Proc. TACAS, LNCS 9035, pages 455–457. Springer, 2015.
[35]
M. Heizmann, J. Hoenicke, and A. Podelski. Software model checking for people who love automata. In Proc. CAV, LNCS 8044, pages 36–52. Springer, 2013.
[36]
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In Proc. POPL, pages 58–70. ACM, 2002.
[37]
A. Knüpfer, R. Brendel, H. Brunst, H. Mix, and W. E. Nagel. Introducing the open trace format (OTF). In Proc. ICCS, LNCS 3992, pages 526–533. Springer, 2006.
[38]
D. Kröning and N. Sharygina. Formal verification of SystemC by automatic hardware/software partitioning. In Proc. MEMOCODE, pages 101–110. IEEE, 2005.
[39]
A. Leitner, M. Oriol, A. Zeller, I. Ciupa, and B. Meyer. Efficient unit test-case minimization. In Proc. ASE, pages 417–420. ACM, 2007.
[40]
K. S. Namjoshi. Certifying model checkers. In Proc. CAV, LNCS 2102, pages 2–13. Springer, 2001.
[41]
H. Rocha, R. S. Barreto, L. Cordeiro, and A. D. Neto. Understanding programming bugs in ANSI-C software using bounded model checking counter-examples. In Proc. IFM, LNCS 7321, pages 128–142. Springer, 2012.
[42]
F. B. Schneider. Enforceable security policies. ACM Trans. Inf. Syst. Secur., 3(1):30–50, 2000.
[43]
O. ˇ Ser´ y. Enhanced property specification and verification in Blast. In Proc. FASE, LNCS 5503, pages 456–469. Springer, 2009.
[44]
A. Zeller. Isolating cause-effect chains from computer programs. In Proc. FSE, pages 1–10. ACM, 2002.

Cited By

View all
  • (2024)Parallel Program Analysis on Path RangesScience of Computer Programming10.1016/j.scico.2024.103154(103154)Online publication date: May-2024
  • (2024)Exchanging information in cooperative software validationSoftware and Systems Modeling (SoSyM)10.1007/s10270-024-01155-323:3(695-719)Online publication date: 1-Jun-2024
  • (2024)Btor2-Cert: A Certifying Hardware-Verification Framework Using Software AnalyzersTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-57256-2_7(129-149)Online publication date: 6-Apr-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2015: Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering
August 2015
1068 pages
ISBN:9781450336758
DOI:10.1145/2786805
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: 30 August 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Counterexample Validation
  2. Error Witness
  3. Model Checking
  4. Program Analysis
  5. Software Verification

Qualifiers

  • Research-article

Conference

ESEC/FSE'15
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)68
  • Downloads (Last 6 weeks)18
Reflects downloads up to 18 Aug 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Parallel Program Analysis on Path RangesScience of Computer Programming10.1016/j.scico.2024.103154(103154)Online publication date: May-2024
  • (2024)Exchanging information in cooperative software validationSoftware and Systems Modeling (SoSyM)10.1007/s10270-024-01155-323:3(695-719)Online publication date: 1-Jun-2024
  • (2024)Btor2-Cert: A Certifying Hardware-Verification Framework Using Software AnalyzersTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-57256-2_7(129-149)Online publication date: 6-Apr-2024
  • (2024)CPAchecker 2.3 with Strategy SelectionTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-57256-2_21(359-364)Online publication date: 6-Apr-2024
  • (2024)State of the Art in Software Verification and Witness Validation: SV-COMP 2024Tools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-57256-2_15(299-329)Online publication date: 6-Apr-2024
  • (2024)Correctness Witness Validation by Abstract InterpretationVerification, Model Checking, and Abstract Interpretation10.1007/978-3-031-50524-9_4(74-97)Online publication date: 15-Jan-2024
  • (2023)Towards Integrity and Reliability in Embedded Systems: The Synergy of ESBMC and Arduino Integration2023 XIII Brazilian Symposium on Computing Systems Engineering (SBESC)10.1109/SBESC60926.2023.10324098(1-6)Online publication date: 21-Nov-2023
  • (2023)CEGAR-PT: A Tool for Abstraction by Program Transformation2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE56229.2023.00215(2078-2081)Online publication date: 11-Sep-2023
  • (2023)Generation of Violation Witnesses by Under-Approximating Abstract InterpretationVerification, Model Checking, and Abstract Interpretation10.1007/978-3-031-50524-9_3(50-73)Online publication date: 30-Dec-2023
  • (2023)Ultimate Automizer and the CommuHash Normal FormTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-30820-8_39(577-581)Online publication date: 22-Apr-2023
  • 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