Instrumentation Analysis: An Automated Method for Producing Numeric Abstractions of Heap-Manipulating Programs

Abstract

A number of questions regarding programs involving heap-based data structures can be phrased as questions about numeric properties of those structures. A data structure traversal might terminate if the length of some path is eventually zero or a function to remove n elements from a collection may only be safe if the collection has size at least n. In this thesis, we develop proof methods for reasoning about the connection between heap-manipulating programs and numeric programs. In addition we develop an automatic method for producing numeric abstractions of heap-manipulating programs. These numeric abstractions are expressed as simple imperative programs over integer variables and have the feature that if a property holds of the numeric program, then it also holds of the original heap-manipulating program. This is true for both safety and liveness. The abstraction procedure makes use of a shape analysis based on separation logic and has support for user-defined inductive data structures. We also discuss a number of applications of this technique. Numeric abstractions once obtained, can be analyzed with a variety of existing verification tools. Termination provers can be used to reason about termination of the numeric abstraction, and thus termination of the original program. Safety checkers can be used to reason about assertion safety. And bound inference tools can be used to obtain bounds on the values of program variables. With small changes to the program source, bounds analysis also allows the computation of symbolic bounds on memory use and computational complexity.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Nov 29, 2010
Accession Number
ADA534668

Entities

People

  • Stephen Magill

Organizations

  • Carnegie Mellon University

Tags

Communities of Interest

  • Engineered Resilient Systems

DTIC Thesaurus Topics

  • Algorithms
  • Artificial Intelligence
  • Automatic
  • C Programming Language
  • Computational Complexity
  • Computer Programming
  • Computer Programs
  • Computer Science
  • Computers
  • Instrumentation
  • Language
  • Lists (Data Structures)
  • Military Research
  • Programming Languages
  • Reasoning
  • Theoretical Computer Science
  • Trees (Data Structures)

Fields of Study

  • Engineering

Readers

  • Computer Programming and Software Development.
  • Mathematical Modeling and Probability Theory.
  • Systems Analysis and Design

Technology Areas

  • AI & ML
  • AI & ML - Machine Learning Algorithms