Verification-Preserving Inlining in Automatic Separation Logic Verifiers

被引:1
|
作者
Dardinier, Thibault [1 ]
Parthasarathy, Gaurav [1 ]
Mueller, Peter [1 ]
机构
[1] Swiss Fed Inst Technol, Dept Comp Sci, Zurich, Switzerland
来源
基金
瑞士国家科学基金会;
关键词
Modular Verification; Bounded Verification; Inlining; Loop Unrolling; CHECKING;
D O I
10.1145/3586054
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Bounded verification has proved useful to detect bugs and to increase confidence in the correctness of a program. In contrast to unbounded verification, reasoning about calls via (bounded) inlining and about loops via (bounded) unrolling does not require method specifications and loop invariants and, therefore, reduces the annotation overhead to the bare minimum, namely specifications of the properties to be verified. For verifiers based on traditional program logics, verification is preserved by inlining (and unrolling): successful unbounded verification of a program w.r.t. some annotation implies successful verification of the inlined program. That is, any error detected in the inlined program reveals a true error in the original program. However, this essential property might not hold for automatic separation logic verifiers such as Caper, GRASShopper, RefinedC, Steel, VeriFast, and verifiers based on Viper. In this setting, inlining generally changes the resources owned by method executions, which may affect automatic proof search algorithms and introduce spurious errors. In this paper, we present the first technique for verification-preserving inlining in automatic separation logic verifiers. We identify a semantic condition on programs and prove in Isabelle/HOL that it ensures verification-preserving inlining for state-of-the-art automatic separation logic verifiers. We also prove a dual result: successful verification of the inlined program ensures that there are method and loop annotations that enable the verification of the original program for bounded executions. To check our semantic condition automatically, we present two approximations that can be checked syntactically and with a program verifier, respectively. We implement these checks in Viper and demonstrate that they are effective for non-trivial examples from different verifiers.
引用
收藏
页数:30
相关论文
共 50 条
  • [31] Automatic Verification for Secrecy of Cryptographic Protocols in First-Order Logic
    Han, Jihong
    Zhou, Zhiyong
    Wang, Yadi
    INTERNATIONAL JOURNAL OF DISTRIBUTED SENSOR NETWORKS, 2009, 5 (01): : 14 - 14
  • [32] Automatic Verification of Composite Web Services Based on Temporal and Epistemic Logic
    Luo, Xiangyu
    Tan, Zheng
    Dong, Rongsheng
    THIRD INTERNATIONAL CONFERENCE ON GENETIC AND EVOLUTIONARY COMPUTING, 2009, : 693 - 696
  • [33] AUTOMATIC VERIFICATION OF SEQUENTIAL CONTROL-SYSTEMS USING TEMPORAL LOGIC
    MOON, I
    POWERS, GJ
    BURCH, JR
    CLARKE, EM
    AICHE JOURNAL, 1992, 38 (01) : 67 - 75
  • [34] Acceptance testing and verification of automatic brightness control logic of a fluoroscopic system
    Lin, P.
    MEDICAL PHYSICS, 2006, 33 (06) : 2007 - 2007
  • [35] Automatic verification for secrecy of cryptographic protocols in first-order logic
    Han, Jihong
    Zhou, Zhiyong
    Wang, Yadi
    INTERNATIONAL SYMPOSIUM ON ADVANCES IN COMPUTER AND SENSOR NETWORKS AND SYSTEMS, PROCEEDINGS: IN CELEBRATION OF 60TH BIRTHDAY OF PROF. S. SITHARAMA IYENGAR FOR HIS CONTRIBUTIONS TO THE SCIENCE OF COMPUTING, 2008, : 75 - 80
  • [36] Automatic Cyclic Termination Proofs for Recursive Procedures in Separation Logic
    Rowe, Reuben N. S.
    Brotherston, James
    PROCEEDINGS OF THE 6TH ACM SIGPLAN CONFERENCE ON CERTIFIED PROGRAMS AND PROOFS, CPP'17, 2017, : 53 - 65
  • [37] Formal verification of the heap manager of an operating system using separation logic
    Marti, Nicolas
    Affeldt, Reynald
    Yonezawa, Akinori
    FORMAL METHODS AND SOFTWARE ENGINEERING, PROCEEDINGS, 2006, 4260 : 400 - +
  • [38] Formal verification of the heap manager of an operating system using separation logic
    Marti, Nicolas
    Affeldt, Reynald
    Yonezawa, Akinori
    Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 2006, 4260 LNCS : 400 - 419
  • [39] Mechanical verification of recursive procedures manipulating pointers using separation logic
    Preoteasa, Viorel
    FM 2006: FORMAL METHODS, PROCEEDINGS, 2006, 4085 : 508 - 523
  • [40] Modular Verification of Termination and Execution Time Bounds Using Separation Logic
    Hamin, Jafar
    Jacobs, Bart
    PROCEEDINGS OF 2016 IEEE 17TH INTERNATIONAL CONFERENCE ON INFORMATION REUSE AND INTEGRATION (IEEE IRI), 2016, : 110 - 117