Modular Reasoning about Heap Paths via Effectively Propositional Formulas

被引:17
|
作者
Itzhaky, Shachar [1 ]
Banerjee, Anindya [2 ]
Immerman, Neil [3 ]
Lahav, Ori [1 ]
Nanevski, Aleksandar [2 ]
Sagiv, Mooly [1 ]
机构
[1] Tel Aviv Univ, IL-69978 Tel Aviv, Israel
[2] IMDEA Software Inst, Madrid, Spain
[3] Univ Massachusetts, Amherst, MA USA
关键词
linked list; SMT; verification; INTERPROCEDURAL SHAPE-ANALYSIS; VERIFICATION; LOGIC;
D O I
10.1145/2535838.2535854
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
First order logic with transitive closure, and separation logic enable elegant interactive verification of heap-manipulating programs. However, undecidabilty results and high asymptotic complexity of checking validity preclude complete automatic verification of such programs, even when loop invariants and procedure contracts are specified as formulas in these logics. This paper tackles the problem of procedure-modular verification of reachability properties of heap-manipulating programs using efficient decision procedures that are complete: that is, a SAT solver must generate a counterexample whenever a program does not satisfy its specification. By (a) requiring each procedure modifies a fixed set of heap partitions and creates a bounded amount of heap sharing, and (b) restricting program contracts and loop invariants to use only deterministic paths in the heap, we show that heap reachability updates can be described in a simple manner. The restrictions force program specifications and verification conditions to lie within a fragment of first-order logic with transitive closure that is reducible to effectively propositional logic, and hence facilitate sound, complete and efficient verification. We implemented a tool atop Z3 and report on preliminary experiments that establish the correctness of several programs that manipulate linked data structures.
引用
收藏
页码:385 / 396
页数:12
相关论文
共 50 条
  • [1] Propositional Reasoning about Safety and Termination of Heap-Manipulating Programs
    David, Cristina
    Kroening, Daniel
    Lewis, Matt
    [J]. PROGRAMMING LANGUAGES AND SYSTEMS, 2015, 9032 : 661 - 684
  • [2] Reasoning About Inconsistent Formulas
    Marques-Silva, Joao
    Mencia, Carlos
    [J]. PROCEEDINGS OF THE TWENTY-NINTH INTERNATIONAL JOINT CONFERENCE ON ARTIFICIAL INTELLIGENCE, 2020, : 4899 - 4906
  • [3] PROPOSITIONAL LOGICS FOR THE REASONING ABOUT KNOWLEDGE INTEGRATIONS
    Bab, Sebastian
    [J]. ICAART: PROCEEDINGS OF THE 4TH INTERNATIONAL CONFERENCE ON AGENTS AND ARTIFICIAL INTELLIGENCE, VOL 1, 2012, : 36 - 45
  • [4] Propositional PSPACE reasoning with boolean programs versus quantified Boolean formulas
    Skelley, A
    [J]. AUTOMATA , LANGUAGES AND PROGRAMMING, PROCEEDINGS, 2004, 3142 : 1163 - 1175
  • [5] Reasoning about the Garden of Forking Paths
    Li, Yao
    Xia, Li-yao
    Weirich, Stephanie
    [J]. PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2021, 5
  • [6] Superposition Reasoning about Quantified Bitvector Formulas
    Damestani, David
    Kovacs, Laura
    Suda, Martin
    [J]. 2019 21ST INTERNATIONAL SYMPOSIUM ON SYMBOLIC AND NUMERIC ALGORITHMS FOR SCIENTIFIC COMPUTING (SYNASC 2019), 2020, : 95 - 99
  • [7] Representing paraconsistent reasoning via quantified propositional logic
    Besnard, P
    Schaub, T
    Tompits, H
    Woltran, S
    [J]. INCONSISTENCY TOLERANCE, 2004, 3300 : 84 - 118
  • [8] A Classical Propositional Logic for Reasoning About Reversible Logic Circuits
    Axelsen, Holger Bock
    Gluck, Robert
    Kaarsgaard, Robin
    [J]. LOGIC, LANGUAGE, INFORMATION, AND COMPUTATION, 2016, 9803 : 52 - 67
  • [9] REASONING ABOUT CERTAINTY AND UNCERTAINTY IN CONCRETE, CAUSAL, AND PROPOSITIONAL CONTEXTS
    BYRNES, JP
    OVERTON, WF
    [J]. DEVELOPMENTAL PSYCHOLOGY, 1986, 22 (06) : 793 - 799
  • [10] Meta-propositional reasoning about the truth or falsity of propositions
    Schroyens, W
    [J]. PSYCHOLOGICA BELGICA, 1997, 37 (04) : 219 - 247