Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Open access

Using symbolic execution for verification of Ada tasking programs

Published: 01 October 1990 Publication History
  • Get Citation Alerts
  • Abstract

    A method is presented for using symbolic execution to generate the verification conditions required for proving correctness of programs written in a tasking subset of Ada. The symbolic execution rules are derived from proof systems that allow tasks to be verified independently in local proofs, which are then checked for cooperation. The isolation nature of this approach to symbolic execution of concurrent programs makes it better suited to formal verification than the more traditional interleaving approach, which suffers from combinatorial problems. The criteria for correct operation of a concurrent program include partial correctness, as well as more general safety properties, such as mutual exclusion and freedom from deadlock.

    References

    [1]
    ArT, K. R., FRANCEZ, N., AND DE ROEVER, W.P. a proof system for communicating sequential processes. ACM Trans. Program. Lang. Syst. 2, 3 (July 1980), 359-385.
    [2]
    BARRINGER, H., AND MEARNS, {. Axioms and proof rules for Ada tasks. In Proc. IEE 129 (1982), no. pt. E.
    [3]
    BRAND, D., AND JOYNER, W. H. JR. Verification of protocols using symbolic execution. Comput. Networks 2 (1978), 351-360.
    [4]
    DILLON, r. $. An isolation approach to symbolic execution-based verification of Ada tasking programs. J. Syst. Softw. To appear.
    [5]
    DILLON, r. $. Verifying general safety properties of Ada tasking programs. IEEE Trans. Softw. Eng. 16, i (Jan. 1990), 51-63.
    [6]
    DILLON, L. K., KEMMERER, R. A., AND HARRISON, r.J. An experience with two symbolic execution-based approaches to formal verification of Ada tasking programs. In Proceedings of the 2nd Workshop of Software Testing, Verification, and Analysis (Washington, DC, July 1988). IEEE Computer Society Press, New York, 1988, 114-122.
    [7]
    FLOYD, R.W. Assigning meanings to programs. In Proceedings of the American Mathematical Society Symposia in Applied Mathematics 19 (1967), 19-31.
    [8]
    GERTH, R. W., AND DE ROEVER, W.P. A proof system for concurrent Ada programs. In Science of Computer Programming 4. Elsevier Science, New York, 1984, 159-204.
    [9]
    GOOD, D. I., COHEN, R. M., AND KEETON-WILLIAMS, Z. Principles of proving concurrent programs in Gypsy. In Proceedings of the 6th ACM Symposium on the Principles of Programming Languages (San Antonio, TX, Jan. 1979). ACM, New York, 1979, 42-52.
    [10]
    HANTLER, S. L., AND KING, J.C. An introduction to proving the correctness of programs. ACM Comput. Surv. 8, 3 (Sept. 1976), 331-353.
    [11]
    HARRISON, L. J., AND KEMMERER, R.A. An interleaving symbolic execution approach for the formal verification of Ada programs with tasking. In Proceedings of the 3rd International IEEE Conference on Ada Applications and Environments (Washington, DC, May 1988), 15-26.
    [12]
    HOARE, C. A.R. Communicating Sequential Processes. Prentice-Hall, Englewood Cliffs, NJ, 1985.
    [13]
    KEMMERER, R. A., AND ECKMANN, S. V. UNISEX: A UNix-based symbolic EXecutor for Pascal. Softw. Pract. Exper. 15, 5 (May 1985), 439-457.
    [14]
    KNIGHT, J. C., AND GRINE, V.S. Symbolic execution of concurrent Ada programs. Tech. Rep., Department of Computer Science, University of Virginia, Charlottesville.
    [15]
    LAMPORT, r. The "Hoare logic" of concurrent programs. Acta Inf. 14 (1980), 21-37.
    [16]
    LAMPORT, L., AND SCHNEIDER, F. B. The "Hoare logic" of CSP, and all that. ACM Trans. Program. Lang. Syst. 6, 2 (Apr. 1984), 281-296.
    [17]
    LUCKHAM, D. C., HELMBOLD, D. P., MELDAL, S., BRYAN, D. L., AND HABERLER, M.A. Task sequencing language for specifying distributed Ada systems: TSL-1. Tech. Rep., Program Analysis and Verification Group, Computer Systems Laboratory, Stanford University, Stanford, CA, 1987.
    [18]
    LUCKHAM, D. C., AND VON HENKE, F.W. An overview of Anna, a specification language for Ada. IEEE Softw. (Mar. 1985), 9-22.
    [19]
    M1SRA, J., AND CHANDY, $. M. Proofs of networks and processes. IEEE Trans. Softw. Eng. SE-7, 4 (July 1981), 417-426.
    [20]
    NGUYEN, V., DEMERS, A., CRIES, D., AND OWICKI, S. A model and temporal proof system for networks of processes. Distributed Comput. (Jan. 1986), 7-25.
    [21]
    OWlCKI, S., AND CRIES, D. Verifying properties of parallel programs: An axiomatic approach. Commun. ACM 19, 5 (May 1976), 279-285.
    [22]
    YOUNG, M., AND TAYLOR, R. $. Combining static concurrency analysis with symbolic execution. In Proceedings of the Workshop on Software Testing ( July 1986).

    Cited By

    View all
    • (2012)Formal analysis of event-driven cyber physical systemsProceedings of the First International Conference on Security of Internet of Things10.1145/2490428.2490429(1-8)Online publication date: 17-Aug-2012
    • (2012)Test-case generation and bug-finding through symbolic executionProceedings of the South African Institute for Computer Scientists and Information Technologists Conference10.1145/2389836.2389838(1-9)Online publication date: 1-Oct-2012
    • (2012)Function SubstitutionProceedings of the 2012 12th International Conference on Quality Software10.1109/QSIC.2012.32(31-40)Online publication date: 27-Aug-2012
    • Show More Cited By

    Recommendations

    Reviews

    D. John Cooke

    The verification of complex systems—which may be concurrent and may not terminate—is very important and usually very difficult. This paper describes a technique for verifying certain concurrent programs by using the established method of symbolic execution to verify each task independently and then checking that the tasks cooperate satisfactorily. Any approach that allows such problems to be broken down into a set of simpler, and more easily tackled, subproblems is to be welcomed. The presentation is informal; a fuller, general description of the “isolation” approach is consigned to another paper, as yet unpublished. Two examples are worked through in detail. The language used in the examples is a limited subset of Ada, but any simple language with synchronous deterministic communication would do. Indeed, use of a language with a larger set of mathematical operators would be easier to follow and avoid typographical inconsistencies. The specifications are given in terms of auxiliary variables, which are declared locally but needed globally to state the system invariant. Moreover, the “specifications” are derived from the program, so this approach is not really verification; it is a way of investigating whether system designs behave “safely.” As such, it makes a useful contribution to the study of distributed systems. The work is ongoing. I hope it will be linked to results from other researchers whose work is based on temporal logic.

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Transactions on Programming Languages and Systems
    ACM Transactions on Programming Languages and Systems  Volume 12, Issue 4
    Oct. 1990
    197 pages
    ISSN:0164-0925
    EISSN:1558-4593
    DOI:10.1145/88616
    Issue’s Table of Contents

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 October 1990
    Published in TOPLAS Volume 12, Issue 4

    Permissions

    Request permissions for this article.

    Check for updates

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)33
    • Downloads (Last 6 weeks)8
    Reflects downloads up to 10 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2012)Formal analysis of event-driven cyber physical systemsProceedings of the First International Conference on Security of Internet of Things10.1145/2490428.2490429(1-8)Online publication date: 17-Aug-2012
    • (2012)Test-case generation and bug-finding through symbolic executionProceedings of the South African Institute for Computer Scientists and Information Technologists Conference10.1145/2389836.2389838(1-9)Online publication date: 1-Oct-2012
    • (2012)Function SubstitutionProceedings of the 2012 12th International Conference on Quality Software10.1109/QSIC.2012.32(31-40)Online publication date: 27-Aug-2012
    • (2011)Symbolic execution for software testing in practiceProceedings of the 33rd International Conference on Software Engineering10.1145/1985793.1985995(1066-1071)Online publication date: 21-May-2011
    • (2011)Semi-ProvingIEEE Transactions on Software Engineering10.1109/TSE.2010.2337:1(109-125)Online publication date: 1-Jan-2011
    • (2009)Distributed hash sketchesACM Transactions on Computer Systems10.1145/1482619.148262127:1(1-53)Online publication date: 13-Feb-2009
    • (2008)Combining symbolic execution with model checking to verify parallel numerical programsACM Transactions on Software Engineering and Methodology10.1145/1348250.134825617:2(1-34)Online publication date: 5-May-2008
    • (2008)Breaking up is hard to doACM Transactions on Software Engineering and Methodology10.1145/1348250.134825317:2(1-52)Online publication date: 5-May-2008
    • (2007)Enforcing resource bounds via static verification of dynamic checksACM Transactions on Programming Languages and Systems10.1145/1275497.127550329:5(28-es)Online publication date: 2-Aug-2007
    • (2007)A new foundation for control dependence and slicing for modern program structuresACM Transactions on Programming Languages and Systems10.1145/1275497.127550229:5(27-es)Online publication date: 2-Aug-2007
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Full Access

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media