# Automatic verification of heap-manipulating programs

**Authors:** Yurii Kostyukov, Konstantin Batoev, Dmitry Mordvinov, Michael, Kostitsyn, Aleksandr Misonizhnik

arXiv: 1906.10204 · 2019-06-27

## TL;DR

This paper develops a formal foundation for compositional reasoning about heap-manipulating programs and introduces an algorithm that generates symbolic heaps to verify program states accurately.

## Contribution

It presents a novel formal framework for symbolic memory and an algorithm for generating generalized heaps for cyclic code segments.

## Key findings

- The symbolic heap calculus precisely characterizes reachable program states.
- The formal foundations enable compositional reasoning about heap-manipulating programs.
- The approach establishes a correspondence between symbolic inference and program execution.

## Abstract

Theoretical foundations of compositional reasoning about heaps in imperative programming languages are investigated. We introduce a novel concept of compositional symbolic memory and its relevant properties. We utilize these formal foundations to build up a compositional algorithm that generates generalized heaps, terms of symbolic heap calculus, which characterize arbitrary cyclic code segments. All states inferred by this calculus precisely correspond to reachable states of the original program. We establish the correspondence between inference in this calculus and execution of pure second-order functional programs.

---
Source: https://tomesphere.com/paper/1906.10204