Abstract
We present a full-program induction technique for proving (a sub-class of) quantified as well as quantifier-free properties of programs manipulating arrays of parametric size N. Instead of inducting over individual loops, our technique inducts over the entire program (possibly containing multiple loops) directly via the program parameter N. Significantly, this does not require generation or use of loop-specific invariants. We have developed a prototype tool Vajra to assess the efficacy of our technique. We demonstrate the performance of Vajra vis-a-vis several state-of-the-art tools on a set of array manipulating benchmarks.
Chapter PDF
Similar content being viewed by others
References
Alberti, F., Ghilardi, S., Sharygina, N.: Booster: An acceleration-based verification framework for array programs. In: Proc. of ATVA. pp. 18–23 (2014)
Beyer, D., Henzinger, T.A., Majumdar, R., Rybalchenko, A.: Invariant synthesis for combined theories. In: Proc. of VMCAI. pp. 378–394 (2007)
Chakraborty, S., Gupta, A., Unadkat, D.: Verifying array manipulating programs with full-program induction, https://www.cse.iitb.ac.in/~supratik/publications/papers/FPI_longversion.html
Chakraborty, S., Gupta, A., Unadkat, D.: Verifying Array Manipulating Programs by Tiling. In: Proc. of SAS. pp. 428–449 (2017)
Chakraborty, S., Gupta, A., Unadkat, D.: Verifying Array Manipulating Programs with Full-program Induction - Artifacts TACAS 2020. Figshare (2020). https://doi.org/10.6084/m9.figshare.11875428.v1
Clarke, E., Biere, A., Raimi, R., Zhu, Y.: Bounded model checking using satisfiability solving. FMSD 19(1), 7–34 (2001)
Cousot, P., Cousot, R., Logozzo, F.: A parametric segmentation functor for fully automatic and scalable array content analysis. In: Proc. of POPL. pp. 105–118 (2011)
Darke, P., Prabhu, S., Chimdyalwar, B., Chauhan, A., Kumar, S., Basakchowdhury, A., Venkatesh, R., Datar, A., Medicherla, R.K.: VeriAbs: Verification by abstraction and test generation. In: TACAS (Competition Contribution). pp. 457–462 (2018)
Ernst, M.D., Perkins, J.H., Guo, P.J., McCamant, S., Pacheco, C., Tschantz, M.S., Xiao, C.: The Daikon system for dynamic detection of likely invariants. Sci. Comput. Program. 69(1-3), 35–45 (2007)
Fedyukovich, G., Prabhu, S., Madhukar, K., Gupta, A.: Quantified invariants via syntax-guided-synthesis. In: Proc. of CAV. pp. 259–277 (2019)
Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. TOPLAS 9(3), 319–349 (1987)
Flanagan, C., Leino, K.R.M.: Houdini, an annotation assistant for ESC/Java. In: Proc. of FME. pp. 500–517 (2001)
Gopan, D., Reps, T.W., Sagiv, S.: A framework for numeric analysis of array operations. In: Proc. of POPL. pp. 338–350 (2005)
Gulwani, S., McCloskey, B., Tiwari, A.: Lifting abstract interpreters to quantified logical domains. In: Proc. of POPL. pp. 235–246 (2008)
Gurfinkel, A., Shoham, S., Vizel, Y.: Quantifiers on demand. In: Proc. of ATVA. pp. 248–266 (2018)
Halbwachs, N., Péron, M.: Discovering properties about arrays in simple programs. In: Proc. of PLDI. pp. 339–348 (2008)
Henzinger, T.A., Hottelier, T., Kovács, L., Rybalchenko, A.: Aligators for arrays (tool paper). In: Proc. of LPAR. pp. 348–356 (2010)
Jacobs, B., Smans, J., Philippaerts, P., Vogels, F., Penninckx, W., Piessens, F.: VeriFast: A powerful, sound, predictable, fast verifier for C and Java. In: Proc. of NFM. pp. 41–55 (2011)
Jhala, R., McMillan, K.L.: Array abstractions from proofs. In: Proc. of CAV. pp. 193–206 (2007)
Knobe, K., Sarkar, V.: Array SSA form and its use in parallelization. In: Proc. of POPL. pp. 107–120 (1998)
Komuravelli, A., Bjorner, N., Gurfinkel, A., McMillan, K.L.: Compositional verification of procedural programs using Horn clauses over integers and arrays. In: Proc. of FMCAD. pp. 89–96 (2015)
Lattner, C.: LLVM and Clang: Next generation compiler technology. In: The BSD Conference. pp. 1–2 (2008)
Liu, J., Rival, X.: Abstraction of arrays based on non contiguous partitions. In: Proc. of VMCAI. pp. 282–299 (2015)
Monniaux, D., Gonnord, L.: Cell Morphing: From array programs to array-free horn clauses. In: Proc. of SAS. pp. 361–382 (2016)
de Moura, L.M., Bjørner, N.: Z3: an efficient SMT solver. In: Proc. ofTACAS. pp. 337–340 (2008)
Rajkhowa, P., Lin, F.: Extending VIAP to handle array programs. In: Proc. ofVSTTE. pp. 38–49 (2018)
Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Global value numbers and redundantcomputations. In: Proc. of POPL. pp. 12–27 (1988)
Seghir, M.N., Brain, M.: Simplifying the verification of quantified arrayassertions via code transformation. In: Proc. of LOPSTR. pp. 194–212(2012)
Sheeran, M., Singh, S., Stålmarck, G.: Checking safety properties usinginduction and a SAT-solver. In: Proc. of FMCAD. pp. 127–144 (2000)
Srivastava, S., Gulwani, S.: Program verification using templates overpredicate abstraction. ACM Sigplan Notices 44(6), 223–234 (2009)
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
Chakraborty, S., Gupta, A., Unadkat, D. (2020). Verifying Array Manipulating Programs with Full-Program Induction. 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_2
Download citation
DOI: https://doi.org/10.1007/978-3-030-45190-5_2
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)