FreeSpec: Specifying, Verifying, and Executing Impure Computations in Coq

被引:6
作者
Letan, Thomas [1 ]
Regis-Gianas, Yann [2 ,3 ]
机构
[1] French Cybersecur Agcy ANSSI, Software Secur Lab, Paris, France
[2] Univ Paris, IRIF PPS, Paris, France
[3] Inria Paris Rocquencourt, PiR2, Paris, France
来源
CPP '20: PROCEEDINGS OF THE 9TH ACM SIGPLAN INTERNATIONAL CONFERENCE ON CERTIFIED PROGRAMS AND PROOFS | 2020年
关键词
certified programs; certified libraries; Coq; framework; proof automation; SPECIFICATION; VERIFICATION;
D O I
10.1145/3372885.3373812
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
FreeSpec is a framework for the Coq theorem prover which allows for specifying and verifying complex systems as hierarchies of components verified both in isolation and in composition. While FreeSpec was originally introduced for reasoning about hardware architectures, in this article we propose a novel iteration of FreeSpec formalism specifically designed to write certified programs and libraries. Then, we present in depth how we use this formalism to verify a static files webserver. We use this opportunity to present FreeSpec proof automation tactics, and to demonstrate how they successfully erase FreeSpec internal definitions to let users focus on the core of their proofs. Finally, we introduce FreeSpec.Exec, a plugin for Coq to seamlessly execute certified programs written with FreeSpec.
引用
收藏
页码:32 / 46
页数:15
相关论文
共 35 条
  • [1] Towards Certified Meta-Programming with Typed TEMPLATE-COQ
    Anand, Abhishek
    Boulier, Simon
    Cohen, Cyril
    Sozeau, Matthieu
    Tabareau, Nicolas
    [J]. INTERACTIVE THEOREM PROVING, ITP 2018, 2018, 10895 : 20 - 38
  • [2] [Anonymous], 2005, B BOOK ASSIGNING PRO
  • [3] Specification and Verification: The Spec# Experience
    Barnett, Mike
    Faehndrich, Manuel
    Leino, K. Rustan M.
    Mueller, Peter
    Schulte, Wolfram
    Venter, Herman
    [J]. COMMUNICATIONS OF THE ACM, 2011, 54 (06) : 81 - 91
  • [4] Programming with algebraic effects and handlers
    Bauer, Andrej
    Pretnar, Matija
    [J]. JOURNAL OF LOGICAL AND ALGEBRAIC METHODS IN PROGRAMMING, 2015, 84 (01) : 108 - 123
  • [5] Brady E, 2014, GROUND ECOL ISS PHIL, P188
  • [6] Chargueraud A, 2011, ICFP 11 - PROCEEDINGS OF THE 2011 ACM SIGPLAN: INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING, P418
  • [7] Choi J, 2017, P ACM PROGRAM LANG, V1, DOI 10.1145/3110268
  • [8] Verifying Effectful Haskell Programs in Coq
    Christiansen, Jan
    Dylus, Sandra
    Bunkenburg, Niels
    [J]. PROCEEDINGS OF THE 12TH ACM SIGPLAN INTERNATIONAL SYMPOSIUM ON HASKELL (HASKELL '19), 2019, : 125 - 138
  • [9] Mechanical verification of interactive programs specified by use cases
    Claret, Guillaume
    Regis-Gianas, Yann
    [J]. 2015 IEEE/ACM 3RD FME WORKSHOP ON FORMAL METHODS IN SOFTWARE ENGINEERING, 2015, : 61 - 67
  • [10] DeRemer F., 1976, IEEE Transactions on Software Engineering, VSE-2, P80, DOI 10.1109/TSE.1976.233534