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.
Chapter PDF
Similar content being viewed by others
References
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)
Beyer, D.: Competition on software verification - (SV-COMP). In: TACAS. Lecture Notes in Computer Science, vol. 7214, pp. 504–524. Springer (2012)
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)
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)
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)
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)
Beyer, D.: Verification Witnesses from SV-COMP 2019 Verification Tools (Feb 2019). https://doi.org/10.5281/zenodo.2559175
Beyer, D.: Results of the 9th International Competition on Software Verification (SV-COMP 2020) (Jan 2020). https://doi.org/10.5281/zenodo.3630205
Beyer, D.: Verification Witnesses from SV-COMP 2020 Verification Tools (Jan 2020). https://doi.org/10.5281/zenodo.3630188
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)
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)
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)
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)
Beyer, D., Keremoglu, M.E., Wendler, P.: Predicate abstraction with adjustable-block encoding. In: FMCAD. pp. 189–197. IEEE (2010)
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)
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)
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)
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)
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)
Holub, A.I.: Compiler Design in C. Prentice Hall (1990)
Mak, R.: Writing Compilers and Interpreters: A Software Engineering Approach. Wiley Publishing, 3rd edn. (2009)
Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer (1999)
Š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
Author information
Authors and Affiliations
Corresponding authors
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.
Copyright information
© 2020 The Author(s)
About this paper
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)