Termination analysis of imperative programs using bitvector arithmetic

  • Authors:
  • Stephan Falke;Deepak Kapur;Carsten Sinz

  • Affiliations:
  • Institute for Theoretical Computer Science, KIT, Germany;Dept. of Computer Science, University of New Mexico;Institute for Theoretical Computer Science, KIT, Germany

  • Venue:
  • VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Currently, nearly all methods for proving termination of imperative programs apply an unsound and incomplete abstraction by treating bitvectors and bitvector arithmetic as (unbounded) integers and integer arithmetic, respectively. This abstraction ignores the wrap-around behavior caused by under- and overflows in bitvector arithmetic operations. This is particularly problematic in the termination analysis of low-level system code. This paper proposes a novel method for encoding the wrap-around behavior of bitvector arithmetic within integer arithmetic. Afterwards, existing methods for reasoning about the termination of integer arithmetic programs can be employed for reasoning about the termination of bitvector arithmetic programs. An empirical evaluation shows the practicality and effectiveness of the proposed method.