Proving Termination and Memory Safety for Programs with Pointer Arithmetic

  • Thomas Ströder
  • Jürgen Giesl
  • Marc Brockschmidt
  • Florian Frohn
  • Carsten Fuhs
  • Jera Hensel
  • Peter Schneider-Kamp
Conference paper

DOI: 10.1007/978-3-319-08587-6_15

Part of the Lecture Notes in Computer Science book series (LNCS, volume 8562)
Cite this paper as:
Ströder T. et al. (2014) Proving Termination and Memory Safety for Programs with Pointer Arithmetic. In: Demri S., Kapur D., Weidenbach C. (eds) Automated Reasoning. IJCAR 2014. Lecture Notes in Computer Science, vol 8562. Springer, Cham

Abstract

Proving termination automatically for programs with explicit pointer arithmetic is still an open problem. To close this gap, we introduce a novel abstract domain that can track allocated memory in detail. We use it to automatically construct a symbolic execution graph that represents all possible runs of the program and that can be used to prove memory safety. This graph is then transformed into an integer transition system, whose termination can be proved by standard techniques. We implemented this approach in the automated termination prover AProVE and demonstrate its capability of analyzing C programs with pointer arithmetic that existing tools cannot handle.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Thomas Ströder
    • 1
  • Jürgen Giesl
    • 1
  • Marc Brockschmidt
    • 2
  • Florian Frohn
    • 1
  • Carsten Fuhs
    • 3
  • Jera Hensel
    • 1
  • Peter Schneider-Kamp
    • 4
  1. 1.LuFG Informatik 2RWTH Aachen UniversityGermany
  2. 2.Microsoft Research CambridgeUK
  3. 3.Dept. of Computer ScienceUniversity College LondonUK
  4. 4.IMADAUniversity of Southern DenmarkDenmark

Personalised recommendations