skip to main content
10.5555/646485.694465guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Finding Feasible Counter-examples when Model Checking Abstracted Java Programs

Published: 02 April 2001 Publication History

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.

References

[1]
S. Abramsky and C. Hankin. Abstract Interpretation of Declarative Languages . Ellis Horwood Limited, 1987.
[2]
K. Arnold and J. Gosling. The Java Programming Language . Addison-Wesley, 1998.
[3]
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.
[4]
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.
[5]
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.
[6]
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.
[7]
J.C. Corbett, M. B. Dwyer, J. Hatcliff, and Robby. Bandera : A source-level interface for model checking Java programs. In {14}.
[8]
J.C. Corbett, M.B. Dwyer, J. Hatcliff, S. Laubach, C.S. Pasareanu, Robby, and H. Zheng. Bandera : Extracting finite-state models from Java source code. In {14}.
[9]
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.
[10]
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.
[11]
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.
[12]
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.
[13]
M.B. Dwyer, J. Hatcliff, R. Joehanes, S. Laubach, C.S. Pasareanu, 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.
[14]
C. Ghezzi, M. Jazayeri, and A. Wolf, editors. Proceedings of the 22nd International Conference on Software Engineering , June 2000.
[15]
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.
[16]
G.J. Holzmann. The model checker SPIN. IEEE Transactions on Software Engineering , 23(5):279-294, May 1997.
[17]
Y. Kesten and A. Pnueli. Modularization and abstraction: The keys to practical formal verification. Lecture Notes in Computer Science , 1450, 1998.
[18]
D. Lea. Concurrent Programming in Java{tm}, Second Edition: Design principles and Patterns . The Java Series. Addison-Wesley, 2nd edition, 1999.
[19]
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.
[20]
K.L. McMillan. Symbolic Model Checking . Kluwer Academic Publishers, 1993.
[21]
J. Penix, W. Visser, E. Engstrom, A. Larson, and N. Weininger. Verification of time partitioning in the DEOS real-time scheduling kernel. In {14}.
[22]
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.
[23]
H. Saïdi. Model checking guided abstraction and analysis. In Proceedings of the 7th International Static Analysis Symposium , 2000.
[24]
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.
[25]
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.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
TACAS 2001: Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
April 2001
585 pages
ISBN:3540418652

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 02 April 2001

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 25 Dec 2024

Other Metrics

Citations

Cited By

View all

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media