Abstract
We propose an abstraction-based model checking method which relies on refinement of an under-approximation of the feasible behaviors of the system under analysis. The method preserves errors to safety properties, since all analyzed behaviors are feasible by definition. The method does not require an abstract transition relation to be generated, but instead executes the concrete transitions while storing abstract versions of the concrete states, as specified by a set of abstraction predicates. For each explored transition the method checks, with the help of a theorem prover, whether there is any loss of precision introduced by abstraction. The results of these checks are used to decide termination or to refine the abstraction by generating new abstraction predicates. If the (possibly infinite) concrete system under analysis has a finite bisimulation quotient, then the method is guaranteed to eventually explore an equivalent finite bisimilar structure. We illustrate the application of the approach for checking concurrent programs. We also show how a lightweight variant can be used for efficient software testing.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Ball, T.: A theory of predicate-complete test coverage and generation. Technical Report MSR-TR-2004-28, Microsoft Research (2004)
Ball, T., Podelski, A., Rajamani, S.: Boolean and cartesian abstractions for model checking C programs. In: Margaria, T., Yi, W. (eds.) TACAS 2001. LNCS, vol. 2031, p. 268. Springer, Heidelberg (2001)
Chaki, S., Clarke, E., Groce, A., Jha, S., Veith, H.: Modular verification of software components in C. ACM Trans. Computer Systems 30(6), 388–402 (2004)
Chaki, S., Clarke, E., Groce, A., Strichman, O.: Predicate abstraction with minimum predicates. In: Geist, D., Tronci, E. (eds.) CHARME 2003. LNCS, vol. 2860, pp. 19–34. Springer, Heidelberg (2003)
Cousot, P., Cousot, R.: Abstract interpretation frameworks. Journal of Logic and Computation 4(2), 511–547 (1992)
Dams, D., Namjoshi, K.S.: The existence of finite abstractions for branching time model checking. In: Proc. 19th Symposium on Logic in Computer Science, LICS 2004 (2004)
de Alfaro, L., Godefroid, P., Jagadeesan, R.: Three-valued abstractions of games: Uncertainty, but with precision. In: Proc. 19th Symposium on Logic in Computer Science, LICS 2004 (2004)
Detlefs, D.L., Leino, K.R.M., Nelson, G., Saxe, J.B.: Extended static checking. Research Report 159, Compaq Systems Research Center (1998)
Ernst, M.D., Czeisler, A., Griswold, W.G., Notkin, D.: Quickly detecting relevant program invariants. In: Proc. 22nd International Conference on Software Engineering, ICSE 2000 (2000)
Giacobazzi, R., Quintarelli, E.: Incompleteness, counterexamples and refinements in abstract model checking. In: Cousot, P. (ed.) SAS 2001. LNCS, vol. 2126, p. 356. Springer, Heidelberg (2001)
Godefroid, P.: Software Model Checking: the Verisoft Approach. Formal Methods in Systems Design (to appear)
Godefroid, P., Huth, M., Jagadeesan, R.: Abstraction-based model checking using modal transition systems. In: Larsen, K.G., Nielsen, M. (eds.) CONCUR 2001. LNCS, vol. 2154, p. 426. Springer, Heidelberg (2001)
Graf, S., Saidi, H.: Construction of abstract state graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254. Springer, Heidelberg (1997)
Grieskamp, W., Gurevich, Y., Schulte, W., Veanes, M.: Generating finite state machines from abstract state machines. In: Proc. International Symposium on Software Testing and Analysis, ISSTA 2004 (July 2004)
Grumberg, O., Lerda, F., Strichman, O., Theobald, M.: Proof-guided underapproximation-widening for multi-process systems. In: Proc. 32nd Symposium on Principles of Programming Languages, POPL 2005 (2005)
Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.: Abstractions from proofs. In: Proc. 31st Symposium on Principles of Programming Languages, POPL 2004 (2004)
Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Lazy abstraction. In: Proc. 29th Symposium on Principles of Programming Languages (2002)
Holzmann, G.J., Joshi, R.: Model-driven software verification. In: Graf, S., Mounier, L. (eds.) SPIN 2004. LNCS, vol. 2989, pp. 76–91. Springer, Heidelberg (2004)
Lee, D., Yannakakis, M.: Online minimization of transition systems. In: Proc. 24th ACM Symposium on Theory of Computing (1992)
Musuvathi, M., Park, D.Y.W., Chou, A., Engler, D.R., Dill, D.L.: CMC: A pragmatic approach to model checking real code. In: Proc. 5th Symposium on Operating Systems Design and Implementation, OSDI 2002 (2002)
Namjoshi, K.S., Kurshan, R.P.: Syntactic program transformations for automatic abstraction. In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855, Springer, Heidelberg (2000)
Păsăreanu, C.S., Dwyer, M.B., Visser, W.: Finding feasible abstract counter-examples. STTT 5(1), 34–48 (2003)
Păsăreanu, C.S., Pelánek, R., Visser, W.: Concrete model checking with abstract matching and refinement (extended version). RIACS Technical Report, 05.04 (2005)
Shoham, S., Grumberg, O.: Monotonic abstraction-refinement for CTL. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 546–560. Springer, Heidelberg (2004)
Venet, A., Brat, G.: Precise and efficient static array bound checking for large embedded C programs. In: Proc. Programming Language Design and Implementation, PLDI 2004 (2004)
Visser, W., Havelund, K., Brat, G., Park, S.J., Lerda, F.: Model checking programs. Automated Software Engineering Journal 10(2) (April 2003)
Visser, W., Park, S., Penix, J.: Applying predicate abstraction to model check object-oriented programs. In: 3rd ACM SIGSOFT Workshop on Formal Methods in Software Practice (2000)
Xie, T., Marinov, D., Notkin, D.: Rostra: A framework for detecting redundant object-oriented unit tests. In: Proc. 19th Automated Software Engineering (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Păsăreanu, C.S., Pelánek, R., Visser, W. (2005). Concrete Model Checking with Abstract Matching and Refinement. In: Etessami, K., Rajamani, S.K. (eds) Computer Aided Verification. CAV 2005. Lecture Notes in Computer Science, vol 3576. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11513988_7
Download citation
DOI: https://doi.org/10.1007/11513988_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-27231-1
Online ISBN: 978-3-540-31686-2
eBook Packages: Computer ScienceComputer Science (R0)