Journal of Automated Reasoning

, Volume 58, Issue 3, pp 363–390 | Cite as

Abstract Interpretation as Automated Deduction

Article
  • 178 Downloads

Abstract

Automata theory, algorithmic deduction and abstract interpretation provide the foundation behind three approaches to implementing program verifiers. This article is a first step towards a mathematical translation between these approaches. By extending Büchi’s theorem, we show that reachability in a control flow graph can be encoded as satisfiability in an extension of the weak, monadic, second-order logic of one successor. Abstract interpreters are, in a precise sense, sound but incomplete solvers for such formulae. The three components of an abstract interpreter: the lattice, transformers and iteration algorithm, respectively represent a fragment of a first-order theory, deduction in that theory, and second-order constraint propagation. By inverting the Lindenbaum–Tarski construction, we show that lattices used in practice are subclassical first-order theories.

Keywords

Abstract interpretation Deduction Lindenbaum–Tarski construction 

References

  1. 1.
    Abramsky, S.: Domain theory and the logic of observable properties. PhD thesis, University of London (1987)Google Scholar
  2. 2.
    Aiken, A.: Introduction to set constraint-based program analysis. Sci. Comput. Program. 35, 79–111 (1999)MathSciNetCrossRefMATHGoogle Scholar
  3. 3.
    Bjørner, N., de Moura, L.: Applications of SMT solvers to program verification. In: Notes for the Summer School on Formal Techniques (2014)Google Scholar
  4. 4.
    Bjørner, N., Duterte, B., de Moura, L.: Accelerating lemma learning using joins – DPLL(\(\sqcup \)). In: Proceedings of Logic for Programming, Artificial Intelligence and Reasoning (2008)Google Scholar
  5. 5.
    Brain, M., D’silva, V., Griggio, A., Haller, L., Kroening, D.: Deciding floating-point logic with abstract conflict driven clause learning. Form. Methods Syst. Des. 45(2), 213–245 (2014)Google Scholar
  6. 6.
    Brain, M., Hadarean, L., Kroening, D., Martins, R., Automatic generation of propagation complete SAT encodings. In: Proceedings of Verification, Model Checking and Abstract Interpretation, Springer, pp. 536–556. (2016)Google Scholar
  7. 7.
    Büchi, J. R.: On a decision method in restricted second order arithmetic. In: Logic, Methodology and Philosophy of Science, Stanford Univ. Press, pp 1–11 (1960)Google Scholar
  8. 8.
    Cachera, D., Pichardie, D., Comparing techniques for certified static analysis. In: The NASA Formal Methods Symposium (NFM), NASA Ames Research Center, pp. 111–115. (2009)Google Scholar
  9. 9.
    Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Proceedings of Principles of Programming Languages, ACM Press, pp. 238–252. (1977)Google Scholar
  10. 10.
    Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: Proceedings of Principles of Programming Languages, ACM Press, pp. 269–282. (1979)Google Scholar
  11. 11.
    Cousot, P., Cousot, R., Mauborgne, L.: Theories, solvers and static analysis by abstract interpretation. J. ACM 59(6), 31:1–31:56 (2013)MathSciNetMATHGoogle Scholar
  12. 12.
    Dalla Preda, M., Giacobazzi, R., Lakhotia, A., Mastroeni, I.: Abstract symbolic automata: Mixed syntactic/semantic similarity analysis of executables. In: Proceedings of Principles of Programming Languages, ACM Press, pp. 329–341. (2015)Google Scholar
  13. 13.
    D’antoni, L.: Extended symbolic finite automata and transducers. Form. Methods Syst. Des. 47(1), 93–119 (2015)CrossRefMATHGoogle Scholar
  14. 14.
    D’Silva, V., Urban, C.: Abstract interpretation as automated deduction. In: Proceedings of Automated Deduction, pp. 450–464. (2015a)Google Scholar
  15. 15.
    D’Silva, V., Urban, C.: Conflict-driven conditional termination. In: Proceedings of Computer Aided Verification, pp. 471–286. (2015b)Google Scholar
  16. 16.
    D’Silva, V., Haller, L., Kroening, D.: Abstract conflict driven learning. In: Proceedings of Principles of Programming Languages, ACM Press, pp. 143–154. (2013)Google Scholar
  17. 17.
    D’Silva, V., Haller, L., Kroening, D.: Abstract satisfaction. In: Proceedings of Principles of Programming Languages, ACM Press, pp. 139–150. (2014)Google Scholar
  18. 18.
    van den Elsen, S.: Weak monadic second-order theory of one successor. Seminar: Decision Procedures, (2012) http://www.mpi-sws.org/~piskac/teaching/decpro-ws12/slides/WS1S.pdf
  19. 19.
    Grebenshchikov, S., Lopes, N. P., Popeea, C., Rybalchenko, A.: Synthesizing software verifiers from proof rules. In: Proceedings of Programming Language Design and Implementation, ACM Press, pp. 405–416. (2012)Google Scholar
  20. 20.
    Gulavani, B. S., Chakraborty, S., Nori, A. V., Rajamani, S. K.: Automatically refining abstract interpretations. In: Proceedings of Tools and Algorithms for the Construction and Analysis of Systems, Springer, LNCS, vol 4963, pp. 443–458. (2008)Google Scholar
  21. 21.
    Gulwani, S., Tiwari, A.: Combining abstract interpreters. In: Proceedings of Programming Language Design and Implementation, ACM Press, pp. 376–386. (2006)Google Scholar
  22. 22.
    Haller, L.C.R.: Abstract satisfaction. PhD thesis, University of Oxford (2014)Google Scholar
  23. 23.
    Harris, W.R., Sankaranarayanan, S., Ivančić, F., Gupta, A.: Program analysis via satisfiability modulo path programs. In: Proceedings of Principles of Programming Languages, pp. 71–82. (2010)Google Scholar
  24. 24.
    Heizmann, M., Hoenicke, J., Podelski, A.: Software model checking for people who love automata. In: Proceedings of Computer Aided Verification, Springer, pp. 36–52. (2013)Google Scholar
  25. 25.
    Jensen, T. P.: Strictness analysis in logical form. In: FPCA, Springer, pp. 352–366. (1991)Google Scholar
  26. 26.
    Johnstone, P.: Stone Spaces. Cambridge Studies in Advanced Mathematics. Cambridge University Press, Cambridge (1986)Google Scholar
  27. 27.
    Jourdan, J. H., Laporte, V., Blazy, S., Leroy, X., Pichardie, D.: A formally-verified c static analyzer. In: Proceedings of Principles of Programming Languages, ACM Press, pp. 247–259. (2015)Google Scholar
  28. 28.
    Kroening, D., Reps, T.W., Seshia, S.A., Thakur, A.V.: Decision procedures and abstract interpretation (Dagstuhl seminar 14351). Dagstuhl Rep. 4(8), 89–106 (2014)Google Scholar
  29. 29.
    Leino, K.R.M., Logozzo, F.: Using widenings to infer loop invariants inside an SMT solver, or: A theorem prover as abstract domain. In: Workshop on Invariant Generation, RISC Report 07–07, pp. 70–84. (2007)Google Scholar
  30. 30.
    Nieuwenhuis, R., Oliveras, A., Tinelli, C.: Solving SAT and SAT modulo theories: from an abstract Davis–Putnam–Logemann–Loveland procedure to DPLL(T). J. ACM 53, 937–977 (2006)MathSciNetCrossRefMATHGoogle Scholar
  31. 31.
    Pelleau, M., Truchet, C., Benhamou, F.: Octagonal domains for continuous constraints. In: CP, pp. 706–720. (2011)Google Scholar
  32. 32.
    Rasiowa, H., Sikorski, R.: The mathematics of metamathematics. Polish Academy of Science, Warsaw (1963)MATHGoogle Scholar
  33. 33.
    Schmidt, D. A.: Internal and external logics of abstract interpretations. In: Proceedings of Verification, Model Checking and Abstract Interpretation, Springer-Verlag, Berlin, Heidelberg, pp. 263–278. (2008)Google Scholar
  34. 34.
    Surma, S. J.: On the origin and subsequent applications of the concept of the lindenbaum algebra. In: L Jonathan Cohen HP Jerzy Loś, Podewski KP (eds) Logic, Methodology and Philosophy of Science VI, Proceedings of the Sixth International Congress of Logic, Methodology and Philosophy of Science, Studies in Logic and the Foundations of Mathematics, vol 104, Elsevier, pp. 719–734. (1982)Google Scholar
  35. 35.
    Thakur, A.V: Symbolic abstraction: Algorithms and applications. PhD thesis, The University of Wisconsin—Madison (2014)Google Scholar
  36. 36.
    Thakur, A.V., Reps, T.: A generalization of Stålmarck’s method. In: Proceedings of Static Analysis Symposium, Springer (2012a)Google Scholar
  37. 37.
    Thakur, A.V., Reps, T.W.: A method for symbolic computation of abstract operations. In: Proceedings of Computer Aided Verification (2012b)Google Scholar
  38. 38.
    Thomas, W.: Languages, automata, and logic. In: Rozenberg G, Salomaa A (eds) Handbook of Formal Languages, vol. 3, Springer, pp. 389–455. (1997)Google Scholar
  39. 39.
    Tiwari, A., Gulwani, S.: Logical interpretation: Static program analysis using theorem proving. In: Proceedings of Automated Deduction, pp. 147–166. (2007)Google Scholar
  40. 40.
    Truchet, C., Pelleau, M., Benhamou, F.: Abstract domains for constraint programming, with the example of octagons. In: Symbolic and Numeric Algorithms for Scientific Computing, pp. 72–79. (2010)Google Scholar
  41. 41.
    Vardi, M. Y., Wilke, T.: Automata: from logics to algorithms. In: Logic and Automata: History and Perspectives [in Honor of Wolfgang Thomas]., pp. 629–736. (2008)Google Scholar
  42. 42.
    Vardi, M.Y., Wolper, P.: Reasoning about infinite computations. Inform. Comput. 115(1), 1–37 (1994)MathSciNetCrossRefMATHGoogle Scholar

Copyright information

© Springer Science+Business Media Dordrecht 2016

Authors and Affiliations

  1. 1.Google Inc.San FranciscoUSA
  2. 2.ETH ZürichZürichSwitzerland

Personalised recommendations