2009 · 93 citations · 20 references
ComputingComputer ScienceData StructuresFormal MethodsProgramming LanguagesHoare LogicInteractive Proof SystemsProof AssistantsTheorem ProvingType CheckingType SystemsCoqHigher-order LogicProgram VerificationProof AutomationRecursive Program VerificationSeparation LogicSimplificationType Theory
We present a new approach for constructing and verifying higher-order, imperative programs using the Coq proof assistant. We build on the past work on the Ynot system, which is based on Hoare Type Theory. That original system was a proof of concept, where every program verification was accomplished via laborious manual proofs, with much code devoted to uninteresting low-level details. In this paper, we present a re-implementation of Ynot which makes it possible to implement fully-verified, higher-order imperative programs with reasonable proof burden. At the same time, our new system is implemented entirely in Coq source files, showcasing the versatility of that proof assistant as a platform for research on language design and verification. Both versions of the system have been evaluated with case studies in the verification of imperative data structures, such as hash tables with higher-order iterators. The verification burden in our new system is reduced by at least an order of magnitude compared to the old system, by replacing manual proof with automation. The core of the automation is a simplification procedure for implications in higher-order separation logic, with hooks that allow programmers to add domain-specific simplification rules.
20
Separation logic: a logic for shared mutable data structures
John Reynolds · 2003 · 2.2K citations
Extended static checking for Java
Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge et al. · 2002 · 1.3K citations
Formal certification of a compiler back-end or
Xavier Leroy · 2006 · 652 citations
Bryan Ford · 2004 · 409 citations
Computing, Computer Science, Natural Language Processing +16