It is pointless to point in bounded heaps

We model a program with recursive procedure, local variables dynamic allocation and deallocation.We give an abstraction of the memory model that is precise and finitary.we show that adding pointer fields does not add any expressiveness if heaps are bounded. In this paper we introduce a new symbolic semantics for a class of recursive programs which feature dynamic creation and unbounded allocation of objects. We use a symbolic representation of the program state in terms of equations to model the semantics of a program as a pushdown system with a finite set of control states and a finite stack alphabet. Our main technical result is a rigorous proof of the equivalence between the concrete and the symbolic semantics.Adding pointer fields gives rise to a Turing complete language. However, under the assumption that the number of reachable objects in the visible heap is bounded in all the computations of a program with pointers, we show how to construct a program without pointers that simulates it. Consequently, in the context of bounded visible heaps, programs with pointers are no more expressive than programs without them.We conclude by extending programs with a dynamic deallocation statement, an operation that affects all aliases of a deallocated object. We show how to extend the concrete and the symbolic semantics so to retain the previous equivalence result.

[1]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[2]  Frank S. de Boer,et al.  Interacting via the Heap in the Presence of Recursion , 2012, ICE.

[3]  Marvin Minsky,et al.  Computation : finite and infinite machines , 2016 .

[4]  Parosh Aziz Abdulla,et al.  Dense-Timed Pushdown Automata , 2012, 2012 27th Annual IEEE Symposium on Logic in Computer Science.

[5]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[6]  David L. Dill,et al.  Java model checking , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[7]  Joost-Pieter Katoen,et al.  Who is Pointing When to Whom? , 2004, FSTTCS.

[8]  Frank S. de Boer,et al.  Unbounded Allocation in Bounded Heaps , 2013, FSEN.

[9]  Radu Iosif,et al.  A deadlock detection tool for concurrent Java programs , 1999, Softw. Pract. Exp..

[10]  Ahmed Bouajjani,et al.  Context-Bounded Analysis of Multithreaded Programs with Dynamic Linked Structures , 2007, CAV.

[11]  Javier Esparza,et al.  A BDD-Based Model Checker for Recursive Programs , 2001, CAV.

[12]  Joost-Pieter Katoen,et al.  Who is Pointing When to Whom? On the Automated Verification of Linked List Structures , 2004 .

[13]  Parosh Aziz Abdulla,et al.  Push-Down Automata with Gap-Order Constraints , 2013, FSEN.

[14]  Marco Pistore,et al.  History-Dependent Automata: An Introduction , 2005, SFM.

[15]  Javier Esparza,et al.  Reachability Analysis of Pushdown Automata: Application to Model-Checking , 1997, CONCUR.

[16]  Joost-Pieter Katoen,et al.  Model Checking Birth and Death , 2002, IFIP TCS.

[17]  Frank S. de Boer,et al.  Model checking recursive programs interacting via the heap , 2015, Sci. Comput. Program..