3 research outputs found
High-level Proofs about Low-level Programs
Functional verification of low-level code requires
abstractions over the memory model to be effective, since
the number of side-conditions induced by byte-addressed
memory is prohibitive even with modern automated reasoners.
We propose a flexible solution to this challenge: assertions
contain explicit memory layouts which carry the necessary
side-conditions as invariants. The memory-related proof
obligations arising during verification can then be solved
using specialized automatic proof procedures. The remaining
verification conditions about the content of data structures
directly reflect a developer's understanding.
The development is formalized in Isabelle/HOL
Garbage collector verification for proof-carrying code
We present the verification of the machine-level implementation of a conservative variant of the standard marksweep garbage collector in a Hoare-style program logic. The specification of the collector is given on a machine-level memory model using separation logic, and is strong enough to preserve the safety property of any common mutator program. Our verification is fully implemented in the Coq proof assistant and can be packed immediately as foundational proof-carrying code package. Our work makes important attempt toward building fully certified production-quality garbage collectors