Academia.eduAcademia.edu

Outline

State/Event-Based Software Model Checking

2004, Lecture Notes in Computer Science

https://doi.org/10.1007/978-3-540-24756-2_8

Abstract

We present a framework for model checking concurrent software systems which incorporates both states and events. Contrary to other state/event approaches, our work also integrates two powerful verification techniques, counterexample-guided abstraction refinement and compositional reasoning. Our specification language is a state/event extension of linear temporal logic, and allows us to express many properties of software in a concise and intuitive manner. We show how standard automata-theoretic LTL model checking algorithms can be ported to our framework at no extra cost, enabling us to directly benefit from the large body of research on efficient LTL verification. We have implemented this work within our concurrent C model checker, MAGIC, and checked a number of properties of OpenSSL-0.9.6c (an open-source implementation of the SSL protocol) and Micro-C OS version 2 (a real-time operating system for embedded applications). Our experiments show that this new approach not only eases the writing of specifications, but also yields important gains both in space and in time during verification. In certain cases, we even encountered specifications that could not be verified using traditional pure event-based or state-based approaches, but became tractable within our state/event framework. We report a bug in the source code of Micro-C OS version 2, which was found during our experiments.

References (47)

  1. T. S. Anantharaman, E. M. Clarke, M. J. Foster, and B. Mishra. Compil- ing path expressions into VLSI circuits. In Proceedings of POPL, pages 191-204, 1985.
  2. BLAST website. http://www-cad.eecs.berkeley.edu/∼rupak/blast.
  3. S. Bensalem, Y. Lakhnech, and S. Owre. Computing abstractions of in- finite state systems compositionally and automatically. In Proceedings of CAV, volume 1427, pages 319-331. Springer LNCS, 1998.
  4. T. Ball, R. Majumdar, T. D. Millstein, and S. K. Rajamani. Automatic predicate abstraction of C programs. In SIGPLAN Conference on Pro- gramming Language Design and Implementation, pages 203-213, 2001.
  5. T. Ball and S. K. Rajamani. Automatically validating temporal safety properties of interfaces. In Proceedings of SPIN, volume 2057, pages 103- 122. Springer LNCS, 2001.
  6. M. C. Browne. Automatic verification of finite state machines using tem- poral logic. PhD thesis, Carnegie Mellon University, 1989. Technical report no. CMU-CS-89-117.
  7. J. Bradfield and C. Stirling. Modal Logics and Mu-Calculi : An Introduc- tion, pages 293-330. Handbook of Process Algebra. Elsevier, 2001.
  8. J. Burch. Trace algebra for automatic verification of real-time concurrent systems. PhD thesis, Carnegie Mellon University, 1992. Technical report no. CMU-CS-92-179.
  9. CCG + 03] S. Chaki, E. M. Clarke, A. Groce, S. Jha, and H. Veith. Modular verifi- cation of software components in C. In Proceedings of ICSE 2003, pages 385-395, 2003.
  10. CCK + 02] P. Chauhan, E. M. Clarke, J. H. Kukula, S. Sapra, H. Veith, and D. Wang. Automated abstraction refinement for model checking large state spaces using SAT based conflict analysis. In Proceedings of FMCAD, pages 33- 51, 2002.
  11. CDH + 00] 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 Proceedings of ICSE, pages 439-448. IEEE Computer Society, 2000.
  12. E. M. Clarke and E. A. Emerson. Design and synthesis of synchronization skeletons using branching time temporal logic. Lecture Notes in Computer Science, 131, 1981.
  13. E. M. Clarke, E. A. Emerson, and A. P. Sistla. Automatic verifica- tion of finite-state concurrent systems using temporal logic specifications. ACM Transactions on Programming Languages and Systems, 8(2):244- 263, 1986.
  14. E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample- guided abstraction refinement. In Computer Aided Verification, pages 154-169, 2000.
  15. E. M. Clarke, A. Gupta, J. H. Kukula, and O. Shrichman. SAT based abstraction-refinement using ILP and machine learning techniques. In Proceedings of CAV, pages 265-279, 2002.
  16. E. Clarke, O. Grumberg, and D. Peled. Model Checking. MIT Press, December 1999.
  17. J. M. Cobleigh, D. Giannakopoulou, and C. S. Pȃsȃreanu. Learning as- sumptions for compositional verification. In Proceedings of TACAS, vol- ume 2619, pages 331-346. Springer LNCS, 2003.
  18. S. Chaki, J. Ouaknine, K. Yorav, and E. M. Clarke. Automated com- positional abstraction refinement for concurrent C programs: A two-level approach. In Proceedings of SoftMC 03. ENTCS 89(3), 2003.
  19. D. L. Dill. Trace theory for automatic hierarchical verification of speed- independent circuits. PhD thesis, Carnegie Mellon University, 1988. Tech- nical report no. CMU-CS-88-119.
  20. O. Grumberg and D.E. Long. Model checking and modular verification. ACM Trans. on Programming Languages and Systems, 16(3):843-871, 1994.
  21. D. Giannakopoulou and J. Magee. Fluent model checking for event-based systems. In Proceedings of FSE. ACM Press, 2003.
  22. R. Gerth, D. Peled, M. Y. Vardi, and P. Wolper. Simple on-the-fly au- tomatic verification of linear temporal logic. In Protocol Specification Testing and Verification, pages 3-18, Warsaw, Poland, 1995. Chapman & Hall.
  23. T. A. Henzinger, R. Jhala, R. Majumdar, and S. Qadeer. Thread-modular abstraction refinement. In Proceedings of CAV, volume 2725. Springer LNCS, 2003.
  24. T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In Proceedings of POPL, pages 58-70, 2002.
  25. M. Huth, R. Jagadeesan, and D. Schmidt. Modal transition systems: A foundation for three-valued program analysis. In Proceedings of ESOP 01. LNCS 2028, 2001.
  26. C. A. R. Hoare. Communicating Sequential Processes. Prentice Hall, 1985.
  27. T. A. Henzinger, S. Qadeer, and S. K. Rajamani. Decomposing refinement proofs using assume-guarantee reasoning. In Proceedings of ICCAD, pages 245-252. IEEE Computer Society Press, 2000.
  28. D. Kozen. Results on the propositional mu-calculus. Theoretical Com- puter Science, 27:333-354, 1983.
  29. R. P. Kurshan. Computer-aided verification of coordinating processes: the automata-theoretic approach. Princeton University Press, 1994.
  30. E. Kindler and T. Vesper. ESTL: A temporal logic for events and states. In Proceedings of ATPN 98, pages 365-383. LNCS 1420, 1998.
  31. Y. Lakhnech, S. Bensalem, S. Berezin, and S. Owre. Incremental veri- fication by abstraction. In Proceedings of TACAS, volume 2031, pages 98-112. Springer LNCS, 2001.
  32. O. Lichtenstein and A. Pnueli. Checking that finite state concurrent programs satisfy their linear specification. In Proceedings of POPL, 1985.
  33. MAG] MAGIC website. http://www.cs.cmu.edu/∼chaki/magic.
  34. K. L. McMillan. A compositional rule for hardware design refinement. In Proceedings of CAV, volume 1254, pages 24-35. Springer LNCS, 1997.
  35. R. Milner. Communication and Concurrency. Prentice-Hall International, London, 1989.
  36. G. Naumovich, L. A. Clarke, L. J. Osterweil, and M. B. Dwyer. Verifi- cation of concurrent software with FLAVERS. In Proceedings of ICSE, pages 594-595. ACM Press, 1997.
  37. R. De Nicola, A. Fantechi, S. Gnesi, and G. Ristori. An action-based framework for verifying logical and behavioural properties of concurrent systems. Computer Networks and ISDN Systems, 25(7):761-778, 1993.
  38. R. De Nicola and F. Vaandrager. Three logics for branching bisimulation. Journal of the ACM (JACM), 42(2):458-487, 1995.
  39. C. S. Pȃsȃreanu, M. B. Dwyer, and W. Visser. Finding feasible counter- examples when model checking abstracted Java programs. In Proceedings of TACAS, volume 2031, pages 284-298. Springer LNCS, 2001.
  40. A. Pnueli. Application of temporal logic to the specification and verifica- tion of reactive systems: A survey of current trends. In J.W. de Bakker, W. P. de Roever, and G. Rozenburg, editors, Current Trends in Concur- rency, volume 224 of Lecture Notes in Computer Science, pages 510-584. Springer, 1986.
  41. J.P. Quielle and J. Sifakis. Specification and verification of concurrent systems in CESAR. In proceedings of Fifth Intern. Symposium on Pro- gramming, pages 337-350, 1981.
  42. A. W. Roscoe. The Theory and Practice of Concurrency. Prentice-Hall International, London, 1997.
  43. F. Somenzi and R. Bloem. Efficient Büchi automata from LTL formulae. In Computer-Aided Verification, pages 248-263, 2000.
  44. SLAM website. http://research.microsoft.com/slam.
  45. SSL] OpenSSL. http://wp.netscape.com/eng/ssl3/ssl-toc.html.
  46. S. D. Stoller. Model-checking multi-threaded distributed Java programs. International Journal on Software Tools for Technology Transfer, 4(1):71- 91, 2002.
  47. Wring website. http://vlsi.colorado.edu/∼rbloem/wring.html.