Certifying C program correctness with respect to CH2O with VeriFast

08/29/2023
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 which, when successfully checked by Coq, removes the need for trusting in the correctness of VeriFast itself. The Coq script achieves this by applying a chain of soundness results, allowing us to prove correctness of the program with regards to the third-party CH2O small step semantics for C11 by proving correctness in terms of symbolic execution in Coq. This proof chain includes two intermediate auxiliary big step semantics, the most important of which describes VeriFast's interpretation of C. Finally, symbolic execution in Coq is implemented by transforming the exported AST of the program into a Coq proposition representing the symbolic execution performed by VeriFast itself.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/21/2021

Certifying C program correctness with respect to CompCert with VeriFast

VeriFast is a powerful tool for verification of various correctness prop...
research
07/19/2023

Symbolic Semantics for Probabilistic Programs (extended version)

We present a new symbolic execution semantics of probabilistic programs ...
research
05/09/2023

Engineering a Formally Verified Automated Bug Finder

Symbolic execution is a program analysis technique executing programs wi...
research
09/29/2021

A verified algebraic representation of Cairo program execution

Cryptographic interactive proof systems provide an efficient and scalabl...
research
04/18/2023

Proof-Producing Symbolic Execution for Binary Code Verification

We propose a proof-producing symbolic execution for verification of mach...
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...
research
08/06/2021

Explaining Counterexamples with Giant-Step Assertion Checking

Identifying the cause of a proof failure during deductive verification o...

Please sign up or login with your details

Forgot password? Click here to reset