Symbolic Execution Proofs for Higher Order Store Programs

被引:0
|
作者
Reus, Bernhard [1 ]
Charlton, Nathaniel [1 ]
Horsfall, Ben [1 ]
机构
[1] Univ Sussex, Dept Informat, Brighton, E Sussex, England
基金
英国工程与自然科学研究理事会;
关键词
Program verification; Higher order store; Recursion through the store; Separation logic; Automated verification; AUTOMATED VERIFICATION; SEPARATION LOGIC; SHAPE-ANALYSIS; FOUNDATION;
D O I
10.1007/s10817-014-9319-8
中图分类号
TP18 [人工智能理论];
学科分类号
081104 ; 0812 ; 0835 ; 1405 ;
摘要
Higher order store programs are programs which store, manipulate and invoke code at runtime. Important examples of higher order store programs include operating system kernels which dynamically load and unload kernel modules. Yet conventional Hoare logics, which provide no means of representing changes to code at runtime, are not applicable to such programs. Recently, however, new logics using nested Hoare triples have addressed this shortcoming. In this paper we describe, from top to bottom, a sound semi-automated verification system for higher order store programs. We give a programming language with higher order store features, define an assertion language with nested triples for specifying such programs, and provide reasoning rules for proving programs correct. We then present in full our algorithms for automatically constructing correctness proofs. In contrast to earlier work, the language also includes ordinary (fixed) procedures and mutable local variables, making it easy to model programs which perform dynamic loading and other higher order store operations. We give an operational semantics for programs and a step-indexed interpretation of assertions, and use these to show soundness of our reasoning rules, which include a deep frame rule which allows more modular proofs. Our automated reasoning algorithms include a scheme for separation logic based symbolic execution of programs, and automated provers for solving various kinds of entailment problems. The latter are presented in the form of sets of derived proof rules which are constrained enough to be read as a proof search algorithm.
引用
收藏
页码:199 / 284
页数:86
相关论文
共 50 条
  • [21] A review about symbolic execution of computer programs
    Una revisión sobre la ejecución simbólica de programas computacionales
    1600, Centro de Informacion Tecnologica (25):
  • [22] Symbooglix: A Symbolic Execution Engine for Boogie Programs
    Liew, Daniel
    Cadar, Cristian
    Donaldson, Alastair F.
    2016 9TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION (ICST), 2016, : 45 - 56
  • [23] Programs from Proofs: A Framework for the Safe Execution of Untrusted Software
    Jakobs, Marie-Christine
    Wehrheim, Heike
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2017, 39 (02):
  • [24] Dynamic Symbolic Execution Tool for Python']Python Programs
    Ding, Xuefeng
    Huang, Wanyu
    Liu, Ying
    Chen Wantao
    Ding Xuyang
    2016 INTERNATIONAL CONFERENCE ON INTELLIGENT TRANSPORTATION, BIG DATA & SMART CITY (ICITBS), 2017, : 212 - 217
  • [25] A Formal Model for Detecting Bugs by Symbolic Execution of Programs
    Gerasimov, A. Yu.
    Kuts, D. O.
    Novikov, A. A.
    PROGRAMMING AND COMPUTER SOFTWARE, 2020, 46 (08) : 731 - 736
  • [26] Loop Extended Symbolic Execution on List Manipulating Programs
    Li, Renjian
    Wang, Zhaofei
    Dong, Longming
    MECHANICAL AND ELECTRONICS ENGINEERING III, PTS 1-5, 2012, 130-134 : 3010 - 3014
  • [27] Proving Termination of Programs with Bitvector Arithmetic by Symbolic Execution
    Hensel, Jera
    Giesl, Juergen
    Frohn, Florian
    Stroeder, Thomas
    SOFTWARE ENGINEERING AND FORMAL METHODS: 14TH INTERNATIONAL CONFERENCE, SEFM 2016, 2016, 9763 : 234 - 252
  • [28] A Formal Model for Detecting Bugs by Symbolic Execution of Programs
    A. Yu. Gerasimov
    D. O. Kuts
    A. A. Novikov
    Programming and Computer Software, 2020, 46 : 731 - 736
  • [29] VALIDATION OF CONCURRENT ADA PROGRAMS USING SYMBOLIC EXECUTION
    MORASCA, S
    PEZZE, M
    LECTURE NOTES IN COMPUTER SCIENCE, 1989, 387 : 467 - 486
  • [30] USING SYMBOLIC EXECUTION FOR VERIFICATION OF ADA TASKING PROGRAMS
    DILLON, LK
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1990, 12 (04): : 643 - 669