• Home
  • Search
  • Automatically Proving Termination and Memory Safety for Programs with Pointer Arithmetic
  • Cite Icon21
  • https://doi.org/10.1007/s10817-016-9389-xCopy DOI Icon

Automatically Proving Termination and Memory Safety for Programs with Pointer Arithmetic

Show More
  • Abstract
  • Literature Map
  • References
  • Citations
  • Similar Papers
Abstract

While automated verification of imperative programs has been studied intensively, proving termination of programs with explicit pointer arithmetic fully automatically was 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 over-approximates all possible runs of a 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.

Similar Papers
  • Research Article
  • Citations9

Termination and complexity analysis for programs with bitvector arithmetic by symbolic execution

  • Mar 06, 2018
  • Journal of Logical and Algebraic Methods in Programming
  • Jera Hensel +3
  • Conference Article
  • Citations35

Automatic formal verification of MPI-based parallel programs

  • Feb 12, 2011
  • Stephen F Siegel +1
  • Conference Article
  • Citations3

Cargo-call-stack Static Call-stack Analysis for Rust

  • Jul 01, 2019
  • Per Lindgren +2
  • Conference Article
  • Citations59

A combination framework for tracking partition sizes

  • Jan 21, 2009
  • Sumit Gulwani +2
  • Book Chapter
  • Citations14

Towards an ML-style polymorphic type system for C

  • Jan 01, 1996
  • Geoffrey Smith +1
  • PDF
  • Research Article
  • Citations138

Leveraging rust types for modular specification and verification

  • Oct 10, 2019
  • Proceedings of the ACM on Programming Languages
  • Vytautas Astrauskas +3
  • Research Article
  • Citations18

TAG: Tagged Architecture Guide

  • Dec 07, 2022
  • ACM Computing Surveys
  • Samuel Jero +6
  • Single Book
  • Citations129

Verifying Concurrent Processes Using Temporal Logic

  • Jan 01, 1982
  • Brent T Hailpern
  • Book Chapter
  • Citations10

Constraint Solving for Program Verification: Theory and Practice by Example

  • Jan 01, 2010
  • Andrey Rybalchenko
  • Conference Article
  • Citations1

SIFT: A Tool for Property Directed Symbolic Execution of Multithreaded Software

  • Apr 01, 2022
  • Tuba Yavuz
  • Preprint Article
  • Citations1

General Decidability Results for Asynchronous Shared-Memory Programs: Higher-Order and Beyond

  • Mar 23, 2021
  • Georg Zetzsche +2
  • Book Chapter

Program Verification and Testing

  • Jan 01, 1997
  • Phillip C.-Y. Sheu
  • Book Chapter
  • Citations137

Termination of Polynomial Programs

  • Jan 01, 2005
  • Aaron R Bradley +2
  • Research Article
  • Citations3094

Symbolic execution and program testing

  • Jul 01, 1976
  • Communications of the ACM
  • James C King
  • Research Article
  • Citations766

Improved contact prediction in proteins: Using pseudolikelihoods to infer Potts models

  • Jan 11, 2013
  • Physical Review E
  • Magnus Ekeberg +4
Cactus Communications logo

Copyright 2026 Cactus Communications. All rights reserved.