Abstract
Despite recent advances in model checking and in adapting model checking techniques to software, the state explosion problem remains a major hurdle in applying model checking to software. Recent work in automated program abstraction has shown promise as a means of scaling model checking to larger systems. Most common abstraction techniques compute an upper approximation of the original program. Thus, when a specification is found true for the abstracted program, it is known to be true for the original program. Finding a specification to be false, however, is inconclusive since the specification may be violated on a behavior in the abstracted program which is not present in the original program. We have extended an explicit-state model checker, Java PathFinder (JPF), to analyze counter-examples in the presence of abstractions. We enhanced JPF to search for “feasible” (i.e. nondeterminismfree) counter-examples “on-the-fly”, during model checking. Alternatively, an abstract counter-example can be used to guide the simulation of the concrete computation and thereby check feasibility of the counterexample. We demonstrate the effectiveness of these techniques on counterexamples from checks of several multi-threaded Java programs.
Supported in part by NSF under grants CCR-9703094 and CCR-9708184, by NASA under grant NAG-02-1209, by DARPA/ITO’s PCES program through AFRL Contract F33615-00-C-3044, and was performed for the Formal Verification of Integrated Modular Avionics Software Cooperative Agreement, NCC-1-399, sponsored by Honeywell Technology Center and NASA Langley Research Center.
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
S. Abramsky and C. Hankin. Abstract Interpretation of Declarative Languages. Ellis Horwood Limited, 1987.
K. Arnold and J. Gosling. The Java Programming Language. Addison-Wesley, 1998.
T. Ball and S.K. Rajamani. Checking temporal properties of software with Boolean programs. In Proc. of the Workshop on Advances in Verification, July 2000.
S. Bensalem, Y. Lakhnech, and S. Owre. Computing abstractions of infinite state systems compositionally and automatically. In Proc. 10th International Conference on Computer-Aided Verification, June 1998.
E.M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In Proc. 12th International Conference on Computer-Aided Verification, July 2000.
E.M. Clarke, O. Grumberg, and D.E. Long. Model checking and abstraction. ACM Transactions on Programming Languages and Systems, 16(5):1512–1542, September 1994.
J.C. Corbett, M. B. Dwyer, J. Hatcliff, and Robby. Bandera: A source-level interface for model checking Java programs. In [14].
J.C. Corbett, M.B. Dwyer, J. Hatcliff, S. Laubach, C.S. Păsăreanu, Robby, and H. Zheng. Bandera: Extracting finite-state models from Java source code. In [14].
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the Fourth Annual ACM Symposium on Principles of Programming Languages, pages 238–252, 1977.
D. Dams, R. Gerth, G. Dhmen, R. Herrmann, P. Kelb, and H. Pargmann. Model checking using adaptive state and data abstraction. In D.L. Dill, editor, Proc. 6th International Conference on Computer-Aided Verification, volume 818 of Lecture Notes in Computer Science, pages 455–467. Springer Verlag, June 1994.
D. Dams, R. Gerth, and O. Grumberg. Abstract interpretation of reactive systems. ACM Transactions on Programming Languages and Systems, 19(2):253–291, March 1997.
C. Demartini, R. Iosif, and R. Sisto. A deadlock detection tool for concurrent Java programs. Software-Practice and Experience, 29(7):577–603, July 1999.
M.B. Dwyer, J. Hatcliff, R. Joehanes, S. Laubach, C.S. Păsăreanu, Robby, W. Visser, and H. Zheng. Tool-supported program abstraction for finite-state verification. In Proceedings of the 23rd International Conference on Software Engineering, May 2001.
C. Ghezzi, M. Jazayeri, and A. Wolf, editors. Proceedings of the 22nd International Conference on Software Engineering, June 2000.
J. Hatcliff, J.C. Corbett, M.B. Dwyer, S. Sokolowski, and H. Zheng. A formal study of slicing for multi-threaded programs with JVM concurrency primitives. In Proceedings of the 6th International Static Analysis Symposium, September 1999.
G.J. Holzmann. The model checker SPIN. IEEE Transactions on Software Engineering, 23(5):279–294, May 1997.
Y. Kesten and A. Pnueli. Modularization and abstraction: The keys to practical formal verification. Lecture Notes in Computer Science, 1450, 1998.
D. Lea. Concurrent Programming in Java[tm], Second Edition: Design principles and Patterns. The Java Series. Addison-Wesley, 2nd edition, 1999.
C. Loiseaux, S. Graf, J. Sifakis, A. Bouajiani, and S. Bensalem. Property preserving abstractions for the verification of concurrent systems. Formal Methods in System Design, 6(1):11–44, 1995.
K.L. McMillan. Symbolic Model Checking. Kluwer Academic Publishers, 1993.
J. Penix, W. Visser, E. Engstrom, A. Larson, and N. Weininger. Verification of time partitioning in the DEOS real-time scheduling kernel. In [14].
V. Rusu and E. Singerman. On proving safety properties by integrating static analysis, theorem proving and abstraction. In Proceedings of Tools and Algorithms for the Construction and Analysis of Systems, March 1999.
H. Saïdi. Model checking guided abstraction and analysis. In Proceedings of the 7th International Static Analysis Symposium, 2000.
W. Visser, G. Brat, K. Havelund, and S. Park. Model checking programs. In Proceedings of the 15th IEEE International Conference on Automated Software Engineering, September 2000.
W. Visser, S. Park, and J. Penix. Applying predicate abstraction to model check object-oriented programs. In Proceedings of the 3rd ACM SIGSOFT Workshop on Formal Methods in Software Practice, August 2000.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Păsăreanu, C.S., Dwyer, M.B., Visser, W. (2001). Finding Feasible Counter-examples when Model Checking Abstracted Java Programs. In: Margaria, T., Yi, W. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2001. Lecture Notes in Computer Science, vol 2031. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45319-9_20
Download citation
DOI: https://doi.org/10.1007/3-540-45319-9_20
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-41865-8
Online ISBN: 978-3-540-45319-2
eBook Packages: Springer Book Archive