When Separation Arithmetic is Enough, or How to Automate the Proof of Programs that Use Pointers
In deductive program verification, the more automated the proofs, the more practical the verification. Today, the best tools for mechanized verification are SMT solvers, due to their combination of first-order logic and linear arithmetic. SMT solvers, however, are not well suited for inductive reasoning, and inductive reasoning is often needed to cater for recursive data structures such as lists or trees. In this article, we show how to specify imperative programs over pointer-based recursive data structures in a way that stays within the reach of first-order provers. The idea is to map a recursive structure onto an integer-indexed sequence, in such a way that separation and frame properties can be expressed using only simple arithmetic relations. We illustrate this approach with various programs over lists, trees, and graphs, ranging from a new in-place list reversal to the Schorr-Waite graph-marking algorithm.
Authors
- Olivier Danvy (ORCID: https://orcid.org/0000-0002-3890-3630)
- Andrei Paskevich
- Jean-Christophe Filliâtre
Institutions
- Centre National de la Recherche Scientifique (FR)
- Institut national de recherche en sciences et technologies du numérique (FR)
- National University of Singapore (SG)
- Université Paris-Saclay (FR)
Publication Details
- Journal
- Formal Aspects of Computing
- Published
- 2026-11-09
- DOI
- https://doi.org/10.1145/3861272
- Primary Topic
- Logic, programming, and type systems
- Type
- article
- Field-Weighted Citation Impact
- 0.00