SYMBAD: A SYMBOLIC EXECUTOR OF SEQUENTIAL ADA PROGRAMS

Abstract Among existing techniques used to improve software reliability symbolic execution plays an important role. Symbolic testing is potentially more effective than numeric testing, since a symbolic execution represents a class of numeric executions. Symbolic execution can also be used to generate the necessary verification conditions that ensure program (partial) correctness, by adding to the program first order predicates describing its logical properties. Several tools have been built to provide environments in which symbolic execution can be performed. However all of these tools are quite unsatisfactory when dealing with programs that use arrays and/or pointers. In this paper we present a tool (SYMBAD) that provides an environment in which it is possible to perform both symbolic testing and verification on sequential Ada components. Furthermore SYMBAD can be used to find out which restrictions must be placed on input variables of a program in order to execute a particular path. SYMBAD has been designed and implemented at Dipartimento di Elettronica of Politecnico di Milano; it runs under Unix operating system and it is written in C and Lisp. The main SYMBAD features are presented; problems encountered in dealing with arrays and pointers and the adopted solutions are discussed; finally an example of a SYMBAD session is reported.

[1]  Richard A. Kemmerer,et al.  Unisex: A unix‐based symbolic executor for pascal , 1985, Softw. Pract. Exp..

[2]  William E. Howden,et al.  Symbolic Testing and the DISSECT Symbolic Evaluation System , 1977, IEEE Transactions on Software Engineering.

[3]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.