TY - GEN
T1 - Putting the Squeeze on Array Programs
T2 - 21st International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI 2020
AU - Ish-Shalom, Oren
AU - Itzhaky, Shachar
AU - Rinetzky, Noam
AU - Shoham, Sharon
N1 - Publisher Copyright: © 2020, Springer Nature Switzerland AG.
PY - 2020
Y1 - 2020
N2 - Automatic verification of array manipulating programs is a challenging problem because it often amounts to the inference of inductive quantified loop invariants which, in some cases, may not even be first-order expressible. In this paper, we suggest a novel verification technique that is based on induction on user-defined rank of program states as an alternative to loop-invariants. Our technique, dubbed inductive rank reduction, works in two steps. Firstly, we simplify the verification problem and prove that the program is correct when the input state contains an input array of length or less, using the length of the array as the rank of the state. Secondly, we employ a squeezing function which converts a program state with an array of length to a state containing an array of length or less. We prove that when satisfies certain natural conditions then if the program violates its specification on then it does so also on. The correctness of the program on inputs with arrays of arbitrary lengths follows by induction. We make our technique automatic for array programs whose length of execution is proportional to the length of the input arrays by (i) performing the first step using symbolic execution, (ii) verifying the conditions required of using Z3, and (iii) providing a heuristic procedure for synthesizing. We implemented our technique and applied it successfully to several interesting array-manipulating programs, including a bidirectional summation program whose loop invariant cannot be expressed in first-order logic while its specification is quantifier-free.
AB - Automatic verification of array manipulating programs is a challenging problem because it often amounts to the inference of inductive quantified loop invariants which, in some cases, may not even be first-order expressible. In this paper, we suggest a novel verification technique that is based on induction on user-defined rank of program states as an alternative to loop-invariants. Our technique, dubbed inductive rank reduction, works in two steps. Firstly, we simplify the verification problem and prove that the program is correct when the input state contains an input array of length or less, using the length of the array as the rank of the state. Secondly, we employ a squeezing function which converts a program state with an array of length to a state containing an array of length or less. We prove that when satisfies certain natural conditions then if the program violates its specification on then it does so also on. The correctness of the program on inputs with arrays of arbitrary lengths follows by induction. We make our technique automatic for array programs whose length of execution is proportional to the length of the input arrays by (i) performing the first step using symbolic execution, (ii) verifying the conditions required of using Z3, and (iii) providing a heuristic procedure for synthesizing. We implemented our technique and applied it successfully to several interesting array-manipulating programs, including a bidirectional summation program whose loop invariant cannot be expressed in first-order logic while its specification is quantifier-free.
UR - http://www.scopus.com/inward/record.url?scp=85079099712&partnerID=8YFLogxK
U2 - 10.1007/978-3-030-39322-9_6
DO - 10.1007/978-3-030-39322-9_6
M3 - منشور من مؤتمر
SN - 9783030393212
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 112
EP - 135
BT - Verification, Model Checking, and Abstract Interpretation - 21st International Conference, VMCAI 2020, Proceedings
A2 - Beyer, Dirk
A2 - Zufferey, Damien
Y2 - 16 January 2020 through 21 January 2020
ER -