skip to main content
10.1145/3650212.3685303acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article
Open access

JCWIT: A Correctness-Witness Validator for Java Programs Based on Bounded Model Checking

Published: 11 September 2024 Publication History

Abstract

Witness validation is a formal verification method to independently verify software verification tool results, with two main categories: violation and correctness witness validators. Validators for violation witnesses in Java include Wit4Java and GWIT, but no dedicated correctness witness validators exist. To address this gap, this paper presents the Java Correctness-Witness Validator (JCWIT), the first tool to validate correctness witnesses in Java programs. JCWIT accepts an original program, a specification, and a correctness witness as inputs. Then, it uses invariants of each witness’s execution state as conditions to be incorporated into the original program in the form of assertions, thus instrumenting it. Next, JCWIT employs an established tool, Java Bounded Model Checker (JBMC), to verify the transformed program, hence examining the reproducibility of correct witness results. We evaluated JCWIT in the SV-COMP ReachSafety benchmark, and the results show that JCWIT can correctly validate the correctness witnesses generated by Java verifiers.

Supplementary Material

Auxiliary Archive (issta24demo-p8-p-archive.zip)
This is an archived version of the tool JCWIT 1.0. Note: See https://github.com/Chriszai for detailed instructions on how to use it.

References

[1]
Jade Alglave, Alastair F. Donaldson, Daniel Kroening, and Michael Tautschnig. 2011. Making Software Verification Tools Really Work. In Automated Technology for Verification and Analysis, Tevfik Bultan and Pao-Ann Hsiung (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 28–42. isbn:978-3-642-24372-1 https://doi.org/10.1007/978-3-642-24372-1_3
[2]
Dirk Beyer. 2022. Progress on Software Verification: SV-COMP 2022. In Tools and Algorithms for the Construction and Analysis of Systems, Dana Fisman and Grigore Rosu (Eds.). Springer International Publishing, Cham. 375–402. https://doi.org/10.1007/978-3-030-99527-0_20
[3]
Dirk Beyer. 2023. Competition on Software Verification and Witness Validation: SV-COMP 2023. In Tools and Algorithms for the Construction and Analysis of Systems, Sriram Sankaranarayanan and Natasha Sharygina (Eds.). Springer Nature Switzerland, Cham. 495–522. isbn:978-3-031-30820-8 https://doi.org/10.1007/978-3-031-30820-8_29
[4]
Dirk Beyer. 2024. State of the Art in Software Verification and Witness Validation: SV-COMP 2024. In Tools and Algorithms for the Construction and Analysis of Systems, Bernd Finkbeiner and Laura Kovács (Eds.). Springer Nature Switzerland, Cham. 299–329. https://doi.org/10.1007/978-3-031-57256-2_15
[5]
Dirk Beyer, Matthias Dangl, Daniel Dietsch, and Matthias Heizmann. 2016. Correctness witnesses: exchanging verification results between verifiers. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2016). Association for Computing Machinery, New York, NY, USA. 326–337. isbn:9781450342186 https://doi.org/10.1145/2950290.2950351
[6]
Dirk Beyer, Matthias Dangl, Daniel Dietsch, Matthias Heizmann, Thomas Lemberger, and Michael Tautschnig. 2022. Verification Witnesses. ACM Trans. Softw. Eng. Methodol., 31, 4 (2022), Article 57, sep, 69 pages. issn:1049-331X https://doi.org/10.1145/3477579
[7]
Dirk Beyer, Matthias Dangl, Daniel Dietsch, Matthias Heizmann, and Andreas Stahlbauer. 2015. Witness validation and stepwise testification across software verifiers. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015). Association for Computing Machinery, New York, NY, USA. 721–733. isbn:9781450336758 https://doi.org/10.1145/2786805.2786867
[8]
Dirk Beyer, Matthias Dangl, Thomas Lemberger, and Michael Tautschnig. 2018. Tests from Witnesses. In Tests and Proofs, Catherine Dubois and Burkhart Wolff (Eds.). Springer International Publishing, Cham. 3–23. isbn:978-3-319-92994-1 https://doi.org/10.1007/978-3-319-92994-1_1
[9]
Dirk Beyer and Martin Spiessl. 2020. MetaVal: Witness Validation via Verification. In Computer Aided Verification, Shuvendu K. Lahiri and Chao Wang (Eds.). Springer International Publishing, Cham. 165–177. isbn:978-3-030-53291-8 https://doi.org/10.1007/978-3-030-53291-8_10
[10]
Armin Biere, Alessandro Cimatti, Edmund M Clarke, Ofer Strichman, and Yunshan Zhu. 2009. Bounded model checking. Handbook of satisfiability, 185, 99 (2009), 457–481. https://doi.org/10.3233/FAIA201002
[11]
Maria Christakis and Christian Bird. 2016. What developers want and need from program analysis: an empirical study. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering (ASE ’16). Association for Computing Machinery, New York, NY, USA. 332–343. isbn:9781450338455 https://doi.org/10.1145/2970276.2970347
[12]
Lucas Cordeiro, Pascal Kesseli, Daniel Kroening, Peter Schrammel, and Marek Trtik. 2018. JBMC: A Bounded Model Checking Tool for Verifying Java Bytecode. In Computer Aided Verification, Hana Chockler and Georg Weissenbacher (Eds.). Springer International Publishing, Cham. 183–190. isbn:978-3-319-96145-3 https://doi.org/10.1007/978-3-319-96145-3_10
[13]
Lucas Cordeiro, Daniel Kroening, and Peter Schrammel. 2019. JBMC: Bounded Model Checking for Java Bytecode. In Tools and Algorithms for the Construction and Analysis of Systems, Dirk Beyer, Marieke Huisman, Fabrice Kordon, and Bernhard Steffen (Eds.). Springer International Publishing, Cham. 219–223. isbn:978-3-030-17502-3 https://doi.org/10.1007/978-3-030-17502-3_17
[14]
Lucas C. Cordeiro, Daniel Kroening, and Peter Schrammel. 2019. Benchmarking of Java Verification Tools at the Software Verification Competition (SV-COMP). SIGSOFT Softw. Eng. Notes, 43, 4 (2019), jan, 56. issn:0163-5948 https://doi.org/10.1145/3282517.3282529
[15]
Vijay D’Silva, Daniel Kroening, and Georg Weissenbacher. 2008. A Survey of Automated Techniques for Formal Software Verification. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 27, 7 (2008), 1165–1178. https://doi.org/10.1109/TCAD.2008.923410
[16]
Falk Howar and Malte Mues. 2022. GWIT: A Witness Validator for Java based on GraalVM (Competition Contribution). In Tools and Algorithms for the Construction and Analysis of Systems, Dana Fisman and Grigore Rosu (Eds.). Springer International Publishing, Cham. 446–450. isbn:978-3-030-99527-0 https://doi.org/10.1007/978-3-030-99527-0_29
[17]
R.M. McConnell, K. Mehlhorn, S. Näher, and P. Schweitzer. 2011. Certifying algorithms. Computer Science Review, 5, 2 (2011), 119–161. issn:1574-0137 https://doi.org/10.1016/j.cosrev.2010.09.009
[18]
Herbert Rocha, Raimundo Barreto, Lucas Cordeiro, and Arilo Dias Neto. 2012. Understanding Programming Bugs in ANSI-C Software Using Bounded Model Checking Counter-Examples. In Integrated Formal Methods, John Derrick, Stefania Gnesi, Diego Latella, and Helen Treharne (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 128–142. isbn:978-3-642-30729-4 https://doi.org/10.1007/978-3-642-30729-4_10
[19]
D.R. Wallace and R.U. Fujii. 1989. Software verification and validation: an overview. IEEE Software, 6, 3 (1989), 10–17. https://doi.org/10.1109/52.28119
[20]
Tong Wu, Peter Schrammel, and Lucas C. Cordeiro. 2022. Wit4Java: A Violation-Witness Validator for Java Verifiers (Competition Contribution). In Tools and Algorithms for the Construction and Analysis of Systems, Dana Fisman and Grigore Rosu (Eds.). Springer International Publishing, Cham. 484–489. isbn:978-3-030-99527-0 https://doi.org/10.1007/978-3-030-99527-0_36

Index Terms

  1. JCWIT: A Correctness-Witness Validator for Java Programs Based on Bounded Model Checking

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ISSTA 2024: Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis
    September 2024
    1928 pages
    ISBN:9798400706127
    DOI:10.1145/3650212
    This work is licensed under a Creative Commons Attribution International 4.0 License.

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 11 September 2024

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Bounded Model Checking
    2. Correctness
    3. Java Programming
    4. Witness Validation

    Qualifiers

    • Research-article

    Conference

    ISSTA '24
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 58 of 213 submissions, 27%

    Upcoming Conference

    ISSTA '25

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 112
      Total Downloads
    • Downloads (Last 12 months)112
    • Downloads (Last 6 weeks)25
    Reflects downloads up to 06 Jan 2025

    Other Metrics

    Citations

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media