Skip to main content

Unit Checking: Symbolic Model Checking for a Unit of Code

  • Chapter
Book cover Verification: Theory and Practice

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2772))

Abstract

We present a symbolic model checking approach that allows verifying a unit of code, e. g., a single procedure or a collection of procedures that interact with each other. We allow temporal specification that make assertions about both the program counters and the program variables. We decompose the verification into two parts: (1) a search that is based on the temporal behavior of the program counters, and (2) the formulation and refutation of a path condition, which inherits conditions on the program variables from the temporal specification. This verification approach is modular, as there is no requirement that all the involved procedures are provided. Furthermore, we do not require that the code is based on a finite domain. The presented approach can also be used for automating the generation of test cases for unit testing.

This research was partially supported by US Army Research Office Grant number DAAAD19-01-1-0473

This research was partially supported by Subcontract UTA03-031 to The University of Warwick under University of Texas at Austin’s prime National Science Foundation Grant #CCR-0205483.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. T. Bultan, R. Gerber, W. Pugh, Model-Checking Concurrent Systems with Unbounded Integer Variables: Symbolic Representation, and Experimental Results, ACM Transactions on Programming and Systems, 21, 1999, 747-789.

    Google Scholar 

  2. E.M. Clarke, O. Grumberg, D. Peled, Model Checking, MIT Press, 2000.

    Google Scholar 

  3. E.W. Dijkstra, Guarded Commands, Nondeterminacy and Formal Derivation of Programs, Communication of the ACM 18(8), 1975, 453–457.

    Article  MATH  MathSciNet  Google Scholar 

  4. C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J.B. Saxe, R. Stata, Extended Static Checking for Java, PLDI 2002, 234-245.

    Google Scholar 

  5. E.R. Gansner, S.C. North, An open graph visualization system and its applications to software engineering, Software — Practice and Experience, 30(2000), 1203–1233.

    Article  MATH  Google Scholar 

  6. E.L. Gunter, D. Peled, Temporal Debugging for Concurrent Systems, TACAS 2002, Grenoble, France, LNCS 2280, Springer, 431-444.

    Google Scholar 

  7. R. Gerth, D. Peled, M.Y. Vardi, P. Wolper, Simple On-the-fly Automatic Verification of Linear Temporal Logic, PSTV95, Protocol Specification Testing and Verification, 3-18, Chapman & Hall, 1995

    Google Scholar 

  8. M.J.C. Gordon, T. Melham, Introduction to HOL, Cambridge University Press.

    Google Scholar 

  9. H.S. Hong, I. Lee, O. Sokolsky, H. Ural, A temporal Logic Based Theory of Test Coverage and Generation, Tools and Algorithms for the Construction and Analysis of Systems, 327-341.

    Google Scholar 

  10. Y. Kesten, A. Pnueli, M.Y. Vardi, Verification by Augmented Abstraction: The Automata-Theoretic View, JCSS 62, 2001, 668-690.

    Google Scholar 

  11. M. Kaufmann, P. Manolios, J.S. Moore, Computer-Aided Reasoning: An Approach, Kluwer 2000.

    Google Scholar 

  12. J.C. King, Symbolic Execution and Program Testing, Communication of the ACM, 17(7), 1976, 385–395.

    Article  Google Scholar 

  13. C. Lüth, B. Wolff Functional Design and Implementation of Graphical User Interfaces for Theorem Provers, Journal of Functional Programming, 9(2):167–189, March 1999.

    Article  MATH  Google Scholar 

  14. Y. Matiyasevich, Hilbert’s Tenth Problem, MIT Press, 1993.

    Google Scholar 

  15. G.J. Myers, The Art of Software Testing, John Wiley and Sons, 1979.

    Google Scholar 

  16. Z. Manna, A. Pnueli, Completing the Temporal Picture, Theoretical Computer Science 83, 1991, 97–130.

    Article  MATH  Google Scholar 

  17. Z. Manna, A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems: Specification, Springer-Verlag, 1991.

    Google Scholar 

  18. Robin Milner, Mads Tofte, Robert Harper, and David MacQueen The Definition of Standard ML (Revised). MIT Press, Cambridge, MA, 1997.

    Google Scholar 

  19. D. C. Oppen, A \(2^{2^{2^{pn} } }\) upper bound on the complexity of Presburger arithmetic. JCSS 16(3):323–332 (1978).

    Article  MATH  MathSciNet  Google Scholar 

  20. S. Rapps, E. J. Weyuker, Selecting software test data using data flow information, IEEE Transactions on software engineering, SE-11 4(1985), 367–375.

    Article  Google Scholar 

  21. J.M. Rushby, S. Owre, N. Shankar, Subtypes for Specifications: Predicate Subtyping in PVS, Transactions on Software Engineering, 24(9), 1998, 709–720.

    Article  Google Scholar 

  22. W. Pugh, D. Wonnacott, Going Beyond Integer Programming with the Omega Test to Eliminate False Data Dependencies, IEEE Transactions on Parallel and Distributed Systems 6, 1995, 204–211.

    Article  Google Scholar 

  23. S. Visvanathan, N. Gupta, Generating Test Data for Functions with Point Input, 17th IEEE International Conference on Automated Software Engineering, 2002.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2003 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Gunter, E., Peled, D. (2003). Unit Checking: Symbolic Model Checking for a Unit of Code. In: Dershowitz, N. (eds) Verification: Theory and Practice. Lecture Notes in Computer Science, vol 2772. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-39910-0_24

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-39910-0_24

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-21002-3

  • Online ISBN: 978-3-540-39910-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics