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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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.
E.M. Clarke, O. Grumberg, D. Peled, Model Checking, MIT Press, 2000.
E.W. Dijkstra, Guarded Commands, Nondeterminacy and Formal Derivation of Programs, Communication of the ACM 18(8), 1975, 453–457.
C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J.B. Saxe, R. Stata, Extended Static Checking for Java, PLDI 2002, 234-245.
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.
E.L. Gunter, D. Peled, Temporal Debugging for Concurrent Systems, TACAS 2002, Grenoble, France, LNCS 2280, Springer, 431-444.
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
M.J.C. Gordon, T. Melham, Introduction to HOL, Cambridge University Press.
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.
Y. Kesten, A. Pnueli, M.Y. Vardi, Verification by Augmented Abstraction: The Automata-Theoretic View, JCSS 62, 2001, 668-690.
M. Kaufmann, P. Manolios, J.S. Moore, Computer-Aided Reasoning: An Approach, Kluwer 2000.
J.C. King, Symbolic Execution and Program Testing, Communication of the ACM, 17(7), 1976, 385–395.
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.
Y. Matiyasevich, Hilbert’s Tenth Problem, MIT Press, 1993.
G.J. Myers, The Art of Software Testing, John Wiley and Sons, 1979.
Z. Manna, A. Pnueli, Completing the Temporal Picture, Theoretical Computer Science 83, 1991, 97–130.
Z. Manna, A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems: Specification, Springer-Verlag, 1991.
Robin Milner, Mads Tofte, Robert Harper, and David MacQueen The Definition of Standard ML (Revised). MIT Press, Cambridge, MA, 1997.
D. C. Oppen, A \(2^{2^{2^{pn} } }\) upper bound on the complexity of Presburger arithmetic. JCSS 16(3):323–332 (1978).
S. Rapps, E. J. Weyuker, Selecting software test data using data flow information, IEEE Transactions on software engineering, SE-11 4(1985), 367–375.
J.M. Rushby, S. Owre, N. Shankar, Subtypes for Specifications: Predicate Subtyping in PVS, Transactions on Software Engineering, 24(9), 1998, 709–720.
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.
S. Visvanathan, N. Gupta, Generating Test Data for Functions with Point Input, 17th IEEE International Conference on Automated Software Engineering, 2002.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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