Automated Lemma Synthesis in Symbolic-Heap Separation Logic

被引:16
|
作者
Ta, Quang-Trung [1 ]
Le, Ton Chanh [1 ]
Khoo, Siau-Cheng [1 ]
Chin, Wei-Ngan [1 ]
机构
[1] Natl Univ Singapore, Sch Comp, Singapore, Singapore
关键词
Separation logic; entailment proving; mathematical induction; structural induction; lemma synthesis; proof theory; automated reasoning;
D O I
10.1145/3158097
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The symbolic-heap fragment of separation logic has been actively developed and advocated for verifying the memory-safety property of computer programs. At present, one of its biggest challenges is to effectively prove entailments containing inductive heap predicates. These entailments are usually proof obligations generated when verifying programs that manipulate complex data structures like linked lists, trees, or graphs. To assist in proving such entailments, this paper introduces a lemma synthesis framework, which automatically discovers lemmas to serve as eureka steps in the proofs. Mathematical induction and template-based constraint solving are two pillars of our framework. To derive the supporting lemmas for a given entailment, the framework firstly identifies possible lemma templates from the entailment's heap structure. It then sets up unknown relations among each template's variables and conducts structural induction proof to generate constraints about these relations. Finally, it solves the constraints to find out actual definitions of the unknown relations, thus discovers the lemmas. We have integrated this framework into a prototype prover and have experimented it on various entailment benchmarks. The experimental results show that our lemma-synthesis-assisted prover can prove many entailments that could not be handled by existing techniques. This new proposal opens up more opportunities to automatically reason with complex inductive heap predicates.
引用
收藏
页数:29
相关论文
共 50 条
  • [1] Model Checking for Symbolic-Heap Separation Logic with Inductive Predicates
    Brotherston, James
    Gorogiannis, Nikos
    Kanovich, Max
    Rowe, Reuben
    ACM SIGPLAN NOTICES, 2016, 51 (01) : 84 - 96
  • [2] Unified Reasoning About Robustness Properties of Symbolic-Heap Separation Logic
    Jansen, Christina
    Katelaan, Jens
    Matheja, Christoph
    Noll, Thomas
    Zuleger, Florian
    PROGRAMMING LANGUAGES AND SYSTEMS (ESOP 2017): 26TH EUROPEAN SYMPOSIUM ON PROGRAMMING, 2017, 10201 : 611 - 638
  • [3] On Automated Lemma Generation for Separation Logic with Inductive Definitions
    Enea, Constantin
    Sighireanu, Mihaela
    Wu, Zhilin
    AUTOMATED TECHNOLOGY FOR VERIFICATION AND ANALYSIS, ATVA 2015, 2015, 9364 : 80 - 96
  • [4] Entailment is Undecidable for Symbolic Heap Separation Logic Formulae with Non-Established Inductive Rules
    Echenim, Mnacho
    Iosif, Radu
    Peltier, Nicolas
    INFORMATION PROCESSING LETTERS, 2022, 173
  • [5] Enhancing Symbolic Execution of Heap-Based Programs with Separation Logic for Test Input Generation
    Pham, Long H.
    Le, Quang Loc
    Phan, Quoc-Sang
    Sun, Jun
    Qin, Shengchao
    AUTOMATED TECHNOLOGY FOR VERIFICATION AND ANALYSIS (ATVA 2019), 2019, 11781 : 209 - 227
  • [6] Symbolic execution with separation logic
    Berdine, J
    Calcagno, C
    O'Hearn, PW
    PROGRAMMING LANGUAGES AND SYSTEMS, PROCEEDINGS, 2005, 3780 : 52 - 68
  • [7] Heap-Dependent Expressions in Separation Logic
    Smans, Jan
    Jacobs, Bart
    Piessens, Frank
    FORMAL TECHNIQUES FOR DISTRIBUTED SYSTEMS, PROCEEDINGS, 2010, 6117 : 170 - 185
  • [8] Modular Verification of Heap Reachability Properties in Separation Logic
    Ter-Gabrielyan, Arshavir
    Summers, Alexander J.
    Mueller, Peter
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2019, 3 (OOPSLA):
  • [9] Automatic Verification of Heap Manipulation Using Separation Logic
    Berdine, Josh
    SOFSEM 2009-THEORY AND PRACTICE OF COMPUTER SCIENCE, PROCEEDINGS, 2009, 5404 : 34 - 34
  • [10] A Separation Logic for Heap Space under Garbage Collection
    Madiot, Jean-Marie
    Pottier, Francois
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2022, 6