Introduction to algorithms
Computers and Artificial Intelligence - Special issue on formal languages, Boolean functions and complexity
The pointer assertion logic engine
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
ICALP '95 Proceedings of the 22nd International Colloquium on Automata, Languages and Programming
Reachability Analysis of Pushdown Automata: Application to Model-Checking
CONCUR '97 Proceedings of the 8th International Conference on Concurrency Theory
STOC '04 Proceedings of the thirty-sixth annual ACM symposium on Theory of computing
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tree automata with one memory set constraints and cryptographic protocols
Theoretical Computer Science - Automata, languages and programming
LFCS '07 Proceedings of the international symposium on Logical Foundations of Computer Science
Tree automata with memory, visibility and structural constraints
FOSSACS'07 Proceedings of the 10th international conference on Foundations of software science and computational structures
An overview of the Jahob analysis system: project goals and current status
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Abstract regular tree model checking of complex dynamic data structures
SAS'06 Proceedings of the 13th international conference on Static Analysis
FCT'07 Proceedings of the 16th international conference on Fundamentals of Computation Theory
An efficient and secure approach for a cloud collaborative editing
Journal of Network and Computer Applications
Hi-index | 0.00 |
This paper describes an effective verification procedure for imperative programs that handle (balanced) tree-like data structures. Since the verification problem considered is undecidable, we appeal to a classical semi-algorithmic approach in which the user has to provide manually the loop invariants in order to check the validity of Hoare triples of the form {P}C{Q}, where P, Q are the sets of states corresponding to the pre- and post-conditions, and C is the program to be verified. We specify the sets of states (representing tree-like memory configurations) using a special class of tree automata named Tree Automata with Size Constraints (TASC). The main advantage of using TASC in program specifications is that they recognize non-regular sets of tree languages such as the AVL trees, the red-black trees, and in general, specifications involving arithmetic reasoning about the lengths (depths) of various (possibly all) paths in the tree. The class of TASC is closed under the operations of union, intersection and complement, and moreover, the emptiness problem is decidable, which makes it a practical verification tool. We validate our approach considering red-black trees and the insertion procedure, for which we verify that the output of the insertion algorithm is a balanced red-black tree, i.e. the longest path is at most twice as long as the shortest path.