Arithmetizing Shape Analysis
Sebastian Wolff, Ekanshdeep Gupta, Zafer Esen, Hossein Hojjat, Philipp Rümmer, Thomas Wies
Abstract
Memory safety is an essential correctness property of software systems. For programs operating on linked heapallocated data structures, the problem of proving memory safety boils down to analyzing the possible shapes of data structures, leading to the field of shape analysis. This paper presents a novel reduction-based approach to memory safety analysis that relies on two forms of abstraction: flow abstraction, representing global properties of the heap graph through local flow equations; and view abstraction, which enable verification tools to reason symbolically about an unbounded number of heap objects. In combination, the two abstractions make it possible to reduce memory-safety proofs to proofs about heap-less imperative programs that can be discharged using off-the-shelf software verification tools without built-in support for heap reasoning. Using an empirical evaluation on a broad range of programs, the paper shows that the reduction approach can effectively verify memory safety for sequential and concurrent programs operating on different kinds of linked data structures, including singly-linked, doubly-linked, and nested lists as well as trees.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext 89a9109a-b16d-4fdf-9ae8-09c3c0a1ddc3Cited by top-tier papers1
Ask how each one uses itBuilds on6
- Verifying concurrent search structure templatesSiddharth Krishna, Nisarg Patel, Dennis E. Shasha, Thomas WiesPLDI 2020 · 19 citations
- Refinement for Structured Concurrent ProgramsBernhard Kragl, Shaz Qadeer, Thomas A. HenzingerCAV 2020 · 10 citations
- Linear types for large-scale systems verificationJialin Li, Andrea Lattuada, Yi Zhou, Jonathan Cameron et al.OOPSLA 2022 · 10 citations
- A concurrent program logic with a future and historyRoland Meyer, Thomas Wies, Sebastian WolffOOPSLA 2022 · 9 citations
- Pointer life cycle types for lock-free data structures with memory reclamationRoland Meyer, Sebastian WolffPOPL 2020 · 7 citations
Related papers
- Deciding memory safety for single-pass heap-manipulating programsUmang Mathur, Adithya Murali, Paul Krogmeier, P. Madhusudan et al.POPL 2020 · 11 citations
- Verifying Tree-Manipulating Programs via CHCsMarco Faella, Gennaro ParlatoCAV 2025 · 1 citation
- Abductive Inference of Separation Logic Specifications with Isorecursive User-Defined Predicates and Magic WandsNicolas Klose, Peter MüllerOOPSLA 2026 · 1 citation
- A type system for extracting functional specifications from memory-safe imperative programsPaul He, Eddy Westbrook, Brent Carmer, Chris Phifer et al.OOPSLA 2021 · 5 citations
- A Dependent Nominal Physical Type System for Static Analysis of Memory in Low Level CodeJulien Simonnet, Matthieu Lemerre, Mihaela SighireanuOOPSLA 2024 · 4 citations
