skip to main content
10.1145/3611096.3611099acmotherconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
short-paper

Automated Reasoning Repair

Published: 16 October 2023 Publication History

Abstract

Formal methods are used for verifying software correctness and reliability, especially for safety- and security-critical systems. After changing or refactoring code, it is often necessary to repair a program’s correctness proof, which can be time-consuming. We describe the problem of automated reasoning repair, provide a public dataset, and suggest some solution directions.

References

[1]
Krzysztof R Apt and Ernst-Rüdiger Olderog. 2019. Fifty years of Hoare’s logic. Formal Aspects of Computing 31, 6 (2019), 751–807.
[2]
Brett Boston, Samuel Breese, Joey Dodds, Mike Dodds, Brian Huffman, Adam Petcher, and Andrei Stefanescu. 2021. Verified Cryptographic Code for Everybody. In International Conference on Computer Aided Verification. Springer, 645–668.
[3]
Evren Ceylan, F Onur Kutlubay, and Ayse B Bener. 2006. Software defect identification using machine learning techniques. In 32nd EUROMICRO Conference on Software Engineering and Advanced Applications. IEEE, 240–247.
[4]
Yoonsik Cheon and Gary T Leavens. 2002. A runtime assertion checker for the Java Modeling Language (JML). In Proceedings of the International Conference on Software Engineering Research and Practice (SERP’02), Las Vegas, Nevada, USA. Citeseer, 322–328.
[5]
Andrey Chudnov, Nathan Collins, Byron Cook, Joey Dodds, Brian Huffman, Colm MacCárthaigh, Stephen Magill, Eric Mertens, Eric Mullen, Serdar Tasiran, 2018. Continuous formal verification of Amazon s2n. In International Conference on Computer Aided Verification. Springer, 430–446.
[6]
David R Cok. 2011. OpenJML: JML for Java 7 by extending OpenJDK. In NASA Formal Methods Symposium. Springer, 472–479.
[7]
David R Cok. 2021. JML and OpenJML for Java 16. In Proceedings of the 23rd ACM International Workshop on Formal Techniques for Java-like Programs. 65–67.
[8]
Mike Dodds. 2022. Formally Verifying Industry Cryptography. IEEE Security & Privacy01 (2022), 2–7.
[9]
Christian Engel and Reiner Hähnle. 2007. Generating unit tests from formal proofs. In International Conference on Tests and Proofs. Springer, 169–188.
[10]
Claire Le Goues, Michael Pradel, and Abhik Roychoudhury. 2019. Automated program repair. Commun. ACM 62, 12 (2019), 56–65.
[11]
Charles Antony Richard Hoare. 1969. An axiomatic basis for computer programming. Commun. ACM 12, 10 (1969), 576–580.
[12]
Nikolai Kosmatov, Fonenantsoa Maurica, and Julien Signoles. 2020. Efficient runtime assertion checking for properties over mathematical numbers. In International Conference on Runtime Verification. Springer, 310–322.
[13]
Ted Kremenek, Paul Twohey, Godmar Back, Andrew Ng, and Dawson Engler. 2006. From uncertainty to belief: Inferring the specification within. In Proceedings of the 7th symposium on Operating systems design and implementation. 161–176.
[14]
Gary T. Leavens, Albert L. Baker, and Clyde Ruby. 1999. JML: A Notation for Detailed Design. In Behavioral Specifications of Businesses and Systems, Haim Kilov, Bernhard Rumpe, and Ian Simmonds (Eds.). Kluwer Academic Publishers, Boston, 175–188.
[15]
Gary T Leavens, Albert L Baker, and Clyde Ruby. 2006. Preliminary design of JML: A behavioral interface specification language for Java. ACM SIGSOFT Software Engineering Notes 31, 3 (2006), 1–38.
[16]
Gary T Leavens, David R Cok, and Amirfarhad Nilizadeh. 2022. Further lessons from the JML project. In The Logic of Software. A Tasting Menu of Formal Methods: Essays Dedicated to Reiner Hähnle on the Occasion of His 60th Birthday. Springer, 313–349.
[17]
Gary T Leavens, Erik Poll, Curtis Clifton, Yoonsik Cheon, Clyde Ruby, David Cok, Peter Müller, Joseph Kiniry, Patrice Chalin, Daniel M Zimmerman, 2008. JML reference manual.
[18]
Martin Leucker and Christian Schallhart. 2009. A brief account of runtime verification. The Journal of Logic and Algebraic Programming 78, 5 (2009).
[19]
Jiaying Li, Jun Sun, Li Li, Quang Loc Le, and Shang-Wei Lin. 2017. Automatic loop-invariant generation anc refinement through selective sampling. In 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, 782–792.
[20]
Valentin JM Manès, HyungSeok Han, Choongwoo Han, Sang Kil Cha, Manuel Egele, Edward J Schwartz, and Maverick Woo. 2019. The art, science, and engineering of fuzzing: A survey. IEEE Transactions on Software Engineering 47, 11 (2019), 2312–2331.
[21]
Sergey Mechtaev, Jooyong Yi, and Abhik Roychoudhury. 2016. Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis. In 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE). IEEE, 691–701.
[22]
Bertrand Meyer. 1992. Applying ‘Design by Contract’. Computer 25, 10 (Oct. 1992), 40–51.
[23]
Thanh-Toan Nguyen, Quang-Trung Ta, and Wei-Ngan Chin. 2019. Automatic Program Repair Using Formal Verification and Expression Templates. In International Conference on Verification, Model Checking, and Abstract Interpretation. Springer, 70–91.
[24]
Amirfarhad Nilizadeh. 2021. Test Overfitting: Challenges, Approaches, and Measurements. Technical Report. University of Central Florida, Computer Science.
[25]
Amirfarhad Nilizadeh. 2022. Automated program repair and test overfitting: measurements and approaches using formal methods. In 2022 IEEE Conference on Software Testing, Verification and Validation (ICST). IEEE, 480–482.
[26]
Amirfarhad Nilizadeh, Marlon Calvo, Gary T Leavens, and David R Cok. 2022. Generating counterexamples in the form of unit tests from Hoare-style verification attempts. In Proceedings of the IEEE/ACM 10th International Conference on Formal Methods in Software Engineering. 124–128.
[27]
Amirfarhad Nilizadeh, Marlon Calvo, Gary T. Leavens, and Xuan-Bach D. Le. 2021. More Reliable Test Suites for Dynamic APR by using Counterexamples. In 2021 IEEE 32nd International Symposium on Software Reliability Engineering (ISSRE). IEEE, 208–219.
[28]
Amirfarhad Nilizadeh and Gary T Leavens. 2022. Be realistic: Automated program repair is a combination of undecidable problems. In Proceedings of the Third International Workshop on Automated Program Repair. 31–32.
[29]
Amirfarhad Nilizadeh, Gary T Leavens, and David R Cok. 2023. Toward Using Fuzzers and Lightweight Specs for Semantic Bugs. J. Object Technol. (2023).
[30]
Amirfarhad Nilizadeh, Gary T. Leavens, Xuan-Bach D. Le, Corina S. Păsăreanu, and David R. Cok. 2021. Exploring True Test Overfitting in Dynamic Automated Program Repair using Formal Methods. In 2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST). IEEE, 229–240.
[31]
Amirfarhad Nilizadeh, Gary T. Leavens, and Corina S. Păsăreanu. 2021. Using a Guided Fuzzer and Preconditions to Achieve Branch Coverage with Valid Inputs. In Tests and Proofs, Frédéric Loulergue and Franz Wotawa (Eds.). Springer International Publishing, Cham, 72–84. https://tinyurl.com/4xzxxrn2
[32]
Amirfarhad Nilizadeh, Gary T Leavens, Corina S Păsăreanu, and Yannic Noller. 2023. JMLKelinci+: Detecting Semantic Bugs and Covering Branches with Valid Inputs using Coverage-Guided Fuzzing and Runtime Assertion Checking. Formal Aspects of Computing (In Press) (2023).
[33]
Farnoushsada Nilizadeh, Hamid Dashtbani, and Maryam Mouzarani. 2023. Parameterized Search Heuristic Prediction for Concolic Execution. In 2023 30th Asia-Pacific Software Engineering Conference (APSEC) (In Press). IEEE.
[34]
Peter W O’Hearn. 2018. Continuous reasoning: Scaling the impact of formal methods. In Proceedings of the 33rd Annual ACM/IEEE Symposium on Logic in Computer Science. ACM, 13–25.
[35]
Corina S Păsăreanu and Neha Rungta. 2010. Symbolic PathFinder: symbolic execution of Java bytecode. In Proceedings of the IEEE/ACM international conference on Automated software engineering. 179–180.
[36]
Siddharth Priya, Xiang Zhou, Yusen Su, Yakir Vizel, Yuyan Bao, and Arie Gurfinkel. 2021. Verifying verified code. In International Symposium on Automated Technology for Verification and Analysis. Springer, 187–202.
[37]
Armand Puccetti, Gaël de Chalendar, and Pierre-Yves Gibello. 2021. Combining formal and machine learning techniques for the generation of JML specifications. In Proceedings of the 23rd ACM International Workshop on Formal Techniques for Java-like Programs. 59–64.
[38]
Corina S Pǎsǎreanu, Peter C Mehlitz, David H Bushnell, Karen Gundy-Burlet, Michael Lowry, Suzette Person, and Mark Pape. 2008. Combining unit-level symbolic execution and system-level concrete execution for testing NASA software. In Proceedings of the 2008 international symposium on Software testing and analysis. 15–26.
[39]
Hridesh Rajan, Tien N Nguyen, Gary T Leavens, and Robert Dyer. 2015. Inferring behavioral specifications from large-scale repositories by leveraging collective intelligence. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, Vol. 2. IEEE, 579–582.
[40]
Talia Ringer. 2021. Proof Repair. Ph. D. Dissertation. University of Washington.
[41]
Talia Ringer, RanDair Porter, Nathaniel Yazdani, John Leo, and Dan Grossman. 2021. Proof repair across type equivalences. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation. 112–127.
[42]
Talia Ringer, Nathaniel Yazdani, John Leo, and Dan Grossman. 2018. Adapting proof automation to adapt proofs. In Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs. 115–129.
[43]
Bat-Chen Rothenberg, Daniel Dietsch, and Matthias Heizmann. 2018. Incremental verification using trace abstraction. In International Static Analysis Symposium. Springer, 364–382.
[44]
John L Singleton, Gary T Leavens, Hridesh Rajan, and David R. Cok. 2018. Poster: an algorithm and tool to infer practical postconditions. In 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion). IEEE, 313–314.
[45]
Yi Wei, Carlo A Furia, Nikolay Kazmin, and Bertrand Meyer. 2011. Inferring better contracts. In Proceedings of the 33rd International Conference on Software Engineering. 191–200.
[46]
Yi Wei, Yu Pei, Carlo A Furia, Lucas S Silva, Stefan Buchholz, Bertrand Meyer, and Andreas Zeller. 2010. Automated fixing of programs with contracts. In Proceedings of the 19th international symposium on Software testing and analysis. ACM, 61–72.
[47]
Jifeng Xuan, Matias Martinez, Favio Demarco, Maxime Clement, Sebastian Lamelas Marcote, Thomas Durieux, Daniel Le Berre, and Martin Monperrus. 2016. Nopol: Automatic repair of conditional statement bugs in Java programs. IEEE Transactions on Software Engineering 43, 1 (2016), 34–55.
[48]
Luciano Zemín, Simón Gutiérrez Brida, Ariel Godio, César Cornejo, Renzo Degiovanni, Germán Regis, Nazareno Aguirre, and Marcelo Frias. 2017. An analysis of the suitability of test-based patch acceptance criteria. In 2017 IEEE/ACM 10th International Workshop on Search-Based Software Testing (SBST). IEEE, 14–20.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
FTfJP '22: Proceedings of the 24th ACM International Workshop on Formal Techniques for Java-like Programs
June 2022
41 pages
ISBN:9798400707841
DOI:10.1145/3611096
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 the author(s) 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].

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 16 October 2023

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Automated Reasoning Repair
  2. Counterexample
  3. Formal Methods
  4. JML
  5. Static Verification

Qualifiers

  • Short-paper
  • Research
  • Refereed limited

Conference

FTfJP '22

Acceptance Rates

Overall Acceptance Rate 51 of 75 submissions, 68%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 13
    Total Downloads
  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)1
Reflects downloads up to 30 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media