Steel: Proof-Oriented Programming in a Dependently Typed Concurrent Separation Logic

被引:12
作者
Fromherz, Aymeric [1 ]
Rastogi, Aseem [2 ]
Swamy, Nikhil [3 ]
Gibson, Sydney [1 ]
Martinez, Guido [4 ]
Merigoux, Denis [5 ]
Ramananandro, Tahina [3 ]
机构
[1] Carnegie Mellon Univ, Pittsburgh, PA 15213 USA
[2] Microsoft Res, Bengaluru, Karnataka, India
[3] Microsoft Res, Redmond, WA USA
[4] Consejo Nacl Invest Cient & Tecn, CIFASIS, Buenos Aires, DF, Argentina
[5] Inria Paris, Paris, France
来源
PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL | 2021年 / 5卷
基金
欧洲研究理事会; 美国国家科学基金会;
关键词
Program Proofs; Separation Logic; Concurrency;
D O I
10.1145/3473590
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Steel is a language for developing and proving concurrent programs embedded in F*, a dependently typed programming language and proof assistant. Based on SteelCore, a concurrent separation logic (CSL) formalized in F*, our work focuses on exposing the proof rules of the logic in a form that enables programs and proofs to be effectively co-developed. Our main contributions include a new formulation of a Hoare logic of quintuples involving both separation logic and first-order logic, enabling efficient verification condition (VC) generation and proof discharge using a combination of tactics and SMT solving. We relate the VCs produced by our quintuple system to solving a system of associativity-commutativity (AC) unification constraints and develop tactics to (partially) solve these constraints using AC-matching modulo SMT-dischargeable equations. Our system is fully mechanized and implemented in F*. We evaluate it by developing several verified programs and libraries, including various sequential and concurrent linked data structures, proof libraries, and a library for 2-party session types. Our experience leads us to conclude that our system enables a mixture of automated and interactive proof, making it productive to build programs foundationally verified against a highly expressive, state-of-the-art CSL.
引用
收藏
页数:30
相关论文
共 37 条
[1]  
Appel AndrewW., 2011, P 20 EUR C PROGR LAN
[2]  
Berdine J, 2006, LECT NOTES COMPUT SC, V4111, P115
[3]  
Brady Edwin., 2016, Type-driven Development With Idris
[4]  
Chargueraud A, 2011, ICFP 11 - PROCEEDINGS OF THE 2011 ACM SIGPLAN: INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING, P418
[5]  
Chlipala Adam, 2011, MOSTLY AUTOMATED VER, DOI [10.1145/1993498.1993526, DOI 10.1145/1993498.1993526]
[6]   Z3: An efficient SMT solver [J].
de Moura, Leonardo ;
Bjorner, Nikolaj .
TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, 2008, 4963 :337-340
[7]   A metaprogramming framework for formal verification [J].
Ebner G. ;
Ullrich S. ;
Roesch J. ;
Avigad J. ;
De Moura L. .
Proceedings of the ACM on Programming Languages, 2017, 1 (ICFP)
[8]  
Garg, PROGRAMMING LANGUAGE
[9]  
Gonthier Georges, 2016, RR6455 INR SACL FRAN
[10]   Actris: Session-Type Based Reasoning in Separation Logic [J].
Hinrichsen, Jonas Kastberg ;
Bengtson, Jesper ;
Krebbers, Robbert .
PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2020, 4 (POPL)