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

被引:10
|
作者
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
基金
欧洲研究理事会; 美国国家科学基金会;
关键词
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
相关论文
共 7 条
  • [1] SteelCore: An Extensible Concurrent Separation Logic for Effectful Dependently Typed Programs
    Swamy, Nikhil
    Rastogi, Aseem
    Fromherz, Aymeric
    Merigoux, Denis
    Ahman, Danel
    Martinez, Guido
    [J]. PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2020, 4 (ICFP):
  • [2] Intuitionistic Ancestral Logic as a Dependently Typed Abstract Programming Language
    Cohen, Liron
    Constable, Robert L.
    [J]. LOGIC, LANGUAGE, INFORMATION, AND COMPUTATION, WOLLIC 2015, 2015, 9160 : 14 - 26
  • [3] A proof outline logic for object-oriented programming
    Pierik, C
    de Boer, FS
    [J]. THEORETICAL COMPUTER SCIENCE, 2005, 343 (03) : 413 - 442
  • [4] Separation logic for object-oriented programming
    [J]. Parkinson, M. (mattpark@microsoft.com), 1600, Springer Verlag (7850):
  • [5] Clear separation and combination of synchronization constraint for concurrent object oriented programming
    Yasutake, Y
    Masuyama, Y
    Oda, K
    Yoshida, T
    [J]. AINA 2003: 17TH INTERNATIONAL CONFERENCE ON ADVANCED INFORMATION NETWORKING AND APPLICATIONS, 2003, : 671 - 676
  • [6] Development of Concurrent Object-Oriented Logic Programming Platform for the Intelligent Monitoring of Anomalous Human Activities
    Morozov, Alexei A.
    Vaish, Abhishek
    Polupanov, Alexander F.
    Antciperov, Vyacheslav E.
    Lychkov, Igor I.
    Alfimtsev, Aleksandr N.
    Deviatkov, Vladimir V.
    [J]. BIOMEDICAL ENGINEERING SYSTEMS AND TECHNOLOGIES, BIOSTEC 2014, 2015, 511 : 82 - 97
  • [7] Constraint-Logic Object-Oriented Programming with Free Arrays of Reference-Typed Elements via Symbolic Aliasing
    Winkelmann, Hendrik
    Kuchen, Herbert
    [J]. PROCEEDINGS OF THE 18TH INTERNATIONAL CONFERENCE ON EVALUATION OF NOVEL APPROACHES TO SOFTWARE ENGINEERING, ENASE 2023, 2023, : 412 - 419