Skip to main content

Introduction to Model Checking

  • Chapter
  • First Online:
Handbook of Model Checking

Abstract

Model checking is a computer-assisted method for the analysis of dynamical systems that can be modeled by state-transition systems. Drawing from research traditions in mathematical logic, programming languages, hardware design, and theoretical computer science, model checking is now widely used for the verification of hardware and software in industry. This chapter is an introduction and short survey of model checking. The chapter aims to motivate and link the individual chapters of the handbook, and to provide context for readers who are not familiar with model checking.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Akbarpour, B., Abdel-Hamid, A.T., Tahar, S., Harrison, J.: Verifying a synthesized implementation of IEEE-754 floating-point exponential function using HOL. Comput. J. 53(4), 465–488 (2010)

    Article  Google Scholar 

  2. Alpern, B., Schneider, F.B.: Defining liveness. Inf. Process. Lett. 21(4), 181–185 (1985)

    Article  MathSciNet  Google Scholar 

  3. Alur, R.: Principles of Cyber-Physical Systems. MIT Press, Cambridge (2015)

    Google Scholar 

  4. Alur, R., Bodík, R., Juniwal, G., Martin, M.M.K., Raghothaman, M., Seshia, S.A., Singh, R., Solar-Lezama, A., Torlak, E., Udupa, A.: Syntax-guided synthesis. In: Jobstmann, B., Ray, S. (eds.) Proceedings, Formal Methods in Computer-Aided Design, FMCAD, Portland, OR, USA, October 20–23, 2013, pp. 1–8. IEEE, Piscataway (2013)

    Google Scholar 

  5. Alur, R., Henzinger, T.A., Lafferriere, G., Pappas, G.J.: Discrete abstractions of hybrid systems. Proc. IEEE 88(7), 971–984 (2000)

    Article  Google Scholar 

  6. Appel, A.W.: Modern Compiler Implementation in C. Cambridge University Press, Cambridge (1998)

    MATH  Google Scholar 

  7. Apt, K.R., de Boer, F.S., Olderog, E.-R.: Verification of Sequential and Concurrent Programs. Texts in Computer Science. Springer, Heidelberg (2009)

    Book  Google Scholar 

  8. Baier, C., Katoen, J-P.: Principles of Model Checking. MIT Press, Cambridge (2008)

    MATH  Google Scholar 

  9. Baresi, L., Di Nitto, E.: Test and Analysis of Web Services. Springer, Heidelberg (2007)

    Book  Google Scholar 

  10. Beer, I., Ben-David, S., Eisner, C., Rodeh, Y.: Efficient detection of vacuity in ACTL formulas. In: Grumberg, O. (ed.) Proceedings, Computer Aided Verification, CAV, Haifa, Israel, June 22–25, 1997. LNCS, vol. 1254, pp. 279–290. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  11. Ben-Ari, M.: Principles of the SPIN Model Checker. Springer, Heidelberg (2008)

    MATH  Google Scholar 

  12. Bérard, B., Bidoit, M., Finkel, A., Laroussinie, F., Petit, A., Petrucci, L., Schnoebelen, P.: Systems and Software Verification: Model-Checking Techniques and Tools. Springer, Heidelberg (2001)

    Book  Google Scholar 

  13. Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions. Springer, Heidelberg (2004)

    Book  Google Scholar 

  14. Bloem, R., Könighofer, B., Könighofer, R., Wang, C.: Shield synthesis: runtime enforcement for reactive systems. In: Baier, C., Tinelli, C. (eds.) Proceedings, Tools and Algorithms for the Construction and Analysis of Systems, TACAS, London, UK, April 11–18, 2015. LNCS, vol. 9035, pp. S33–S48. Springer, Heidelberg (2015)

    Google Scholar 

  15. Boker, U., Chatterjee, K., Henzinger, T.A., Kupferman, O.: Temporal specifications with accumulative values. ACM Trans. Comput. Log. 15(4), 27:1–27:25 (2014)

    Article  MathSciNet  Google Scholar 

  16. Bortolussi, L., Milios, D., Sanguinetti, G.: Machine-learning methods in statistical model checking and system design. In: Proceedings, Runtime Verification, RV, Vienna, Austria, September 22–25, 2015. LNCS, vol. 9333, pp. 323–341. Springer, Heidelberg (2015)

    Chapter  Google Scholar 

  17. Canini, M., Venzano, D., Perešíni, P., Kostić, D., Rexford, J.: A NICE way to test openflow applications. In: Gribble, S.D., Katabi, D. (eds.) Proceedings, Networked Systems Design and Implementation, NSDI, San Jose, CA, USA, April 25–27, 2012, pp. 127–140. USENIX Association, Berkeley (2012)

    Google Scholar 

  18. Cassandras, C.G., Lafortune, S.: Introduction to Discrete-Event Systems, 2nd edn. Springer, Heidelberg (2008)

    Book  Google Scholar 

  19. Cerný, P., Clarke, E.M., Henzinger, T.A., Radhakrishna, A., Ryzhyk, L., Samanta, R., Tarrach, T.: From non-preemptive to preemptive scheduling using synchronization synthesis. In: Kroening, D., Pasareanu, C.S. (eds.) Proceedings, Computer Aided Verification, CAV, Part II, San Francisco, CA, USA, July 18–24, 2015. LNCS, vol. 9207, pp. 180–197. Springer, Heidelberg (2015)

    Chapter  Google Scholar 

  20. Cerný, P., Henzinger, T.A., Radhakrishna, A.: Simulation distances. Theor. Comput. Sci. 413(1), 21–35 (2012)

    Article  MathSciNet  Google Scholar 

  21. Cerný, P., Henzinger, T.A., Radhakrishna, A.: Quantitative abstraction refinement. In: Giacobazzi, R., Cousot, R. (eds.) Proceedings, Principles of Programming Languages, POPL, Rome, Italy, January 23–25, 2013, pp. 115–128. ACM, New York (2013)

    Google Scholar 

  22. Clarke, E.M., Emerson, E.A.: Design and synthesis of synchronization skeletons using branching-time temporal logic. In: Kozen, D. (ed.) Proceedings, Logics of Programs, Yorktown Heights, NY, USA, May 1981. LNCS, vol. 131, pp. 52–71. Springer, Heidelberg (1981)

    Chapter  Google Scholar 

  23. Clarke, E.M., Emerson, E.A., Sifakis, J.: Model checking: algorithmic verification and debugging. Commun. ACM 52(11), 74–84 (2009)

    Article  Google Scholar 

  24. Clarke, E.M., Emerson, E.A., Sistla, A.P.: Automatic verification of finite state concurrent systems using temporal logic specifications: a practical approach. In: Wright, J.R., Landweber, L., Demers, A.J., Teitelbaum, T. (eds.) Proceedings, Principles of Programming Languages, POPL, Austin, TX, USA, January 1983, pp. 117–126. ACM, New York (1983)

    Google Scholar 

  25. Clarke, E.M., Fehnker, A., Jha, S.K., Veith, H.: Temporal-logic model checking. In: Hristu-Varsakelis, D., Levine, W.S. (eds.) Handbook of Networked and Embedded Control Systems, pp. 539–558. Birkhäuser, Basel (2005)

    Chapter  Google Scholar 

  26. Clarke, E.M., Grumberg, O., Peled, D.: Model Checking. MIT Press, Cambridge (1999)

    Google Scholar 

  27. Clarke, E.M., Jha, S., Lu, Y., Veith, H.: Tree-like counterexamples in model checking. In: Proceedings, Logic in Computer Science, LICS, Copenhagen, Denmark, July 22–25 July 2002, pp. 19–29. IEEE, Piscataway (2002)

    Google Scholar 

  28. Clarke, E.M., Schlingloff, B.-H.: Model checking. In: Robinson, A., Voronkov, A. (eds.) Handbook of Automated Reasoning, pp. 1635–1790. Elsevier/MIT Press, Amsterdam/Cambridge (2001)

    Chapter  Google Scholar 

  29. Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Graham, R.M., Harrison, M.A., Sethi, R. (eds.) Principles of Programming Languages, POPL, Los Angeles, CA, USA, January 1977, pp. 238–252. ACM, New York (1977)

    Google Scholar 

  30. Damm, W., Harel, D.: LSCs: breathing life into message sequence charts. Form. Methods Syst. Des. 19(1), 45–80 (2001)

    Article  Google Scholar 

  31. Desai, A., Gupta, V., Jackson, E.K., Qadeer, S., Rajamani, S.K., Zufferey, D.: P: safe asynchronous event-driven programming. In: Boehm, H-J., Flanagan, C. (eds.) Proceedings, Programming Language Design and Implementation, PLDI, Seattle, WA, USA, June 16–19, 2013, pp. 321–332. ACM, New York (2013)

    Google Scholar 

  32. Dijkstra, E.W.: The humble programmer. Commun. ACM 15(10), 859–866 (1972)

    Article  Google Scholar 

  33. Emerson, E.A.: Temporal and modal logic. In: Handbook of Theoretical Computer Science, Volume B: Formal Models and Semantics, pp. 995–1072. MIT Press, Cambridge (1990)

    Google Scholar 

  34. Emerson, E.A., Halpern, J.Y.: “Sometimes” and “not never” revisited: on branching versus linear-time temporal logic. J. ACM 33(1), 151–178 (1986)

    Article  MathSciNet  Google Scholar 

  35. Fisher, J., Harel, D., Henzinger, T.A.: Biology as reactivity. Commun. ACM 54(10), 72–82 (2011)

    Article  Google Scholar 

  36. Floyd, R.W.: Assigning meaning to programs. In: Schwartz, J.T. (ed.) Proceedings, Mathematical Aspects of Computer Science: American Mathematical Society Symposia, Providence, RI, USA, vol. 19, pp. 19–31. AMS, Providence (1967)

    Chapter  Google Scholar 

  37. Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: Sarkar, V., Hall, M.W. (eds.) Proceedings, Programming Language Design and Implementation, PLDI, Chicago, IL, USA, June 12–15, 2005, pp. 213–223. ACM, New York (2005)

    Google Scholar 

  38. Grumberg, O., Veith, H.: 25 Years of Model Checking: History, Achievements, Perspectives. LNCS, vol. 5000. Springer, Heidelberg (2008)

    Book  Google Scholar 

  39. Gulwani, S., Hernández-Orallo, J., Kitzelmann, E., Muggleton, S.H., Schmid, U., Zorn, B.G.: Inductive Programming meets the real world. Commun. ACM 58(11), 90–99 (2015)

    Article  Google Scholar 

  40. Hales, T.C., Adams, M., Bauer, G., Dang, D.T., Harrison, J., Hoang, T.L., Kaliszyk, C., Magron, V., McLaughlin, S., Nguyen, T.T., Nguyen, T.Q., Nipkow, T., Obua, S., Pleso, J., Rute, J., Solovyev, A., Ta, A.H.T., Tran, T.N., Trieu, D.T., Urban, J., Vu, K.K., Zumkeller, R.: A formal proof of the Kepler conjecture. CoRR (2015). arXiv:1501.02155 [abs]

  41. Harel, D.: Statecharts: a visual formalism for complex systems. Sci. Comput. Program. 8(3), 231–274 (1987)

    Article  MathSciNet  Google Scholar 

  42. Harel, D., Marelly, R.: Come, Let’s Play. Scenario-Based Programming Using LSCs and the Play-Engine. Springer, Heidelberg (2003)

    Google Scholar 

  43. Henzinger, T.A.: Quantitative reactive modeling and verification. Comput. Sci. Res. Dev. 28(4), 331–344 (2013)

    Article  Google Scholar 

  44. Henzinger, T.A., Otop, J.: From model checking to model measuring. In: D’Argenio, P.R., Melgratti, H.C. (eds.) Proceedings, Concurrency Theory, CONCUR, Buenos Aires, Argentina, August 27–30, 2013. LNCS, vol. 8052, pp. 273–287. Springer, Heidelberg (2013)

    Google Scholar 

  45. Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)

    Article  Google Scholar 

  46. Holzmann, G.J.: Design and Validation of Computer Protocols. Prentice Hall, New York (1995)

    Google Scholar 

  47. Holzmann, G.J.: The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley, Reading (2004)

    Google Scholar 

  48. Jacky, J., Veanes, M., Campbell, C., Schulte, W.: Model-Based Software Testing and Analysis with C#. Cambridge University Press, Cambridge (2007)

    Book  Google Scholar 

  49. Karamanolis, C.T., Giannakopoulou, D., Magee, J., Wheater, S.M.: Model checking of workflow schemas. In: Proceedings, Enterprise Distributed Object Computing, EDOC, Makuhari, Japan, September 25–28, 2000, pp. 170–181. IEEE, Piscataway (2000)

    Google Scholar 

  50. King, J.C.: Symbolic execution and program testing. Commun. ACM 19(7), 385–394 (1976)

    Article  MathSciNet  Google Scholar 

  51. Klein, G., Andronick, J., Elphinstone, K., Murray, T.C., Sewell, T., Kolanski, R., Heiser, G.: Comprehensive formal verification of an OS micro-kernel. ACM Trans. Comput. Syst. 32(1), 2 (2014)

    Article  Google Scholar 

  52. Kozen, D.: Results on the propositional \(\mu\)-calculus. Theor. Comput. Sci. 27(3), 333–354 (1983)

    Article  MathSciNet  Google Scholar 

  53. Kripke, S.: A completeness theorem in modal logic. J. Symb. Log. 24(1), 1–14 (1959)

    Article  MathSciNet  Google Scholar 

  54. Kropf, T.: Introduction to Formal Hardware Verification. Springer, Heidelberg (1999)

    Book  Google Scholar 

  55. Kurshan, R.P.: Computer-Aided Verification of Coordinating Processes: The Automata-Theoretic Approach. Princeton University Press, Princeton (1994)

    MATH  Google Scholar 

  56. Lamport, L.: Proving the correctness of multiprocess programs. IEEE Trans. Softw. Eng. 2, 125–143 (1977)

    Article  MathSciNet  Google Scholar 

  57. Lee, E.A., Seshia, S.: Introduction to Embedded Systems, A Cyber-physical Systems Approach, 2nd edn. MIT Press, Cambridge (2015)

    MATH  Google Scholar 

  58. Legay, A., Delahaye, B., Bensalem, S.: Statistical model checking: an overview. In: Barringer, H., Falcone, Y., Finkbeiner, B., Havelund, K., Lee, I., Pace, G.J., Rosu, G., Sokolsky, O., Tillmann, N. (eds.) Proceedings, Runtime Verification, RV, St. Julian’s, Malta, November 1–4, 2010. LNCS, vol. 6418, pp. 122–135. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  59. Leroy, X.: Formal verification of a realistic compiler. Commun. ACM 52(7), 107–115 (2009)

    Article  Google Scholar 

  60. Leveson, N.G.: Safeware: System Safety and Computers. Addison-Wesley, Reading (1995)

    Google Scholar 

  61. Lichtenstein, O., Pnueli, A.: Checking that finite-state concurrent programs satisfy their linear specification. In: Van Deusen, M.S., Galil, Z., Reid, B.K. (eds.) Principles of Programming Languages, POPL, New Orleans, LA, USA, January 1985, pp. 97–107. ACM, New York (1985)

    Google Scholar 

  62. Manna, Z.: Introduction to Mathematical Theory of Computation. McGraw-Hill, New York (1974)

    MATH  Google Scholar 

  63. Manna, Z., Peled, D. (eds.): Time for Verification, Essays in Memory of Amir Pnueli. LNCS, vol. 6200. Springer, Heidelberg (2010)

    MATH  Google Scholar 

  64. Manna, Z., Pnueli, A.: The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Heidelberg (1992)

    Book  Google Scholar 

  65. Manna, Z., Wolper, P.: Synthesis of communicating processes from temporal-logic specifications. In: Kozen, D. (ed.) Proceedings, Logics of Programs, Yorktown Heights, NY, USA, May 1981. LNCS, vol. 131, pp. 253–281. Springer, Heidelberg (1981)

    Chapter  Google Scholar 

  66. McCarthy, J.: A basis for a mathematical theory of computation. In: Braffort, P., Hirschberg, D. (eds.) Computer Programming and Formal Systems. Studies in Logic and the Foundations of Mathematics, vol. 35, pp. 33–70. Elsevier, Amsterdam (1963)

    Chapter  Google Scholar 

  67. McMillan, K.L.: Symbolic Model Checking. Springer, Heidelberg (1993)

    Book  Google Scholar 

  68. Nielson, F., Riis Nielson, H., Hankin, C.: Principles of Program Analysis. Springer, Heidelberg (1999)

    Book  Google Scholar 

  69. Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL: A Proof Assistant for Higher-Order Logic. Springer, Heidelberg (2002)

    Book  Google Scholar 

  70. Panda, A., Argyraki, K.J., Sagiv, M., Schapira, M., Shenker, S.: New directions for network verification. In: Ball, T., Bodík, R., Krishnamurthi, S., Lerner, B.S., Morrisett, G. (eds.) Proceedings, Summit on Advances in Programming Languages, SNAPL, Asilomar, CA, USA, May 3–6, 2015. LIPIcs, vol. 32, pp. 209–220. Schloss Dagstuhl, Wadern (2015)

    Google Scholar 

  71. Peled, D.A.: Software Reliability Methods. Springer, Heidelberg (2001)

    Book  Google Scholar 

  72. Pnueli, A.: The temporal logic of programs. In: Proceedings, Foundations of Computer Science, FOCS, Providence, RI, USA, October 31–November 1, 1977, pp. 46–57. IEEE, Piscataway (1977)

    Google Scholar 

  73. Pnueli, A., Rosner, R.: On the synthesis of a reactive module. In: Proceedings, Principles of Programming Languages, POPL, Austin, TX, USA, January 11–13, 1989, pp. 179–190. ACM, New York (1989)

    Google Scholar 

  74. Priami, C., Morine, M.J.: Analysis of Biological Systems. Imperial College Press, London (2015)

    Book  Google Scholar 

  75. Queille, J.-P., Sifakis, J.: Specification and verification of concurrent systems in CESAR. In: Dezani-Ciancaglini, M., Montanari, U. (eds.) Proceedings, International Symposium on Programming, Torino, Italy, April 6–8, 1982. LNCS, vol. 137, pp. 337–351. Springer, Heidelberg (1982)

    Chapter  Google Scholar 

  76. Rabin, M.O.: Automata on Infinite Objects and Church’s Problem. AMS, Providence (1972)

    Book  Google Scholar 

  77. Ramadge, P.J.G., Wonham, W.M.: The control of discrete event systems. Proc. IEEE 77(1), 81–98 (1989)

    Article  Google Scholar 

  78. Raychev, V., Bielik, P., Vechev, M.T., Krause, A.: Learning programs from noisy data. In: Bodík, R., Majumdar, R. (eds.) Proceedings, Principles of Programming Languages, POPL, St. Petersburg, FL, USA, January 20–22, 2016, pp. 761–774. ACM, New York (2016)

    Google Scholar 

  79. Rice, H.G.: Classes of recursively enumerable sets and their decision problems. Trans. Am. Math. Soc. 74, 358–366 (1953)

    Article  MathSciNet  Google Scholar 

  80. Solar-Lezama, A.: Program sketching. Softw. Tools Technol. Transf. 15(5–6), 475–495 (2013)

    Article  Google Scholar 

  81. Tabuada, P.: Verification and Control of Hybrid Systems. Springer, Heidelberg (2009)

    Book  Google Scholar 

  82. Turing, A.: On computable numbers, with an application to the Entscheidungsproblem. Proc. Lond. Math. Soc. 42, 230–265 (1937)

    Article  MathSciNet  Google Scholar 

  83. van der Aalst, W.M.P.: Process Mining—Data Science in Action, 2nd edn. Springer, Heidelberg (2016)

    Book  Google Scholar 

  84. Vardi, M.Y., Wolper, P.: An automata-theoretic approach to automatic program verification. In: Proceedings, Logic in Computer Science, LICS, Cambridge, MA, USA, June 16–18, 1986, pp. 322–331. IEEE, Piscataway (1986)

    Google Scholar 

  85. Wiedijk, F. (ed.): The Seventeen Provers of the World. LNCS, vol. 3600. Springer, Heidelberg (2006)

    Google Scholar 

  86. Wolper, P., Vardi, M.Y., Sistla, A.P.: Reasoning about infinite computation paths. In: Proceedings, Foundations of Computer Science, FOCS, Tucson, AZ, USA, November 7–9, 1983, pp. 185–194. IEEE, Piscataway (1983)

    Google Scholar 

  87. Yang, J., Hawblitzel, C.: Safe to the last instruction: automated verification of a type-safe operating system. Commun. ACM 54(12), 123–131 (2011)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Thomas A. Henzinger .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG, part of Springer Nature

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Clarke, E.M., Henzinger, T.A., Veith, H. (2018). Introduction to Model Checking. In: Clarke, E., Henzinger, T., Veith, H., Bloem, R. (eds) Handbook of Model Checking. Springer, Cham. https://doi.org/10.1007/978-3-319-10575-8_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-10575-8_1

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-10574-1

  • Online ISBN: 978-3-319-10575-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics