Advertisement

Combining Model Checking and Deduction

  • Natarajan Shankar
Chapter

Abstract

There are two basic approaches to automated verification. In model checking, the system is viewed as a graph representing possible execution steps. Properties are established by exploring or traversing the graph structure. In deduction, both the system and its putative properties are represented by formulas in a logic, and the resulting proof obligations are discharged by decision procedures or by automated or semi-automated proof construction. Model checking sacrifices expressivity for greater automation, and with deduction it is vice versa. Newer techniques combine deductive and model-checking approaches to achieve greater scale, expressivity, and automation. We examine the logical foundations of the two approaches and explore their similarities, differences, and complementarities. The presentation is directed at students and researchers who are interested in understanding the research challenges at the intersection of deduction and model checking.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Abdulla, P.A., Sistla, A.P., Talupur, M.: Model checking parameterized systems. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  2. 2.
    Alur, R., Dill, D.L.: A theory of timed automata. Theor. Comput. Sci. 126(2), 183–235 (1994) MathSciNetCrossRefGoogle Scholar
  3. 3.
    Andrews, P.B.: An Introduction to Mathematical Logic and Type Theory: To Truth Through Proof. Academic Press, Cambridge (1986) zbMATHGoogle Scholar
  4. 4.
    Apt, K.R.: Ten years of Hoare’s logic: a survey—Part 1. Trans. Program. Lang. Syst. 3(4), 431–483 (1981) CrossRefGoogle Scholar
  5. 5.
    Arora, S., Barak, B.: Computational Complexity: A Modern Approach. Cambridge University Press, Cambridge (2009) CrossRefGoogle Scholar
  6. 6.
    Ball, T., Majumdar, R., Millstein, T., Rajamani, S.: Automatic predicate abstraction of C programs. In: Conf. on Programming Language Design and Implementation (PLDI), pp. 203–313. ACM, New York (2001) Google Scholar
  7. 7.
    Barrett, C.W., Tinelli, C.: Satisfiability modulo theories. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  8. 8.
    Barwise, J.: First-order logic. In: Barwise, J. (ed.) Handbook of Mathematical Logic, Studies in Logic and the Foundations of Mathematics, vol. 90, pp. 5–46. North-Holland, Amsterdam (1978) CrossRefGoogle Scholar
  9. 9.
    Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Springer, Heidelberg (2004). Coq home page: http://coq.inria.fr/ CrossRefGoogle Scholar
  10. 10.
    Biere, A., Kroening, D.: SAT-based model checking. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  11. 11.
    Blackburn, P., de Rijke, M., Venema, Y.: Modal Logic. Cambridge University Press, Cambridge (2002) zbMATHGoogle Scholar
  12. 12.
    Bloem, R., Chatterjee, K., Jobstmann, B.: Graph games and reactive synthesis. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  13. 13.
    Börger, E., Grädel, E., Gurevich, Y.: The Classical Decision Problem. Perspectives in Mathematical Logic. Springer, Heidelberg (1997) CrossRefGoogle Scholar
  14. 14.
    Bouyer, P., Fahrenberg, U., Larsen, K.G., Markey, N., Ouaknine, J., Worrell, J.: Model checking real-time systems. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  15. 15.
    Bradfield, J., Walukiewicz, I.: The mu-calculus and model checking. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  16. 16.
    Bradley, A.R.: SAT-based model checking without unrolling. In: Jhala, R., Schmidt, D.A. (eds.) Intl. Conf. on Verification, Model Checking and Abstract Interpretation (VMCAI). LNCS, vol. 6538, pp. 70–87. Springer, Heidelberg (2011) CrossRefGoogle Scholar
  17. 17.
    Bradley, A.R.: Understanding IC3. In: Cimatti, A., Sebastiani, R. (eds.) Theory and Applications of Satisfiability Testing (SAT). LNCS, vol. 7317, pp. 1–14. Springer, Heidelberg (2012) Google Scholar
  18. 18.
    Bradley, A.R., Manna, Z.: The Calculus of Computation: Decision Procedures with Applications to Verification. Springer, Heidelberg (2007) zbMATHGoogle Scholar
  19. 19.
    Bryant, R.E.: Binary decision diagrams. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  20. 20.
    Buss, S.R.: The Boolean formula value problem is in ALOGTIME. In: ACM Symposium on Theory of Computing (STOC), pp. 123–131. ACM, New York (1987) Google Scholar
  21. 21.
    Chaki, S., Gurfinkel, A.: BDD-based symbolic model checking. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) zbMATHGoogle Scholar
  22. 22.
    Chandy, K.M., Misra, J.: Parallel Program Design: A Foundation. Addison-Wesley, Reading (1988) zbMATHGoogle Scholar
  23. 23.
    Church, A.: A formulation of the simple theory of types. J. Symb. Log. 5, 56–68 (1940) MathSciNetCrossRefGoogle Scholar
  24. 24.
    Clarke, E.M., Grumberg, O., Peled, D.: Model Checking. MIT Press, Cambridge (1999) Google Scholar
  25. 25.
    Constable, R.L., Allen, S.F., Bromley, H.M., Cleaveland, W.R., Cremer, J.F., Harper, R.W., Howe, D.J., Knoblock, T.B., Mendler, N.P., Panangaden, P., Sasaki, J.T., Smith, S.F.: Implementing Mathematics with the Nuprl Proof Development System. Prentice Hall, New York (1986). Nuprl home page: http://www.nuprl.org Google Scholar
  26. 26.
    Cook, S.A.: Soundness and completeness of an axiom system for program verification. SIAM J. Comput. 7(1), 70–90 (1978) MathSciNetCrossRefGoogle Scholar
  27. 27.
    Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Păsăreanu, C.S., Robby, Zheng, H.: Bandera: extracting finite-state models from Java source code. In: International Conference on Software Engineering, pp. 439–448 (2000) Google Scholar
  28. 28.
    Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: ACM Symposium on Principles of Programming Languages, pp. 238–252. ACM, New York (1977) Google Scholar
  29. 29.
    Craig, W.: Three uses of the Herbrand-Gentzen theorem in relating model theory and proof theory. J. Symb. Log. 22(3), 269–285 (1957) MathSciNetCrossRefGoogle Scholar
  30. 30.
    Dams, D., Grumberg, O.: Abstraction and abstraction refinement. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  31. 31.
    Doyen, L., Frehse, G., Pappas, G.J., Platzer, A.: Verification of hybrid systems. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  32. 32.
    Emerson, E.A.: Temporal and modal logics. In: van Leeuwen, J. (ed.) Handbook of Theoretical Computer Science Volume B: Formal Models and Semantics, pp. 997–1072. MIT Press/Elsevier, Cambridge/Amsterdam (1990) Google Scholar
  33. 33.
    Emerson, E.A., Clarke, E.M.: Using branching time temporal logic to synthesize synchronization skeletons. Sci. Comput. Program. 2(3), 241–266 (1982) CrossRefGoogle Scholar
  34. 34.
    Floyd, R.W.: Assigning meanings to programs. In: Mathematical Aspects of Computer Science, Proceedings of Symposia in Applied Mathematics, vol. XIX, pp. 19–32. AMS, Providence (1967) CrossRefGoogle Scholar
  35. 35.
    Ganzinger, H., Rueß, H., Shankar, N.: Modularity and refinement in inference systems. Tech. Rep. CSL-SRI-04-02, SRI International, Computer Science Laboratory (2004). Revised, August 2004 Google Scholar
  36. 36.
    Giannakopoulou, D., Namjoshi, K.S., Păsăreanu, C.S.: Compositional reasoning. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  37. 37.
    Godefroid, P., Sen, K.: Combining model checking and testing. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  38. 38.
    Gordon, M.J.C., Melham, T.F. (eds.): Introduction to HOL: A Theorem Proving Environment for Higher-Order Logic. Cambridge University Press, Cambridge (1993). HOL home page: http://www.cl.cam.ac.uk/Research/HVG/HOL/ zbMATHGoogle Scholar
  39. 39.
    Harel, D.: First Order Dynamic Logic. LNCS, vol. 68. Springer, Heidelberg (1979) CrossRefGoogle Scholar
  40. 40.
    Hennessy, M., Milner, R.: Algebraic laws for nondeterminism and concurrency. J. ACM 32(1), 137–161 (1985) MathSciNetCrossRefGoogle Scholar
  41. 41.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–583 (1969) CrossRefGoogle Scholar
  42. 42.
    Holzmann, G.: Explicit-state model checking. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  43. 43.
    Immerman, N.: Descriptive Complexity. Springer, Heidelberg (1999) CrossRefGoogle Scholar
  44. 44.
    Jhala, R., Podelski, A., Rybalchenko, A.: Predicate abstraction for program verification. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  45. 45.
    Jones, C.B.: The early search for tractable ways of reasoning about programs. IEEE Ann. Hist. Comput. 25(2), 26–49 (2003) MathSciNetCrossRefGoogle Scholar
  46. 46.
    Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Advances in Formal Methods, vol. 3. Kluwer Academic, Norwell (2000) Google Scholar
  47. 47.
    Lahiri, S., Nieuwenhuis, R., Oliveras, A.: SMT techniques for predicate abstraction. In: Computer-Aided Verification, CAV. LNCS, vol. 4144, pp. 424–437. Springer, Heidelberg (2006) CrossRefGoogle Scholar
  48. 48.
    Leivant, D.: Higher order logic. In: Gabbay, D.M., Hogger, C.J., Robinson, J.A. (eds.) Handbook of Logic in Artificial Intelligence and Logic Programming, Volume 2: Deduction Methodologies, pp. 229–321. Clarendon, Oxford (1994) Google Scholar
  49. 49.
    Li, Y., Albarghouthi, A., Kincaid, Z., Gurfinkel, A., Chechik, M.: Symbolic optimization with SMT solvers. In: Jagannathan, S., Sewell, P. (eds.) ACM Symposium on Principles of Programming Languages, pp. 607–618. ACM, New York (2014) Google Scholar
  50. 50.
    Majumdar, R., Raskin, J.F.: Symbolic model checking in non-Boolean domains. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  51. 51.
    Manna, Z., Pnueli, A.: The Temporal Logic of Reactive and Concurrent Systems, Volume 1: Specification. Springer, Heidelberg (1992) CrossRefGoogle Scholar
  52. 52.
    Marques-Silva, J., Malik, S.: Propositional SAT solving. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  53. 53.
    McCarthy, J.: A basis for a mathematical theory of computation. In: Braffort, P., Hershberg, D. (eds.) Computer Programming and Formal Systems. North-Holland, Amsterdam (1963) Google Scholar
  54. 54.
    McMillan, K.L.: Interpolation and model checking. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  55. 55.
    Mints, G.E.: A short introduction to modal logic. No. 30 in CSLI lecture notes. Center for the Study of Language and Information (1992) Google Scholar
  56. 56.
    Morris, F.L., Jones, C.B.: An early program proof by Alan Turing. IEEE Ann. Hist. Comput. 6(2), 139–143 (1984) MathSciNetCrossRefGoogle Scholar
  57. 57.
    de Moura, L., Owre, S., Rueß, H., Rushby, J., Shankar, N., Sorea, M., Tiwari, A.: SAL 2. In: Computer-Aided Verification, CAV. LNCS, pp. 496–500. Springer, Heidelberg (2004). SAL home page: http://sal.csl.sri.com/ CrossRefGoogle Scholar
  58. 58.
    Nelson, G., Oppen, D.C.: Simplification by cooperating decision procedures. Trans. Program. Lang. Syst. 1(2), 245–257 (1979) CrossRefGoogle Scholar
  59. 59.
    von Neumann, J.: John von Neumann, Collected Works, vol. V. Pergamon, Oxford (1961) Google Scholar
  60. 60.
    Neumann, J.v., Goldstine, H.H.: Planning and Coding of Problems for an Electronic Computing Instrument. Institute for Advanced Study, Princeton (1948) Google Scholar
  61. 61.
    Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer, Heidelberg (2001) zbMATHGoogle Scholar
  62. 62.
    Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL: A Proof Assistant for Higher-Order Logic. Springer, Heidelberg (2002). Isabelle home page: http://isabelle.in.tum.de/ CrossRefGoogle Scholar
  63. 63.
    Owre, S., Rushby, J., Shankar, N., von Henke, F.: Formal verification for fault-tolerant architectures: prolegomena to the design of PVS. Trans. Softw. Eng. 21(2), 107–125 (1995). PVS home page: http://pvs.csl.sri.com CrossRefGoogle Scholar
  64. 64.
    Park, D.: Finiteness is mu-ineffable. Theor. Comput. Sci. 3(2), 173–181 (1976) CrossRefGoogle Scholar
  65. 65.
    Peterson, G.L.: Myths about the mutual exclusion problem. Inf. Process. Lett. 12(3), 115–116 (1981) CrossRefGoogle Scholar
  66. 66.
    Pike, L., Brown, G.M.: Easy parameterized verification of biphase mark and 8N1 decoders. In: Hermanns, H., Palsberg, J. (eds.) Intl. Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). LNCS, vol. 3920, pp. 58–72. Springer, Heidelberg (2006) Google Scholar
  67. 67.
    Piterman, N., Pnueli, A.: Temporal logic and fair discrete systems. In: Clarke, E.M., Henzinger, T.A., Veith, H., Bloem, R. (eds.) Handbook of Model Checking. Springer, Heidelberg (2018) Google Scholar
  68. 68.
    Pratt, V.R.: Semantical considerations on Floyd-Hoare logic. In: Annual Symposium on Foundations of Computer Science, pp. 109–121 (1976) Google Scholar
  69. 69.
    Queille, J.P., Sifakis, J.: Specification and verification of concurrent systems in CESAR. In: Proceedings of the 5th International Symposium on Programming. LNCS, vol. 137, pp. 337–351. Springer, Heidelberg (1982) CrossRefGoogle Scholar
  70. 70.
    Rajan, S., Shankar, N., Srivas, M.: An integration of model-checking with automated proof checking. In: Wolper, P. (ed.) Computer-Aided Verification, CAV. LNCS, vol. 939, pp. 84–97. Springer, Heidelberg (1995) CrossRefGoogle Scholar
  71. 71.
    Reps, T., Sagiv, M., Yorsh, G.: Symbolic implementation of the best transformer. In: Steffen, B., Levi, G. (eds.) Intl. Conf. on Verification, Model Checking and Abstract Interpretation (VMCAI). LNCS, vol. 2937, pp. 252–266. Springer, Heidelberg (2004) CrossRefGoogle Scholar
  72. 72.
    Reynolds, J.C.: Separation logic: a logic for shared mutable data structures. In: Annual IEEE Symposium on Logic in Computer Science, pp. 55–74 (2002) CrossRefGoogle Scholar
  73. 73.
    Rondon, P.M., Kawaguchi, M., Jhala, R.: Liquid types. In: Gupta, R., Amarasinghe, S.P. (eds.) Conf. on Programming Language Design and Implementation (PLDI), pp. 159–169. ACM, New York (2008). doi: 10.1145/1375581.1375602 CrossRefGoogle Scholar
  74. 74.
    Rushby, J.M., von Henke, F., Owre, S.: An introduction to formal specification and verification using EHDM. Tech. Rep. SRI-CSL-91-2, Computer Science Laboratory, SRI International (1991) Google Scholar
  75. 75.
    Saïdi, H., Graf, S.: Construction of abstract state graphs with PVS. In: Computer-Aided Verification, CAV. LNCS, pp. 72–83. Springer, Heidelberg (1997) Google Scholar
  76. 76.
    Saïdi, H., Shankar, N.: Abstract and model check while you prove. In: Computer-Aided Verification, CAV. LNCS, pp. 443–454. Springer, Heidelberg (1999) CrossRefGoogle Scholar
  77. 77.
    Sankaranarayanan, S., Sipma, H.B., Manna, Z.: Scalable analysis of linear systems using mathematical programming. In: Cousot, R. (ed.) Intl. Conf. on Verification, Model Checking and Abstract Interpretation (VMCAI). LNCS, vol. 3385, pp. 25–41. Springer, Heidelberg (2005) CrossRefGoogle Scholar
  78. 78.
    Shankar, N.: Automated deduction for verification. ACM Comput. Surv. 41(4), 20:1–20:56 (2009). doi: 10.1145/1592434.1592437 CrossRefGoogle Scholar
  79. 79.
    Turing, A.M.: Checking a large routine. In: Ince, D.C. (ed.) Collected Works of A.M. Turing: Mechanical Intelligence, pp. 129–131. North-Holland, Amsterdam (1992). Originally presented at EDSAC Inaugural Conference on High Speed Automatic Calculating Machines, 24 June, 1949 Google Scholar

Copyright information

© Springer International Publishing AG, part of Springer Nature 2018

Authors and Affiliations

  1. 1.SRI InternationalMenlo ParkUSA

Personalised recommendations