The project addresses the problem of verifying software in C with respect to user-defined properties in the context of bounded model checking. Serving this goal, state-of-the-art model checkers hardly use the information of the old version and reduce it thereby to the standalone verification. The purpose of the research is to develop a new technique for checking the software based on successful verification of the old verification runs and reuse of the invested effort in consecutive verification runs.
We propose to reuse the function summaries extracted from Craig interpolation after a successful verification run. Function summaries are computed as over-approximations using Craig interpolation, a well-known mechanism, useful to preserve the most relevant information of the function bodies. The function calls are then to be substituted by these over-approximations, and it leads to a more efficient and fast verification process.
There are two main tracks made within the project:
There are two approaches for extracting and reusing interpolation-based function summaries:
-
FunFrog: SAT-based bounded model checker of a single C program using interpolation-based function summarization.
-
HiFrog: SMT-based bounded model checker of a single C program using SMT-based function summarization and Theory Refinement.
FunFrog focuses only on propositional logic and consequently, despite behaving in an incremental manner, FunFrog is expensive in many cases in practice. HiFrog considers the rich field of first-order theories available in modern SMT solvers. On top of HiFrog we propose to use function summaries more generally by translating them to various SMT theories. Note that HiFrog significantly outperforms FunFrog.
2) Verification of different revisions of a program w.r.t a fixed property: Over-approximating function summaries are extracted after a successful verification run of one program version with a fixed property and reused while verifying other versions of the program w.r.t a fixed property.
-
eVolCheck: SAT-based bounded upgrade checker of C program versions using interpolation-based function summarization.
-
UpProver: SMT-based incremental bounded model checker for verifying different revisions of a C program using SMT-based function summarization.
SAT-based eVolCheck uses propositional encoding for modelinmg C programs, thus despite behaving in an incremental manner, it is expensive in many cases in practice due to bit-blasting. UpProver in contrast to its predecessor, exploits first-order theories available in SMT solvers, offering two more levels of encoding precision: linear arithmetic and uninterpreted functions, thus allowing a trade-off between precision and performance. Note that UpProver significantly outperforms eVolCheck.
Publications:
- UpProver: Incremental Verification by SMT-based Summary Repair, Sepideh Asadi, Martin Blicha, Antti Hyvarinen, Grigory Fedyukovich, and Natasha Sharygina, FMCAD 2020 (Supplemental Material, PDF, slides, 5-minutes-video, video)
- Farkas-Based Tree Interpolation, Sepideh Asadi, Martin Blicha, Antti Hyvarinen, Grigory Fedyukovich, and Natasha Sharygina, SAS 2020 (Supplemental Material, PDF, slides, video)
- Interpolation-based Function Summaries in Bounded Model Checking, , Haifa Verification Conference (HVC), Haifa, Israel, Springer (2011)
- FunFrog: Bounded Model Checking with Interpolation-based Function Summarization, , 10th International Symposium on Automated Technology for Verification and Analysis (ATVA), Thiruvananthapuram, India (2012)
- Towards completeness in Bounded Model Checking through Automatic Recursion Depth Detection, , Brazilian Symposium on Formal Methods (SBMF), Maceio, Brazil (2014)
- Symbolic Detection of Assertion Dependencies for Bounded Model Checking, , 18th International Conference on Fundamental Approaches to Software Engineering (FASE), London, UK (2015)
- HiFrog: SMT-based Function Summarization for Software Verification L. Alt, S. Asadi, H. Chockler, K. Even, G. Fedyukovich , A. Hyvarinen, and N. Sharygina, TACAS 2017. link, pdf, demo, supplemental material
- Theory Refinement for Program Verification A. Hyvarinen, S. Asadi, K. Even-Mendoza, G. Fedyukovich, and N. Sharygina, SAT 2017. pdf, supplemental material
- Duality-based interpolation for quantifier-free equalities and uninterpreted functions L. Alt, A. Hyvarinen, S. Asadi, and N. Sharygina , FMCAD 2017. pdf
- Function Summarization Modulo Theories S. Asadi, M. Blicha, A. Hyvarinen, G. Fedyukovich, K. Even, N. Sharygina, and H. Chockler, LPAR 2018. pdf, supplemental material
- Lattice-Based Refinement in Bounded Model Checking K. Even-Mendoza, , S. Asadi, A. Hyvarinen, H. Chockler, and N. Sharygina, VSTTE 2018. pdf
- Lattice-based SMT for Program Verification K Even-Mendoza, A. Hyvärinen, H. Chockler, N. Sharygina, Memocode 2019. pdf
- Incremental Upgrade Checking by Means of Interpolation-based Function Summaries, , 12th International Conference on Formal Methods in Computer-Aided Design (FMCAD), Cambridge, UK (2012)
- eVolCheck: Incremental Upgrade Checker for C, , 19th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), Rome, Italy (2013)
- Flexible SAT-based framework for incremental bounded upgrade checking, , TACAS (2013)
- Verification-Aided Regression Testing, , International Symposium on Software Testing and Analysis, San Jose, USA (2014)