A Type System for Extracting Functional Specifications from Memory-Safe Imperative Programs
summary
A memory-safe Rust-like type system called Heapster typechecks LLVM IR and extracts Coq functions that represent imperative behavior without pointer reasoning, inserting dynamic checks in specs for array bounds and other safety-dependent operations. The Coq formalization proves semantic soundness: if the extracted spec cannot step to error then neither can the imperative program. Applied to an IPSec mbox implementation, the tool typechecks most functions, fails on four low-level ones, and lets the authors prove seven specs while also uncovering null-check and array-index bugs.
AI-written summary · about
chapters (4)
related talks
15mTowards Verifying Crash Consistency
17mModular Verification of Safe Memory Reclamation in Concurrent Separation Logic
23mSpecifying and Verifying Future Conditions
17mCode-Specify-Test-Debug-Prove: Flexibly Integrating Separation Logic Specification into(…)
19mPredictable Verification using Intrinsic Definitions
20mThrust: A Prophecy-Based Refinement Type System for Rust
18mSemantic-Type-Guided Bug Finding
15mGradual Verification of Recursive Heap Data Structures
