skip to main content
article
Free Access

Symbolic execution and program testing

Published:01 July 1976Publication History
Skip Abstract Section

Abstract

This paper describes the symbolic execution of programs. Instead of supplying the normal inputs to a program (e.g. numbers) one supplies symbols representing arbitrary values. The execution proceeds as in a normal execution except that values may be symbolic formulas over the input symbols. The difficult, yet interesting issues arise during the symbolic execution of conditional branch type statements. A particular system called EFFIGY which provides symbolic execution for program testing and debugging is also described. It interpretively executes programs written in a simple PL/I style programming language. It includes many standard debugging features, the ability to manage and to prove things about symbolic expressions, a simple program testing manager, and a program verifier. A brief discussion of the relationship between symbolic execution and program proving is also included.

References

  1. 1 Boyer, R.S., Elspas, B., Levitt, K.N. SELECT-A formal system for testing and debugging programs by symbolic execution. 1975 Int. Conf. on Reliable Software, April 1975, pp. 234-245. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2 Clarke, L. A system to generate test data and symbolically execute programs. Rep. No. CU-CS-060-75, Dep. of Computer Sci., U. of Colorado, Feb. 1975.Google ScholarGoogle Scholar
  3. 3 Darlington, J. A semantic approach to automatic program improvement. Ph.D. Th., U. of Edinburgh, 1972.Google ScholarGoogle Scholar
  4. 4 Deutsch, L.P. An interactive program verifier. Ph.D. Th., Dep. of Computer Sci., U. of California, Berkeley, May 1973.Google ScholarGoogle Scholar
  5. 5 Elspas, B., et al. An assessment of techniques for proving program correctness. Computing Surveys 4, 2 (June 1972), 97-147. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6 Floyd, R.W. Assigning meanings to programs, Proc. Symp. Appl. Math. Vol. 19, Amer. Math. Soc., Provincetown, R.I., 1967, pp. 19-32.Google ScholarGoogle ScholarCross RefCross Ref
  7. 7 King, J.C. Proving programs to be correct. IEEE Trans. on Comp. C-20, 11 (Nov. 1971), 1331-1336.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8 King, J.C. A program verifier. Proc. IFIP Cong. 71, North- Holland, Amsterdam, 1971, pp. 235-249.Google ScholarGoogle Scholar
  9. 9 King, J.C. and Floyd, R.W. An interpretation oriented theorem prover over integers, J. Computer Syst. Sci. 6, 4(Aug. 1972), 305-323.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10 King, J.C. A new approach to program testing. 1975 Int. Conf. on Reliable Software, April 1975, pp. 228-233. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11 Krause, K.W., et al. Optimal software test planning through Automated network analysis. IEEE Symp. on Computer Software Reliability, April 1973, pp. 18-22.Google ScholarGoogle Scholar
  12. 12 Manna, Z. Mathematical Theory of Computation. McGraw- Hill, New York, 1974, Ch. 4. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13 Paterson, M.S. Equivalence problems in a model of computation. Ph.D. Th., U. of Cambridge, England, Aug. 1967. Also published as A.I. Tech. Memo No. 1 (Memo No. 211), MIT, Nov. 1970.Google ScholarGoogle Scholar
  14. 14 Sites, R.L. Algol W Reference Manual. Rep. CS-230 (Clearinghouse No. PB 203601), Computer Sci. Dep., Stanford LI., Feb. 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 15 Topor, R.W., and Burstall, R.M. Verification of programs by symbolic execution-progress report. Unpublished report, Dep. of Machine Intelligence, U. of Edinburgh, Scotland, Dec. 1972.Google ScholarGoogle Scholar
  16. 16 Urschler, G. Complete redundant expression elimination in flow diagrams. Rep. RC4965, IBM Research, Yorktown Heights, N.Y., Aug. 1974.Google ScholarGoogle Scholar

Index Terms

  1. Symbolic execution and program testing
      Index terms have been assigned to the content through auto-classification.

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image Communications of the ACM
        Communications of the ACM  Volume 19, Issue 7
        July 1976
        56 pages
        ISSN:0001-0782
        EISSN:1557-7317
        DOI:10.1145/360248
        Issue’s Table of Contents

        Copyright © 1976 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 1 July 1976

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader