skip to main content
10.1145/2642937.2642987acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Automating regression verification

Published: 15 September 2014 Publication History

Abstract

Regression verification is an approach complementing regression testing with formal verification. The goal is to formally prove that two versions of a program behave either equally or differently in a precisely specified way. In this paper, we present a novel automatic approach for regression verification that reduces the equivalence of two related imperative integer programs to Horn constraints over uninterpreted predicates. Subsequently, state-of-the-art SMT solvers are used to solve the constraints. We have implemented the approach, and our experiments show non-trivial integer programs that can now be proved equivalent without further user input.

References

[1]
A. Alexandrescu. Three optimization tips for C++, 2012. A presentation at Facebook NYC. Available at www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920.
[2]
J. Almeida, M. Barbosa, J. Sousa Pinto, and B. Vieira. Verifying cryptographic software correctness with respect to reference implementations. In M. Alpuente, B. Cook, and C. Joubert, editors, Formal Methods for Industrial Critical Systems, volume 5825 of Lecture Notes in Computer Science, pages 37--52. Springer Berlin / Heidelberg, 2009.
[3]
P. Ammann and J. Offutt. Introduction to Software Testing. Cambridge University Press, New York, NY, USA, first edition, 2008.
[4]
T. Amtoft, S. Bandhakavi, and A. Banerjee. A logic for information flow in object-oriented programs. In Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, POPL '06, pages 91--102, New York, NY, USA, 2006. ACM.
[5]
J. Backes, S. Person, N. Rungta, and O. Tkachuk. Regression verification using impact summaries. In E. Bartocci and C. Ramakrishnan, editors, Model Checking Software, volume 7976 of Lecture Notes in Computer Science, pages 99--116. Springer Berlin Heidelberg, 2013.
[6]
A. Banerjee and D. A. Naumann. Ownership confinement ensures representation independence for object-oriented programs. J. ACM, 52(6):894--960, 2005.
[7]
A. Banerjee and D. A. Naumann. State based ownership, reentrance, and encapsulation. In Proceedings of the 19th European Conference on Object-Oriented Programming, ECOOP'05, pages 387--411, Berlin, Heidelberg, 2005. Springer-Verlag.
[8]
G. Barthe, J. Crespo, B. Gr--egoire, C. Kunz, and S. Zanella B--eguelin. Computer-aided cryptographic proofs. In L. Beringer and A. Felty, editors, Interactive Theorem Proving, volume 7406 of Lecture Notes in Computer Science, pages 11--27. Springer Berlin Heidelberg, 2012.
[9]
G. Barthe, J. M. Crespo, and C. Kunz. Relational verification using product programs. In M. Butler and W. Schulte, editors, Proceedings, 17th International Symposium on Formal Methods (FM), volume 6664 of Lecture Notes in Computer Science, pages 200--214. Springer, 2011.
[10]
G. Barthe, P. R. D'Argenio, and T. Rezk. Secure information flow by self-composition. In 17th IEEE Computer Security Foundations Workshop, CSFW-17, Pacific Grove, CA, USA, pages 100--114. IEEE Computer Society, 2004.
[11]
A. Darvas, R. Hähnle, and D. Sands. A theorem proving approach to analysis of secure information flow. In Proceedings of the Second International Conference on Security in Pervasive Computing, SPC'05, pages 193--209, Berlin, Heidelberg, 2005. Springer-Verlag.
[12]
E. W. Dijkstra. Guarded commands, nondeterminacy and formal derivation of programs. Communications of the ACM, 18(8):453--457, Aug. 1975.
[13]
I. Dillig, T. Dillig, and A. Aiken. Fluid updates: Beyond strong vs. weak updates. In Proceedings of the 19th European Conference on Programming Languages and Systems, ESOP'10, pages 246--266, Berlin, Heidelberg, 2010. Springer-Verlag.
[14]
S. Falke, D. Kapur, and C. Sinz. Termination analysis of imperative programs using bitvector arithmetic. In Proceedings of the 4th International Conference on Verified Software: Theories, Tools, Experiments (VSTTE'12), pages 261--277, Berlin, Heidelberg, 2012. Springer-Verlag.
[15]
J. Giesl, R. Thiemann, P. Schneider-Kamp, and S. Falke. Automated termination proofs with AProVE. In V. van Oostrom, editor, Rewriting Techniques and Applications, 15th International Conference (RTA 2004), Proceedings, volume 3091 of Lecture Notes in Computer Science, pages 210--220. Springer, 2004.
[16]
B. Godlin and O. Strichman. Inference rules for proving the equivalence of recursive procedures. Acta Inf., 45(6):403--439, 2008.
[17]
B. Godlin and O. Strichman. Regression verification. In Proceedings of the 46th Annual Design Automation Conference, DAC '09, pages 466--471. ACM, 2009.
[18]
B. Godlin and O. Strichman. Regression verification: proving the equivalence of similar programs. Software Testing, Verification and Reliability, 23(3):241--258, 2013.
[19]
S. Grebenshchikov, N. P. Lopes, C. Popeea, and A. Rybalchenko. Synthesizing software verifiers from proof rules. In Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '12, pages 405--416. ACM, 2012.
[20]
J. Harrison. Handbook of Practical Logic and Automated Reasoning. Cambridge University Press, 2009.
[21]
C. Hawblitzel, M. Kawaguchi, S. K. Lahiri, and H. Rebêlo. Mutual summaries: Unifying program comparison techniques. In Proceedings, First International Workshop on Intermediate Verification Languages (BOOGIE), 2011. Available at http://research.microsoft.com/en-us/um/people/moskal/boogie2011/boogie2011_pg40.pdf.
[22]
C. Hawblitzel, M. Kawaguchi, S. K. Lahiri, and H. Rebêlo. Towards modularly comparing programs using automated theorem provers. In M. P. Bonacina, editor, Automated Deduction - CADE-24 - 24th International Conference on Automated Deduction, Lake Placid, NY, USA, June 9-14, 2013. Proceedings, volume 7898 of Lecture Notes in Computer Science, pages 282--299. Springer, 2013.
[23]
K. Hoder and N. Bjørner. Generalized property directed reachability. In Proceedings of the 15th International Conference on Theory and Applications of Satisfiability Testing, SAT'12, pages 157--171, Berlin, Heidelberg, 2012. Springer-Verlag.
[24]
S.-Y. Huang and K.-T. Cheng. Formal Equivalence Checking and Design DeBugging. Kluwer Academic Publishers, Norwell, MA, USA, 1998.
[25]
S. K. Lahiri, C. Hawblitzel, M. Kawaguchi, and H. Rebêlo. SymDiff: A language-agnostic semantic di tool for imperative programs. In Proceedings of the 24th International Conference on Computer Aided Verification, CAV'12, pages 712--717, Berlin, Heidelberg, 2012. Springer-Verlag.
[26]
H. Post and C. Sinz. Proving functional equivalence of two AES implementations using bounded model checking. In Proceedings of the 2009 International Conference on Software Testing Verification and Validation, ICST '09, pages 31--40. IEEE Computer Society, 2009.
[27]
P. Rümmer, H. Hojjat, and V. Kuncak. Disjunctive interpolants for Horn-clause verification. In Proceedings of the 25th International Conference on Computer Aided Verification, CAV'13, pages 347--363, Berlin, Heidelberg, 2013. Springer-Verlag.
[28]
C. Scheben and P. H. Schmitt. Efficient self-composition for weakest precondition calculi. In C. B. Jones, P. Pihlajasaari, and J. Sun, editors, Proceedings, 19th International Symposium on Formal Methods (FM), volume 8442 of Lecture Notes in Computer Science, pages 579--594. Springer, 2014.
[29]
C. van Eijk. Sequential equivalence checking based on structural similarities. Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on, 19(7):814--819, 2000.
[30]
S. Verdoolaege, G. Janssens, and M. Bruynooghe. Equivalence checking of static affine programs using widening to handle recurrences. ACM Trans. Program. Lang. Syst., 34(3):11:1--11:35, 2012.
[31]
S. Verdoolaege, M. Palkovic, M. Bruynooghe, G. Janssens, and F. Catthoor. Experience with widening based equivalence checking in realistic multimedia systems. J. Electronic Testing, 26(2):279--292, 2010.
[32]
Y. Welsch and A. Poetzsch-Heffter. Verifying backwards compatibility of object-oriented libraries using Boogie. In Proceedings of the 14th Workshop on Formal Techniques for Java-like Programs, FTfJP '12, pages 35--41. ACM, 2012.

Cited By

View all
  • (2025)Should We Balance? Towards Formal Verification of the Linux Kernel SchedulerStatic Analysis10.1007/978-3-031-74776-2_8(194-215)Online publication date: 21-Jan-2025
  • (2024)Timing Side-Channel Mitigation via Automated Program RepairACM Transactions on Software Engineering and Methodology10.1145/367816933:8(1-27)Online publication date: 16-Jul-2024
  • (2024)Pushdown Normal-Form Bisimulation: A Nominal Context-Free Approach to Program EquivalenceProceedings of the 39th Annual ACM/IEEE Symposium on Logic in Computer Science10.1145/3661814.3662103(1-15)Online publication date: 8-Jul-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ASE '14: Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering
September 2014
934 pages
ISBN:9781450330138
DOI:10.1145/2642937
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: 15 September 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. formal methods
  2. invariant generation
  3. program equivalence
  4. regression verification

Qualifiers

  • Research-article

Funding Sources

Conference

ASE '14
Sponsor:

Acceptance Rates

ASE '14 Paper Acceptance Rate 82 of 337 submissions, 24%;
Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)50
  • Downloads (Last 6 weeks)2
Reflects downloads up to 18 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Should We Balance? Towards Formal Verification of the Linux Kernel SchedulerStatic Analysis10.1007/978-3-031-74776-2_8(194-215)Online publication date: 21-Jan-2025
  • (2024)Timing Side-Channel Mitigation via Automated Program RepairACM Transactions on Software Engineering and Methodology10.1145/367816933:8(1-27)Online publication date: 16-Jul-2024
  • (2024)Pushdown Normal-Form Bisimulation: A Nominal Context-Free Approach to Program EquivalenceProceedings of the 39th Annual ACM/IEEE Symposium on Logic in Computer Science10.1145/3661814.3662103(1-15)Online publication date: 8-Jul-2024
  • (2024)Equivalence and Similarity Refutation for Probabilistic ProgramsProceedings of the ACM on Programming Languages10.1145/36564628:PLDI(2098-2122)Online publication date: 20-Jun-2024
  • (2024)Evaluating the Effectiveness of Deep Learning Models for Foundational Program Analysis TasksProceedings of the ACM on Programming Languages10.1145/36498298:OOPSLA1(500-528)Online publication date: 29-Apr-2024
  • (2024)PASDAJournal of Systems and Software10.1016/j.jss.2024.112037213:COnline publication date: 1-Jul-2024
  • (2024)Proving Termination via Measure Transfer in Equivalence CheckingIntegrated Formal Methods10.1007/978-3-031-76554-4_5(75-84)Online publication date: 11-Nov-2024
  • (2024)Rewriting Induction for Higher-Order Constrained Term Rewriting SystemsLogic-Based Program Synthesis and Transformation10.1007/978-3-031-71294-4_12(202-219)Online publication date: 9-Sep-2024
  • (2024)Solving Constrained Horn Clauses as C Programs with CHC2CModel Checking Software10.1007/978-3-031-66149-5_8(146-163)Online publication date: 10-Apr-2024
  • (2023)Proving and Disproving Equivalence of Functional Programming AssignmentsProceedings of the ACM on Programming Languages10.1145/35912587:PLDI(928-951)Online publication date: 6-Jun-2023
  • Show More Cited By

View Options

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