Model Checking C++ Programs
Felipe R. Monteiro, Mikhail R. Gadelha, and Lucas C. Cordeiro

TL;DR
This paper presents a formal verification approach for C++ programs using bounded model checking and SMT solving, effectively handling complex language features and outperforming existing tools in accuracy and efficiency.
Contribution
It introduces a novel SMT-based verification framework for C++, formalizing complex features and implementing it in ESBMC, demonstrating improved verification results over state-of-the-art tools.
Findings
ESBMC handles a wide range of C++ features effectively.
ESBMC achieves higher correctness in verification results.
ESBMC reduces verification time compared to LLBMC and DIVINE.
Abstract
In the last three decades, memory safety issues in system programming languages such as C or C++ have been one of the significant sources of security vulnerabilities. However, there exist only a few attempts with limited success to cope with the complexity of C++ program verification. Here we describe and evaluate a novel verification approach based on bounded model checking (BMC) and satisfiability modulo theories (SMT) to verify C++ programs formally. Our verification approach analyzes bounded C++ programs by encoding into SMT various sophisticated features that the C++ programming language offers, such as templates, inheritance, polymorphism, exception handling, and the Standard C++ Libraries. We formalize these features within our formal verification framework using a decidable fragment of first-order logic and then show how state-of-the-art SMT solvers can efficiently handle that.…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
