Mostly-Automated Verification of Low-Level Programs in Computational Separation Logic

被引:30
作者
Chlipala, Adam [1 ]
机构
[1] Harvard Univ, Cambridge, MA 02138 USA
关键词
Languages; Verification; interactive proof assistants; separation logic; low-level programming languages; functional programming;
D O I
10.1145/1993316.1993526
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Several recent projects have shown the feasibility of verifying low-level systems software. Verifications based on automated theorem-proving have omitted reasoning about first-class code pointers, which is critical for tasks like certifying implementations of threads and processes. Conversely, verifications that deal with first-class code pointers have featured long, complex, manual proofs. In this paper, we introduce the Bedrock framework, which supports mostly-automated proofs about programs with the full range of features needed to implement, e.g., language runtime systems. The heart of our approach is in mostly-automated discharge of verification conditions inspired by separation logic. Our take on separation logic is computational, in the sense that function specifications are usually written in terms of reference implementations in a purely functional language. Logical quantifiers are the most challenging feature for most automated verifiers; by relying on functional programs (written in the expressive language of the Coq proof assistant), we are able to avoid quantifiers almost entirely. This leads to some dramatic improvements compared to both past work in classical verification, which we compare against with implementations of data structures like binary search trees and hash tables; and past work in verified programming with code pointers, which we compare against with examples like function memoization and a cooperative threading library.
引用
收藏
页码:234 / 245
页数:12
相关论文
共 32 条
[21]  
McCreight Andrew, 2009, P TPHOLS
[22]  
Mehta Farhad, 2003, P CADE
[23]  
Nanevski A., 2008, P ICFP
[24]  
NI Z, 2006, P POPL
[25]  
Ni Zhaozhong, 2006, MODULAR VERIFICATION
[26]  
Ni Zhaozhong, 2007, P TPHOLS
[27]  
Paulson Lawrence C., 1994, J AUTOMATED REASONIN, V5
[28]  
Reynolds J.C., 2002, P LICS
[29]  
Sagiv Mooly, 2002, TOPLAS, V24, P2002
[30]  
Yang J., 2010, P PLDI