Skip to main content

Interpretation-Based Violation Witness Validation for C: NITWIT

Part of the Lecture Notes in Computer Science book series (LNTCS,volume 12078)

Abstract

As software verification is gaining traction in academia and industry the number and complexity of verification tools is growing constantly. This initiated research and interest into exchangeable verification witnesses as well as tools for automated witness validation. Initial witness validators used model checkers that were amended to benefit from guidance information provided by the witness. This approach comes with substantial overhead. Second-generation execution-based validators traded speed for reduced strength in case of incomplete and non-exact witnesses. This was done by extracting test harnesses and compiling them with the original program. We present the nitwit tool, a new interpretation-based violation witness validator for C programs that is trimmed to be fast and memory efficient. It verifies a record number of witnesses of SV-COMP’20 in the ReachSafety category. Our novel tool exchanges initial compilation overhead and optimized execution for rapid startup performance. nitwit borrows C semantics from the compiler used for compilation. This offloads this hard-to-get-right task and enables using several compilers in parallel to inspect possible semantic differences.

References

  1. Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools. Addison-Wesley series in computer science / World student series edition, Addison-Wesley (1986)

    Google Scholar 

  2. Beyer, D.: Competition on software verification - (SV-COMP). In: TACAS. Lecture Notes in Computer Science, vol. 7214, pp. 504–524. Springer (2012)

    Google Scholar 

  3. Beyer, D.: Software verification and verifiable witnesses - (report on SV-COMP 2015). In: TACAS. Lecture Notes in Computer Science, vol. 9035,pp. 401–416. Springer (2015)

    Google Scholar 

  4. Beyer, D.: Reliable and reproducible competition results with benchexec and witnesses (report on SV-COMP 2016). In: TACAS. Lecture Notes in Computer Science, vol. 9636, pp. 887–904. Springer (2016)

    Google Scholar 

  5. Beyer, D.: Software verification with validation of results - (report on SV-COMP 2017). In: TACAS (2). Lecture Notes in Computer Science, vol. 10206, pp. 331–349 (2017)

    Google Scholar 

  6. Beyer, D.: Automatic verification of C and Java programs: SV-COMP 2019. In: TACAS (3). Lecture Notes in Computer Science, vol. 11429, pp. 133–155. Springer (2019)

    Google Scholar 

  7. Beyer, D.: Verification Witnesses from SV-COMP 2019 Verification Tools (Feb 2019). https://doi.org/10.5281/zenodo.2559175

  8. Beyer, D.: Results of the 9th International Competition on Software Verification (SV-COMP 2020) (Jan 2020). https://doi.org/10.5281/zenodo.3630205

  9. Beyer, D.: Verification Witnesses from SV-COMP 2020 Verification Tools (Jan 2020). https://doi.org/10.5281/zenodo.3630188

  10. Beyer, D., Dangl, M.: Verification-aided debugging: An interactive web-service for exploring error witnesses. In: CAV (2). Lecture Notes in Computer Science, vol. 9780, pp. 502–509. Springer (2016)

    Google Scholar 

  11. Beyer, D., Dangl, M., Dietsch, D., Heizmann, M., Stahlbauer, A.: Witness validation and stepwise testification across software verifiers. In: ESEC/SIGSOFT FSE. pp. 721–733. ACM (2015)

    Google Scholar 

  12. Beyer, D., Dangl, M., Lemberger, T., Tautschnig, M.: Tests from witnesses - execution-based validation of verification results. In: TAP. Lecture Notes in Computer Science, vol. 10889, pp. 3–23. Springer (2018)

    Google Scholar 

  13. Beyer, D., Henzinger, T.A., Théoduloz, G.: Configurable software verification: Concretizing the convergence of model checking and program analysis. In: CAV. Lecture Notes in Computer Science, vol. 4590, pp.504–518. Springer (2007)

    Google Scholar 

  14. Beyer, D., Keremoglu, M.E., Wendler, P.: Predicate abstraction with adjustable-block encoding. In: FMCAD. pp. 189–197. IEEE (2010)

    Google Scholar 

  15. Beyer, D., Löwe, S.: Explicit-state software model checking based on CEGAR and interpolation. In: FASE. Lecture Notes in Computer Science, vol. 7793, pp. 146–162. Springer (2013)

    Google Scholar 

  16. Clarke, E.M.: The birth of model checking. In: 25 Years of Model Checking. Lecture Notes in Computer Science, vol. 5000, pp. 1–26. Springer (2008)

    Google Scholar 

  17. Heizmann, M., Christ, J., Dietsch, D., Ermis, E., Hoenicke, J., Lindenmann, M.,Nutz, A., Schilling, C., Podelski, A.: Ultimate automizer with SMTInterpol - (competition contribution). In: TACAS. Lecture Notes in Computer Science, vol. 7795, pp. 641–643. Springer (2013)

    Google Scholar 

  18. Heizmann, M., Dietsch, D., Leike, J., Musa, B., Podelski, A.: Ultimate automizer with array interpolation - (competition contribution). In: TACAS. Lecture Notes in Computer Science, vol. 9035, pp. 455–457. Springer (2015)

    Google Scholar 

  19. Heizmann, M., Hoenicke, J., Podelski, A.: Software model checking for people who love automata. In: CAV. Lecture Notes in Computer Science, vol. 8044,pp. 36–52. Springer (2013)

    Google Scholar 

  20. Holub, A.I.: Compiler Design in C. Prentice Hall (1990)

    Google Scholar 

  21. Mak, R.: Writing Compilers and Interpreters: A Software Engineering Approach. Wiley Publishing, 3rd edn. (2009)

    Google Scholar 

  22. Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer (1999)

    Google Scholar 

  23. Švejda, J., Berger, P., Katoen, J.P.: Replication artifact for the NITWIT Validator submitted to TACAS20 (Oct 2019). https://doi.org/10.5281/zenodo.3518139

Download references

Author information

Authors and Affiliations

Authors

Corresponding authors

Correspondence to Jan Švejda , Philipp Berger or Joost-Pieter Katoen .

Editor information

Editors and Affiliations

Rights and permissions

Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.

The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.

Reprints and Permissions

Copyright information

© 2020 The Author(s)

About this paper

Verify currency and authenticity via CrossMark

Cite this paper

Švejda, J., Berger, P., Katoen, JP. (2020). Interpretation-Based Violation Witness Validation for C: NITWIT. In: Biere, A., Parker, D. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2020. Lecture Notes in Computer Science(), vol 12078. Springer, Cham. https://doi.org/10.1007/978-3-030-45190-5_3

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-45190-5_3

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-45189-9

  • Online ISBN: 978-3-030-45190-5

  • eBook Packages: Computer ScienceComputer Science (R0)