Abstract
Much of an interpolation engine for bit-vector (BV) arithmetic can be constructed by observing that BV arithmetic can be modeled with linear integer arithmetic (LIA). Two BV formulae can thus be translated into two LIA formulae and then an interpolation engine for LIA used to derive an interpolant, albeit one expressed in LIA. The construction is completed by back-translating the LIA interpolant into a BV formula whose models coincide with those of the LIA interpolant. This paper develops a back-translation algorithm showing, for the first time, how back-translation can be universally applied, whatever the LIA interpolant. This avoids the need for deriving a BV interpolant by bit-blasting the BV formulae, as a backup process when back-translation fails. The new back-translation process relies on a novel geometric technique, called gapping, the correctness and practicality of which are demonstrated.
Chapter PDF
Similar content being viewed by others
References
Albarghouthi, A., McMillan, K.L.: Beautiful Interpolants. In: Computer Aided Verification. Lecture Notes in Computer Science, vol. 8044, pp. 313–329. Springer (2013)
Backeman, P., Rümmer, P., Zeljic, A.: Bit-Vector Interpolation and Quantifier Elimination by Lazy Reduction. In: Formal Methods in Computer Aided Design. pp. 1–10. IEEE (2018)
Barrett, C., Dill, D., Levitt, J.: A Decision Procedure for Bit-Vector Arithmetic. In: Design and Automation Conference. pp. 522–527 (1998)
Besson, F., Cornilleau, P.E., Jensen, T.: Result Certification of Static Program Analysers with Automated Theorem Provers. In: Verified Software: Theories, Tools, Experiments. Lecture Notes in Computer Science, vol. 8164, pp. 304–325. Springer (2014)
Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: The software model checker BLAST. International Journal on Software Tools for Technology Transfer 9(5-6), 505–525 (2007)
Beyer, D., Wendler, P.: Algorithms for software model checking: Predicate abstraction vs. Impact. In: Formal Methods in Computer-Aided Design. pp. 106–113. IEEE (2012)
Bryant, R.E., Kroening, D., Ouaknine, J., Seshia, S.A., Strichman, O., Brady, B.: Deciding Bit-Vector Arithmetic with Abstraction. In: Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science, vol. 4424, pp. 358–372. Springer (2007)
Cimatti, A., Griggio, A., Micheli, A., Narasamdya, I., Roveri, M.: Kratos – a Software Model Checker for SystemC. In: Computer Aided Verification. Lecture Notes in Computer Science, vol. 6808, pp. 123–136. Springer (2011)
Cimatti, A., Griggio, A., Schaafsma, B.J., Sebastiani, R.: The MathSAT5 SMT Solver. In: Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science, vol. 7795, pp. 93–107. Springer (2013)
Cimatti, A., Griggio, A., Sebastiani, R.: Efficient Interpolant Generation in Satisfiability Modulo Theories. In: Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science, vol. 4963, pp. 397–412. Springer (2008)
Cimatti, A., Griggio, A., Sebastiani, R.: Interpolant Generation for UTVPI. In: CADE. pp. 167–182 (2009)
Demyanova, Y., Rümmer, P., Zuleger, F.: Systematic Predicate Abstraction Using Variable Roles. In: NASA Formal Methods. Lecture Notes in Computer Science, vol. 10227, pp. 265–281. Springer (2017)
Elder, M., Lim, J., Sharma, T., Andersen, T., Reps, T.: Abstract Domains of Affine Relations. ACM Transactions on Programming Languages and Systems36 (2014)
Fouilhé, A., Monniaux, D., Périn, M.: Efficient Generation of Correctness Certificates for the Abstract Domain of Polyhedra. In: Static Analysis Symposium. Lecture Notes in Computer Science, vol. 7935, pp.345–365. Springer (2013)
Graf, S., Saïdi, H.: Construction of Abstract State Graphs with PVS. In: Computer Aided Verification. Lecture Notes in Computer Science, vol. 1254, pp. 72–83. Springer (1997)
Griggio, A.: Effective Word-Level Interpolation for Software Verification. In: Formal Methods in Computer-Aided Design. pp. 28–36. IEEE (2011)
Griggio, A., Le, T.T.H., Sebastiani, R.: Efficient Interpolant Generation in Satisfiability Modulo Linear Integer Arithmetic. Logical Methods in Computer Science 8(3) (2010)
Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Lazy Abstraction. In: Principles of Programming Languages. pp. 58–70 (2002)
Jain, H., Clarke, E.M., Grumberg, O.: Efficient Craig interpolation for linear Diophantine (dis)equations and linear modular equations. Formal Methods in System Design 35(1), 6–39 (2009)
Kapur, D., Majumdar, R., Zarba, C.G.: Interpolation for Data Structures. In: Foundations of Software Engineering. pp. 105–116 (2006)
Karr, M.: Affine Relationships among Variables of a Program. Acta Informatica6, 133–151 (1976)
King, A., Søndergaard, H.: Automatic Abstraction for Congruences. In: Verification, Model Checking, and Abstract Interpretation. Lecture Notes in Computer Science, vol. 9583, pp. 197–213. Springer (2010)
Kroening, D., Weissenbacher, G.: Lifting Propositional Interpolants to the Word-Level. In: Formal Methods in Computer-Aided Design. pp. 85–89. IEEE (2007)
McMillan, K.: An Interpolating Theorem Prover. Theoretical Computer Science345(1), 101–121 (2005)
McMillan, K.L.: Lazy Abstraction with Interpolants. In: Compute Aided Verification. Lecture Notes in Computer Science, vol. 4144, pp. 123–136.Springer (2006)
McMillan, K.L.: Interpolation and Model Checking. In: Handbook of Model Checking. pp. 421–446. Springer (2018)
Möller, M., Rue, H.: Solving Bit-Vector Equations. In: Formal Methods in Computer-Aided Design. Lecture Notes in Computer Science, vol. 1522, pp.36–48 (1998)
Müller-Olm, M., Seidl, H.: Analysis of Modular Arithmetic. ACM Transactions on Programming Languages and Systems 29(5),  29 (2007)
Pnueli, A., Rodeh, Y., Strichman, O., Siegel, M.: The Small Model Property: How small can it be? Information and Computation 178(1), 279–293(2002)
Rybalchenko, A., Sofronie-Stokkermans, V.: Constraint Solving for Interpolation. Journal of Symbolic Computation 45(11), 1212–1233(2010)
Services, A.W.: Amazon EC2 FAQs (2019), https://aws.amazon.com/ec2/faqs/
Simon, A., King, A.: Taming the Wrapping of Integer Arithmetic. In: Static Analysis Symposium. Lecture Notes in Computer Science, vol. 4634, pp.121–136. Springer (2007)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
Copyright information
© 2020 The Author(s)
About this paper
Cite this paper
Okudono, T., King, A. (2020). Mind the Gap: Bit-vector Interpolation recast over Linear Integer Arithmetic. In: Biere, A., Parker, D. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2020. Lecture Notes in Computer Science(), vol 12078. Springer, Cham. https://doi.org/10.1007/978-3-030-45190-5_5
Download citation
DOI: https://doi.org/10.1007/978-3-030-45190-5_5
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-45189-9
Online ISBN: 978-3-030-45190-5
eBook Packages: Computer ScienceComputer Science (R0)