Array Representation in Symbolic Execution

Abstract Symbolic execution is a well known and powerful technique that allows to perform several activities as program testing, program formal verification, program specialization, etc. However, symbolic execution suffers from some problems which disable it to become a wide used technique. For instance, symbolic execution fails when dealing with indexed variables as arrarys, or dynamic data structures as pointers. In this paper we discuss the problem of symbolic execution of programs involving indexed variables by providing a formal definition of symbolic execution. From this starting point we present a practical technique of representing indexed variables that we argue to be more effective than other approaches found in literature. Finally, we present two examples of application of our technique. The former is an example of symbolic testing while the latter is a formal verification of a program.

[1]  Lori A. Clarke,et al.  A System to Generate Test Data and Symbolically Execute Programs , 1976, IEEE Transactions on Software Engineering.

[2]  Carlo Ghezzi,et al.  Software Specialization Via Symbolic Execution , 1991, IEEE Trans. Software Eng..

[3]  Carlo Ghezzi,et al.  Program Simplification via Symbolic Interpretation , 1985, FSTTCS.

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

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

[6]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

[7]  SIDNEY L. HANTLER,et al.  An Introduction to Proving the Correctness of Programs , 1976, CSUR.

[8]  Bogdan Korel,et al.  Automated Software Test Data Generation , 1990, IEEE Trans. Software Eng..

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

[10]  Michael J. C. Gordon,et al.  The Denotational Description of Programming Languages , 1979, Springer New York.

[11]  C. V. Ramamoorthy,et al.  On the Automated Generation of Program Test Data , 1976, IEEE Transactions on Software Engineering.

[12]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[13]  F. De Paoli,et al.  SYMBAD: A SYMBOLIC EXECUTOR OF SEQUENTIAL ADA PROGRAMS , 1990 .