Refinement through restraint: bringing down the cost of verification
Open Access
- 4 September 2016
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 89-102
Abstract
We present a framework aimed at significantly reducing the cost of verifying certain classes of systems software, such as file systems. Our framework allows for equational reasoning about systems code written in our new language, Cogent. Cogent is a restricted, polymorphic, higher-order, and purely functional language with linear types and without the need for a trusted runtime or garbage collector. Linear types allow us to assign two semantics to the language: one imperative, suitable for efficient C code generation; and one functional, suitable for equational reasoning and verification. As Cogent is a restricted language, it is designed to easily interoperate with existing C functions and to connect to existing C verification frameworks. Our framework is based on certifying compilation: For a well-typed Cogent program, our compiler produces C code, a high-level shallow embedding of its semantics in Isabelle/HOL, and a proof that the C code correctly refines this embedding. Thus one can reason about the full semantics of real-world systems code productively and equationally, while retaining the interoperability and leanness of C. The compiler certificate is a series of language-level proofs and per-program translation validation phases, combined into one coherent top-level theorem in Isabelle/HOL.Keywords
Funding Information
- DARPA (FA8750-12-9-0179)
This publication has 36 references indexed in Scilit:
- Bridging the Gap: Automatic Verified Abstraction of C2012
- Formal verification of a realistic compilerCommunications of the ACM, 2009
- Secure Microkernels, State Monads and Scalable Refinement2008
- Formal certification of a compiler back-end orACM SIGPLAN Notices, 2006
- A step-indexed model of substructural stateACM SIGPLAN Notices, 2005
- Linear Types for Packet ProcessingLecture Notes in Computer Science, 2004
- Adoption and focusACM SIGPLAN Notices, 2002
- Enforcing high-level protocols in low-level softwareACM SIGPLAN Notices, 2001
- A Type System for Bounded Space and Functional In-Place Update—Extended AbstractLecture Notes in Computer Science, 2000
- Reasoning about programs in continuation-passing style.ACM SIGPLAN Lisp Pointers, 1992