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.
翻译:Verifast是一个基于C和爪哇程序模块化核查的分离逻辑的原型工具。 我们正在增加 C++的支持。 我们在本报告中描述了迄今为止我们为之增加支持的 C++ 的特点, 以及我们为这些特征产生的证明义务。 此时, VeriFast 基本支持了 C++ 中大多数目标导向的编程特点: 成员功能、 成员功能和操作员超载、 隐含和明确的转换、 构建器和初始化器列表、 毁灭器、 参考类型、 分配和在堆叠或堆叠( 使用新的和删除)、 继承( 包括多个继承而非虚拟基级) 以及虚拟成员功能和压倒性 。 为了支持继承等级的规格, 我们增加了对实例上游的支持, 可以在一个基级中引入, 并在衍生的类中占据优势。 目前缺少的主要特征是支持 C++ 模板, 我们计划下一步工作 。