English

Full-Program Induction: Verifying Array Programs sans Loop Invariants

Programming Languages 2022-09-27 v1

Abstract

Arrays are commonly used in a variety of software to store and process data in loops. Automatically proving safety properties of such programs that manipulate arrays is challenging. We present a novel verification technique, called full-program induction, for proving (a sub-class of) quantified as well as quantifier-free properties of programs manipulating arrays of parametric size NN. Instead of inducting over individual loops, our technique inducts over the entire program (possibly containing multiple loops) directly via the program parameter NN. The technique performs non-trivial transformations of the given program and pre-conditions during the inductive step. The transformations assist in effectively reducing the assertion checking problem by transforming a program with multiple loops to a program which has fewer and simpler loops or is loop-free. Significantly, full-program induction does not require generation or use of loop-specific invariants. To assess the efficacy of our technique, we have developed a prototype tool called Vajra. We demonstrate the performance of Vajra vis-a-vis several state-of-the-art tools on a large set of array manipulating benchmarks from the international software verification competition (SV-COMP) and on several programs inspired by algebraic functions that perform polynomial computations.

Keywords

Cite

@article{arxiv.2209.12456,
  title  = {Full-Program Induction: Verifying Array Programs sans Loop Invariants},
  author = {Supratik Chakraborty and Ashutosh Gupta and Divyesh Unadkat},
  journal= {arXiv preprint arXiv:2209.12456},
  year   = {2022}
}

Comments

Invited paper in the International Journal on Software Tools for Technology Transfer (STTT), special issue TACAS 2022