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

Institutions

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
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
NOV
article

When Separation Arithmetic is Enough, or How to Automate the Proof of Programs that Use Pointers

Olivier Danvy, Andrei Paskevich, Jean-Christophe Filliâtre
Formal Aspects of Computing
Logic, programming, and type systems
article

When Separation Arithmetic is Enough, or How to Automate the Proof of Programs that Use Pointers

Olivier Danvy, Andrei Paskevich, Jean-Christophe Filliâtre
article en

Abstract

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.

Formal Aspects of Computing
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)
Logic, programming, and type systems
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Laika access coming soon
When Separation Arithmetic is Enough, or How to Automate the Proof of Programs that Use Pointers — Olivier Danvy, Andrei Paskevich, et al. · Formal Aspects of Computing (2026) | TGRS Research Map | TGRS