Verification of C++ Programs with VeriFast

12/28/2022
by   Niels Mommen, et al.
0

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 overridden in derived classes. The main missing feature at this point is support for C++ templates, which we plan to work on next.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
06/03/2023

Verifying C++ Dynamic Binding

We propose an approach for modular verification of programs written in a...
research
07/12/2021

Teaching Design by Contract using Snap!

With the progress in deductive program verification research, new tools ...
research
10/12/2018

The Effects of Adding Reachability Predicates in Propositional Separation Logic

The list segment predicate ls used in separation logic for verifying pro...
research
01/29/2019

Abstract I/O Specification

We recently proposed an approach for the specification and modular forma...
research
06/06/2019

Dynamically Allocated Memory Verification in Object-Oriented Programs using Prolog

A Prolog-based framework for fully automated verification currently unde...
research
03/14/2022

Conditional Contextual Refinement (CCR)

Contextual refinement (CR) is one of the standard notions of specifying ...
research
05/02/2022

Rusty Links in Local Chains

Rust successfully applies ownership types to control memory allocation. ...

Please sign up or login with your details

Forgot password? Click here to reset