TY - GEN
T1 - Facilitating verification in program loops by identification of static iteration patterns
AU - Desai, Aditya
AU - Jain, Era
AU - Roy, Subhajit
N1 - Publisher Copyright:
© 2013 IEEE.
PY - 2013
Y1 - 2013
N2 - Generating invariants for loops is often a grueling obstacle in formal program verification. Researchers have employed methods from formal techniques based on abstract interpretation to test-driven dynamic analysis to tackle this problem. Even though powerful techniques for generating conjunctive invariants (invariants that employ only conjunction of terms) have been developed, disjunctive invariants have remained a sore thumb for formal techniques. In this paper, we propose a technique to transform certain category of loops, those that have a static iteration pattern, into loops that can be handled by conjunctive invariant generators. The key idea is to identify a static iteration pattern that distributes the disjunction in an invariant in a manner that can be captured by only conjunctive invariants. To broaden the scope of our algorithm, we also propose the idea of parametric verification, while attempting to verify specialized versions of the program where a subset of the input variables is instantiated with certain test-inputs. Note that parametric verification distinguishes it from program testing as testing requires all of its variables to be instantiated with test-inputs. We discuss our ideas on loops drawn from real programs to establish real-world applicability of our algorithms.
AB - Generating invariants for loops is often a grueling obstacle in formal program verification. Researchers have employed methods from formal techniques based on abstract interpretation to test-driven dynamic analysis to tackle this problem. Even though powerful techniques for generating conjunctive invariants (invariants that employ only conjunction of terms) have been developed, disjunctive invariants have remained a sore thumb for formal techniques. In this paper, we propose a technique to transform certain category of loops, those that have a static iteration pattern, into loops that can be handled by conjunctive invariant generators. The key idea is to identify a static iteration pattern that distributes the disjunction in an invariant in a manner that can be captured by only conjunctive invariants. To broaden the scope of our algorithm, we also propose the idea of parametric verification, while attempting to verify specialized versions of the program where a subset of the input variables is instantiated with certain test-inputs. Note that parametric verification distinguishes it from program testing as testing requires all of its variables to be instantiated with test-inputs. We discuss our ideas on loops drawn from real programs to establish real-world applicability of our algorithms.
KW - Control-flow refinement
KW - Formal verification
KW - Invariant generation
UR - http://www.scopus.com/inward/record.url?scp=84936888242&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84936888242&partnerID=8YFLogxK
U2 - 10.1109/APSEC.2013.22
DO - 10.1109/APSEC.2013.22
M3 - Conference contribution
AN - SCOPUS:84936888242
SN - 9780769549224
T3 - Proceedings - Asia-Pacific Software Engineering Conference, APSEC
SP - 83
EP - 90
BT - APSEC 2013 - Proceedings of the 20th Asia-Pacific Software Engineering Conference
A2 - Muenchaisri, Pornsiri
A2 - Rothermel, Gregg
PB - IEEE Computer Society
T2 - 20th Asia-Pacific Software Engineering Conference, APSEC 2013
Y2 - 2 December 2013 through 5 December 2013
ER -