RPP: Automatic Proof of Relational Properties by Self-Composition
This provides a practical tool for software verification engineers to automatically prove complex relational properties in C code, though it appears incremental as an implementation of an existing theoretical approach.
The authors tackled the problem of proving relational properties in C programs by developing RPP, an original implementation of self-composition in the FRAMA-C platform, which allows automatic verification of properties relating multiple function executions with concrete support for nested calls and dissimilar functions.
Self-composition provides a powerful theoretical approach to prove relational properties, i.e. properties relating several program executions, that has been applied to compare two runs of one or similar programs (in secure dataflow properties, code transformations, etc.). This tool demo paper presents RPP, an original implementation of self-composition for specification and verification of relational properties in C programs in the FRAMA-C platform. We consider a very general notion of relational properties invoking any finite number of function calls of possibly dissimilar functions with possible nested calls. The new tool allows the user to specify a relational property, to prove it in a completely automatic way using classic deductive verification, and to use it as a hypothesis in the proof of other properties that may rely on it.