Certifying C program correctness with respect to CompCert with VeriFast

10/21/2021
by   Stefan Wils, et al.
0

VeriFast is a powerful tool for verification of various correctness properties of C programs using symbolic execution. However, VeriFast itself has not been verified. We present a proof-of-concept extension which generates a correctness certificate for each successful verification run individually. This certificate takes the form of a Coq script containing two proofs which, when successfully checked by Coq, together remove the need for trusting in the correctness of VeriFast itself. The first proves a lemma expressing the correctness of the program with respect to a big step operational semantics developed by ourselves, intended to reflect VeriFast's interpretation of C. We have formalized this semantics in Coq as cbsem. This lemma is proven by symbolic execution in Coq, which in turn is implemented by transforming the exported AST of the program into a Coq proposition representing the symbolic execution performed by VeriFast itself. The second proves the correctness of the same C program with respect to CompCert's Clight big step semantics. This proof simply applies our proof of the soundness of cbsem with respect to CompCert Clight to the first proof.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
08/29/2023

Certifying C program correctness with respect to CH2O with VeriFast

VeriFast is a powerful tool for verification of various correctness prop...
research
08/06/2021

Explaining Counterexamples with Giant-Step Assertion Checking

Identifying the cause of a proof failure during deductive verification o...
research
10/20/2022

Execution Time Program Verification With Tight Bounds

This paper presents a proof system for reasoning about execution time bo...
research
01/27/2020

Operationally-based Program Equivalence Proofs using LCTRSs

We propose an operationally-based deductive proof method for program equ...
research
08/06/2021

Deductive Verification via the Debug Adapter Protocol

We propose a conceptual integration of deductive program verification in...
research
10/27/2018

Beyond Structured Programming

The correctness of a structured program is, at best, plausible. Though t...
research
10/22/2021

Proof-Carrying Parameters in Certified Symbolic Execution: The Case Study of Antiunification

Unification and antiunification are essential algorithms used by symboli...

Please sign up or login with your details

Forgot password? Click here to reset