Live Verification in an Interactive Proof Assistant

被引:0
|
作者
Gruetter, Samuel [1 ]
Fukala, Viktor [1 ]
Chlipala, Adam [1 ]
机构
[1] MIT, Cambridge, MA 02139 USA
基金
美国国家科学基金会;
关键词
software verification; symbolic execution; interactive proof assistants;
D O I
10.1145/3656439
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We present a prototype for a tool that enables programmers to verify their code as they write it in real-time. After each line of code that the programmer writes, the tool tells the programmer whether it was able to prove absence of undefined behavior so far, and it displays a concise representation of the symbolic state of the program right after the added line. The user can then either write the next line of code, or if needed or desired, write a specially marked comment that provides hints on how to solve side conditions or on how to represent the symbolic state more nicely. Once the programmer has finished writing the program, it is already verified with a mathematical correctness proof. Other tools providing real-time feedback already exist, but ours is the first one that only relies on a small trusted proof checker and that provides a concise summary of the symbolic state at the point in the program currently being edited, as opposed to only indicating whether user-stated assertions or postconditions hold. Program verification requires loop invariants, which are hard to find and tedious to spell out. We explore a middle ground in the design space between the two extremes of requiring users to spell out loop invariants manually and attempting to infer loop invariants automatically: Since a loop invariant often looks quite similar to the symbolic state right before the loop, our tool asks the user to express the desired loop invariant as a diff from the symbolic state before the loop, which has the potential to lead to shorter, more maintainable proofs. We prototyped our technique in the interactive proof assistant Coq, so our framework creates machine-checked proofs that the developed functions satisfy their specifications when executed according to the formal semantics of the source language. Using a verified compiler proven against the same source-language semantics, we can ensure that the behavior of the compiled program matches the program's behavior as represented by the framework during the proof. Additionally, since our polyglot source files can be viewed as Coq or C files at the same time, users willing to accept a larger trusted code base can compile them with GCC.
引用
收藏
页数:24
相关论文
共 50 条
  • [41] Quantomatic: A Proof Assistant for Diagrammatic Reasoning
    Kissinger, Aleks
    Zamdzhiev, Vladimir
    AUTOMATED DEDUCTION - CADE-25, 2015, 9195 : 326 - 336
  • [42] Interactive Proof Systems
    Goldreich, Oded
    FOUNDATIONS AND TRENDS IN THEORETICAL COMPUTER SCIENCE, 2007, 3 (01): : 1 - +
  • [43] Interactive Proof Critics
    Dept. of Comp. and Elec. Engineering, Heriot-Watt University, Edinburgh, United Kingdom
    不详
    不详
    不详
    Formal Aspects Comput, 3 (302-325):
  • [44] A framework for interactive proof
    Aspinall, David
    Lueth, Christoph
    Wintersteini, Daniel
    TOWARDS MECHANIZED MATHEMATICAL ASSISTANTS, 2007, 4573 : 161 - +
  • [45] Slackliner - An Interactive Assistant for Slackline Training
    Kosmalla, Felix
    Wiehr, Frederik
    Murlowski, Christian
    Krueger, Antonio
    Daiber, Florian
    PROCEEDINGS OF THE 2017 ACM INTERNATIONAL JOINT CONFERENCE ON PERVASIVE AND UBIQUITOUS COMPUTING AND PROCEEDINGS OF THE 2017 ACM INTERNATIONAL SYMPOSIUM ON WEARABLE COMPUTERS (UBICOMP/ISWC '17 ADJUNCT), 2017, : 1056 - 1061
  • [46] Slackliner - An Interactive Slackline Training Assistant
    Kosmalla, Felix
    Murlowski, Christian
    Daiber, Florian
    Krueger, Antonio
    PROCEEDINGS OF THE 2018 ACM MULTIMEDIA CONFERENCE (MM'18), 2018, : 154 - 162
  • [47] Interactive Assistant for Activities of Daily Living
    Vergnes, Denis
    Giroux, Sylvain
    Chamberland-Tremblay, Daniel
    FROM SMART HOMES TO SMART CARE, 2005, 15 : 229 - 236
  • [48] Formal proof of provable security by game-playing in a proof assistant
    Affeldt, Reynald
    Tanaka, Miki
    Marti, Nicolas
    PROVABLE SECURITY, PROCEEDINGS, 2007, 4784 : 151 - +
  • [49] Interactive Runtime Verification - When Interactive Debugging meets Runtime Verification
    Jakse, Raphael
    Falcone, Ylies
    Mehaut, Jean-Francois
    Pouget, Kevin
    2017 IEEE 28TH INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING (ISSRE), 2017, : 182 - 193
  • [50] Foundational Extensible Corecursion A Proof Assistant Perspective
    Blanchette, Jasmin Christian
    Popescu, Andrei
    Traytel, Dmitriy
    PROCEEDINGS OF THE 20TH ACM SIGPLAN INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING (ICFP'15), 2015, : 192 - 204