Verification of C++ Programs with VeriFast
Niels Mommen, Bart Jacobs

TL;DR
VeriFast is a verification tool based on separation logic, extended to support most object-oriented features of C++, enabling modular verification of C++ programs.
Contribution
The paper details the extension of VeriFast to support key C++ features, including object-oriented constructs, inheritance, and instance predicates, with plans to support templates.
Findings
Supports most C++ object-oriented features
Generates proof obligations for C++ features
Plans to add support for C++ templates
Abstract
VeriFast is a prototype tool based on separation logic for modular verification of C and Java programs. We are in the process of adding support for C++. In this report, we describe the features of C++ for which we added support so far, as well as the proof obligations we generate for these features. At this point, VeriFast has basic support for most object-oriented programming features of C++: member functions, member function and operator overloading, implicit and explicit conversions, constructors and initializer lists, destructors, reference types, allocation and deallocation on the stack or on the heap (using new and delete), inheritance (including multiple inheritance but not virtual base classes), and virtual member functions and overriding. To support specification of inheritance hierarchies, we added support for instance predicates, which can be introduced in a base class and…
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.
Taxonomy
TopicsAdvanced Software Engineering Methodologies · Software Engineering Research · Logic, programming, and type systems
