Advertisement

Efficient Interpolation for the Theory of Arrays

  • Jochen Hoenicke
  • Tanja Schindler
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10900)

Abstract

Existing techniques for Craig interpolation for the quantifier-free fragment of the theory of arrays are inefficient for computing sequence and tree interpolants: the solver needs to run for every partitioning (AB) of the interpolation problem to avoid creating AB-mixed terms. We present a new approach using Proof Tree Preserving Interpolation and an array solver based on Weak Equivalence on Arrays. We give an interpolation algorithm for the lemmas produced by the array solver. The computed interpolants have worst-case exponential size for extensionality lemmas and worst-case quadratic size otherwise. We show that these bounds are strict in the sense that there are lemmas with no smaller interpolants. We implemented the algorithm and show that the produced interpolants are useful to prove memory safety for C programs.

Notes

Acknowledgement

We would like to thank Daniel Dietsch for running the experiments.

References

  1. 1.
    Andrianov, P., Friedberger, K., Mandrykin, M., Mutilin, V., Volkov, A.: CPA-BAM-BnB: block-abstraction memoization and region-based memory models for predicate abstractions. In: Legay, A., Margaria, T. (eds.) TACAS 2017. LNCS, vol. 10206, pp. 355–359. Springer, Heidelberg (2017).  https://doi.org/10.1007/978-3-662-54580-5_22CrossRefGoogle Scholar
  2. 2.
    Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: The software model checker BLAST. STTT 9(5–6), 505–525 (2007)CrossRefGoogle Scholar
  3. 3.
    Beyer, D., Löwe, S., Wendler, P.: Benchmarking and resource measurement. In: Fischer, B., Geldenhuys, J. (eds.) SPIN 2015. LNCS, vol. 9232, pp. 160–178. Springer, Cham (2015).  https://doi.org/10.1007/978-3-319-23404-5_12CrossRefGoogle Scholar
  4. 4.
    Bonacina, M., Johansson, M.: On interpolation in automated theorem proving. J. Autom. Reason. 54(1), 69–97 (2015)MathSciNetCrossRefGoogle Scholar
  5. 5.
    Brillout, A., Kroening, D., Rümmer, P., Wahl, T.: Program verification via Craig interpolation for Presburger arithmetic with arrays. In: VERIFY@IJCAR, pp. 31–46. EasyChair (2010)Google Scholar
  6. 6.
    Bruttomesso, R., Ghilardi, S., Ranise, S.: Quantifier-free interpolation of a theory of arrays. Log. Methods Comput. Sci. 8(2), (2012)Google Scholar
  7. 7.
    Bruttomesso, R., Ghilardi, S., Ranise, S.: Quantifier-free interpolation in combinations of equality interpolating theories. ACM Trans. Comput. Log. 15(1), 5:1–5:34 (2014)MathSciNetCrossRefGoogle Scholar
  8. 8.
    Cassez, F., Sloane, A.M., Roberts, M., Pigram, M., Suvanpong, P., de Aledo, P.G.: Skink: static analysis of programs in LLVM intermediate representation. In: Legay, A., Margaria, T. (eds.) TACAS 2017. LNCS, vol. 10206, pp. 380–384. Springer, Heidelberg (2017).  https://doi.org/10.1007/978-3-662-54580-5_27CrossRefGoogle Scholar
  9. 9.
    Christ, J., Hoenicke, J.: Instantiation-based interpolation for quantified formulae. In: Decision Procedures in Software, Hardware and Bioware. Dagstuhl Seminar Proceedings, vol. 10161. Schloss Dagstuhl, Germany (2010)Google Scholar
  10. 10.
    Christ, J., Hoenicke, J.: Weakly equivalent arrays. In: Lutz, C., Ranise, S. (eds.) FroCoS 2015. LNCS (LNAI), vol. 9322, pp. 119–134. Springer, Cham (2015).  https://doi.org/10.1007/978-3-319-24246-0_8CrossRefGoogle Scholar
  11. 11.
    Christ, J., Hoenicke, J.: Proof tree preserving tree interpolation. J. Autom. Reason. 57(1), 67–95 (2016)MathSciNetCrossRefGoogle Scholar
  12. 12.
    Christ, J., Hoenicke, J., Nutz, A.: SMTInterpol: an interpolating SMT solver. In: Donaldson, A., Parker, D. (eds.) SPIN 2012. LNCS, vol. 7385, pp. 248–254. Springer, Heidelberg (2012).  https://doi.org/10.1007/978-3-642-31759-0_19CrossRefGoogle Scholar
  13. 13.
    Christ, J., Hoenicke, J., Nutz, A.: Proof tree preserving interpolation. In: Piterman, N., Smolka, S.A. (eds.) TACAS 2013. LNCS, vol. 7795, pp. 124–138. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-36742-7_9CrossRefGoogle Scholar
  14. 14.
    Dangl, M., Löwe, S., Wendler, P.: CPAchecker with support for recursive programs and floating-point arithmetic. In: Baier, C., Tinelli, C. (eds.) TACAS 2015. LNCS, vol. 9035, pp. 423–425. Springer, Heidelberg (2015).  https://doi.org/10.1007/978-3-662-46681-0_34CrossRefGoogle Scholar
  15. 15.
    Fuchs, A., Goel, A., Grundy, J., Krstic, S., Tinelli, C.: Ground interpolation for the theory of equality. Log. Methods Comput. Sci. 8(1) (2012)Google Scholar
  16. 16.
    Greitschus, M., Dietsch, D., Heizmann, M., Nutz, A., Schätzle, C., Schilling, C., Schüssele, F., Podelski, A.: Ultimate Taipan: trace abstraction and abstract interpretation. In: Legay, A., Margaria, T. (eds.) TACAS 2017. LNCS, vol. 10206, pp. 399–403. Springer, Heidelberg (2017).  https://doi.org/10.1007/978-3-662-54580-5_31CrossRefGoogle Scholar
  17. 17.
    Heizmann, M., et al.: Ultimate Automizer with an on-demand construction of Floyd-Hoare automata. In: Legay, A., Margaria, T. (eds.) TACAS 2017. LNCS, vol. 10206, pp. 394–398. Springer, Heidelberg (2017).  https://doi.org/10.1007/978-3-662-54580-5_30CrossRefGoogle Scholar
  18. 18.
    Heizmann, M., Dietsch, D., Leike, J., Musa, B., Podelski, A.: Ultimate Automizer with array interpolation. In: Baier, C., Tinelli, C. (eds.) TACAS 2015. LNCS, vol. 9035, pp. 455–457. Springer, Heidelberg (2015).  https://doi.org/10.1007/978-3-662-46681-0_43CrossRefGoogle Scholar
  19. 19.
    Heizmann, M., Hoenicke, J., Podelski, A.: Nested interpolants. In: POPL, pp. 471–482. ACM (2010)CrossRefGoogle Scholar
  20. 20.
    Henzinger, T., Jhala, R., Majumdar, R., Sutre, G.: Lazy abstraction. In: POPL, pp. 58–70. ACM (2002)CrossRefGoogle Scholar
  21. 21.
    Hoenicke, J., Schindler, T.: Efficient interpolation for the theory of arrays. CoRR, abs/1804.07173 (2018)Google Scholar
  22. 22.
    Krajícek, J.: Interpolation theorems, lower bounds for proof systems, and independence results for bounded arithmetic. J. Symb. Log. 62(2), 457–486 (1997)MathSciNetCrossRefGoogle Scholar
  23. 23.
    McCarthy, J.: Towards a mathematical science of computation. In: IFIP Congress, pp. 21–28 (1962)Google Scholar
  24. 24.
    McMillan, K.: An interpolating theorem prover. Theor. Comput. Sci. 345(1), 101–121 (2005)MathSciNetCrossRefGoogle Scholar
  25. 25.
    McMillan, K.L.: Lazy abstraction with interpolants. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 123–136. Springer, Heidelberg (2006).  https://doi.org/10.1007/11817963_14CrossRefGoogle Scholar
  26. 26.
    Nutz, A., Dietsch, D., Mohamed, M.M., Podelski, A.: ULTIMATE KOJAK with memory safety checks. In: Baier, C., Tinelli, C. (eds.) TACAS 2015. LNCS, vol. 9035, pp. 458–460. Springer, Heidelberg (2015).  https://doi.org/10.1007/978-3-662-46681-0_44CrossRefGoogle Scholar
  27. 27.
    Pudlák, P.: Lower bounds for resolution and cutting plane proofs and monotone computations. J. Symb. Log. 62(3), 981–998 (1997)MathSciNetCrossRefGoogle Scholar
  28. 28.
    Sofronie-Stokkermans, V.: Hierarchic reasoning in local theory extensions. In: Nieuwenhuis, R. (ed.) CADE 2005. LNCS (LNAI), vol. 3632, pp. 219–234. Springer, Heidelberg (2005).  https://doi.org/10.1007/11532231_16CrossRefGoogle Scholar
  29. 29.
    Totla, N., Wies, T.: Complete instantiation-based interpolation. J. Autom. Reason. 57(1), 37–65 (2016)MathSciNetCrossRefGoogle Scholar
  30. 30.
    Yorsh, G., Musuvathi, M.: A combination method for generating interpolants. In: Nieuwenhuis, R. (ed.) CADE 2005. LNCS (LNAI), vol. 3632, pp. 353–368. Springer, Heidelberg (2005).  https://doi.org/10.1007/11532231_26CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG, part of Springer Nature 2018

Authors and Affiliations

  1. 1.University of FreiburgFreiburgGermany

Personalised recommendations