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 条
  • [31] Model and Proof Generation for Heap-Manipulating Programs
    Brain, Martin
    David, Cristina
    Kroening, Daniel
    Schrammel, Peter
    [J]. PROGRAMMING LANGUAGES AND SYSTEMS, 2014, 8410 : 432 - 452
  • [32] Model Checking Linear Programs with Arrays
    Armando, Alessandro
    Benerecetti, Massimo
    Mantovani, Jacopo
    [J]. ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2006, 144 (03) : 79 - 94
  • [33] Model Checking Parallel Programs with Inputs
    Barnat, Jiri
    Bauch, Petr
    Havel, Vojtech
    [J]. 2014 22ND EUROMICRO INTERNATIONAL CONFERENCE ON PARALLEL, DISTRIBUTED, AND NETWORK-BASED PROCESSING (PDP 2014), 2014, : 756 - 759
  • [34] Model checking nonblocking MPI programs
    Siegel, Stephen F.
    [J]. VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, PROCEEDINGS, 2007, 4349 : 44 - 58
  • [35] Autotuning Parallel Programs by Model Checking
    N. O. Garanina
    S. P. Gorlatch
    [J]. Automatic Control and Computer Sciences, 2022, 56 : 634 - 648
  • [36] Slicing concurrent programs for model checking
    Dong, Wei
    Wang, Ji
    Qi, Zhi-Chang
    [J]. Jisuanji Xuebao/Chinese Journal of Computers, 2003, 26 (03): : 266 - 274
  • [37] Bounded model checking of pointer programs
    Charatonik, W
    Georgieva, L
    Maier, P
    [J]. COMPUTER SCIENCE LOGIC, PROCEEDINGS, 2005, 3634 : 397 - 412
  • [38] Autotuning Parallel Programs by Model Checking
    Garanina, N. O.
    Gorlatch, S. P.
    [J]. AUTOMATIC CONTROL AND COMPUTER SCIENCES, 2022, 56 (07) : 634 - 648
  • [39] Exploiting heap symmetries in explicit-state model checking of software
    Iosif, R
    [J]. 16TH ANNUAL INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE 2001), PROCEEDINGS, 2001, : 254 - 261
  • [40] PARES - A Model for Parallel Recursive Programs
    Niculescu, Virginia
    [J]. ROMANIAN JOURNAL OF INFORMATION SCIENCE AND TECHNOLOGY, 2011, 14 (02): : 159 - 182