Publication Date



Technical Report: UTEP-CS_98-6


Programs routinely use complicated pointer (linked list-type) data structures such as linked lists, doubly linked lists, different types of trees, etc. These data structures are usually defined {\it inductively}: e.g., a tree can be defined as a structure that results from an empty tree by an arbitrary sequence of adding and deleting elements.

When the program runs, these data structures take dynamically changing shapes. To test program correctness, it is important to check, at run-time, whether a current shape is a correct implementation of the corresponding structure. Algorithms are known for checking the ``shape correctness'' for basic pointer-based data structures such as linked list, binary tree, etc.

In this paper, we show that the general problem - verifying that a given shape is an instance of an inductively defined data structure - is algorithmically undecidable.