VeriAbs: Verification by Abstraction (Competition Contribution)
VeriAbs verifies C programs by transforming them to abstract programs. The transformation replaces loops in the original code by abstract loops of small known bounds. Bounded model checkers can then be used to prove properties over such programs. To perform such a transformation, VeriAbs implements (i) a static value analysis to compute loop invariants, (ii) abstract acceleration and output abstraction for numerical loops, (iii) a novel array witness selection for loops that iterate over arrays, and (iv) an iterative refinement using an enhanced k-induction technique. To find errors, VeriAbs computes bounds of the original loops and then checks for errors within those bounds. VeriAbs can thus prove properties and find errors using bounded model checking. It uses the C Bounded Model Checker (CBMC) version 5.4 with MiniSat version 2.2.
- 1.TCS Research. http://www.tcs.com/research/Pages/default.aspx
- 2.Beyer, D., Erkan Keremoglu, M.: CPAchecker: a tool for configurable software verification. CoRR, abs/0902.0019 (2009)Google Scholar
- 5.Darke, P., Chimdyalwar, B., Venkatesh, R., Shrotri, U., Metta, R.: Over-approximating loops to prove properties using bounded model checking. In: DATE 2015, Grenoble, France, 9–13 March 2015, pp. 1407–1412. IEEE (2015)Google Scholar
- 7.Khare, S., Saraswat, S., Kumar, S.: Static program analysis of large embedded code base: an experience. In: ISEC, pp. 99–102. ACM (2011)Google Scholar
- 8.Kumar, S., Chimdyalwar, B., Shrotri, U.: Precise range analysis on large industry code. In: ESEC/FSE 2013, pp. 675–678 (2013)Google Scholar
- 9.Kumar, S., Sanyal, A., Venkatesh, R., Shah, P.: Property checking array programs using witness sequences. TCS Internal Technical report (2016)Google Scholar