Automatic verification of heap-manipulating programs
Yurii Kostyukov, Konstantin Batoev, Dmitry Mordvinov, Michael, Kostitsyn, Aleksandr Misonizhnik

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.
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.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
