Array representation in symbolic execution

https://doi.org/10.1016/0096-0551(93)90025-VGet rights and content

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.

References (16)

  • A Coen-Porisini et al.

    Symbad: a symbolic executor of sequential Ada programs

  • L.A Clarke et al.

    Symbolic evaluations methods—implementations and applications

  • J.C King

    Symbolic execution and program testing

    Commun. ACM

    (1976)
  • L Clarke

    A System to generate test data and symbolically execute programs

    Trans. Softw. Engng.

    (1976)
  • B Korel

    Automated software test data generation

    Trans. Softw. Engng

    (1990)
  • C Ramamoorty et al.

    On the automated generation of program test data

    Trans. Softw. Engng

    (1976)
  • R Kemmerer et al.

    UNISEX a UNIx—based Symbolic EXecutor for Pascal

    Softw. Pract. Exper.

    (1985)
  • S.L Hanter et al.

    An introduction to proving the correctness of programs

    Comp. Surv.

    (1976)
There are more references available in the full text version of this article.

Cited by (2)

View full text