Model checking recursive programs interacting via the heap

被引:1
|
作者
Asavoae, I. M. [2 ]
de Boer, F. [1 ,3 ]
Bonsangue, M. M. [1 ,3 ]
Lucanu, D. [2 ]
Rot, J. [1 ,3 ]
机构
[1] Leiden Inst Adv Comp Sci, Leiden, Netherlands
[2] Alexandru Ioan Cuza Univ, Fac Comp Sci, Iasi, Romania
[3] Ctr Wiskunde & Informat, Amsterdam, Netherlands
关键词
Heap manipulation; Pushdown system; Object-oriented program semantics; Model checking; VERIFICATION; AUTOMATA;
D O I
10.1016/j.scico.2014.09.009
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Almost all modern imperative programming languages include operations for dynamically manipulating the heap, for example by allocating and deallocating objects, and by updating reference fields. In the presence of recursive procedures and local variables, the interactions of a program with the heap can become rather complex, as an unbounded number of objects can be allocated either on the call stack using local variables, or, anonymously, on the heap using reference fields. As such, a static analysis for recursive programs with dynamic manipulation of the heap is, in general, undecidable. In this paper we study the verification of recursive programs with unbounded allocation of objects, in a simple imperative language with heap manipulation. We present a semantics for this language which is improved w.r.t. heap allocation, using an abstraction that is precise (i.e., bisimilar with the standard/concrete semantics). For any program with a bounded visible heap, meaning that the number of objects reachable from variables at any point of execution is bounded, this abstraction is a finitary representation of its behaviour, even though an unbounded number of objects can appear in the state. As a consequence, for such programs model checking is decidable. Finally, we introduce a specification language for heap-properties, and we discuss model checking of heap invariant properties against heap-manipulating programs. (C) 2014 Published by Elsevier B.V.
引用
收藏
页码:61 / 83
页数:23
相关论文
共 50 条
  • [21] Model Checking of Recursive Probabilistic Systems
    Etessami, Kousha
    Yannakakis, Mihalis
    [J]. ACM TRANSACTIONS ON COMPUTATIONAL LOGIC, 2012, 13 (02)
  • [22] Automated verification of concurrent go programs via bounded model checking
    Dilley, Nicolas
    Lange, Julien
    [J]. AUTOMATED SOFTWARE ENGINEERING, 2023, 30 (02)
  • [23] Model Checking Sequential Software Programs Via Mixed Symbolic Analysis
    Yang, Zijiang
    Wang, Chao
    Gupta, Aarti
    Ivancic, Franjo
    [J]. ACM TRANSACTIONS ON DESIGN AUTOMATION OF ELECTRONIC SYSTEMS, 2009, 14 (01)
  • [24] Automated verification of concurrent go programs via bounded model checking
    Nicolas Dilley
    Julien Lange
    [J]. Automated Software Engineering, 2023, 30
  • [25] Lazy model checking for recursive state machines
    Dubslaff, Clemens
    Wienhoeft, Patrick
    Fehnker, Ansgar
    [J]. SOFTWARE AND SYSTEMS MODELING, 2024, 23 (02): : 369 - 401
  • [26] Lazy model checking for recursive state machines
    Clemens Dubslaff
    Patrick Wienhöft
    Ansgar Fehnker
    [J]. Software and Systems Modeling, 2024, 23 : 369 - 401
  • [27] Abstract Model Checking of tccp programs
    Alpuente, MarIa
    Gallardo, MarIa Del Mar
    Pimentel, Ernesto
    Villanueva, Alicia
    [J]. ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2005, 112 : 19 - 36
  • [28] Bounded Model Checking for Probabilistic Programs
    Jansen, Nils
    Dehnert, Christian
    Kaminski, Benjamin Lucien
    Katoen, Joost-Pieter
    Westhofen, Lukas
    [J]. AUTOMATED TECHNOLOGY FOR VERIFICATION AND ANALYSIS, ATVA 2016, 2016, 9938 : 68 - 85
  • [29] Heuristics for model checking Java programs
    Groce A.
    Visser W.
    [J]. International Journal on Software Tools for Technology Transfer, 2004, 6 (04) : 260 - 276
  • [30] Bounded model checking of concurrent programs
    Rabinovitz, I
    Grumberg, O
    [J]. COMPUTER AIDED VERIFICATION, PROCEEDINGS, 2005, 3576 : 82 - 97