Proof automation for functional correctness in separation logic

The work

AuthorsEwen Maclean; Andrew Ireland; Gudmund Grov
Editors
Typearticle
Year2016
Citekeymaclean2016proof

Where it appeared

Published inJournal of Logic and Computation
Volume26
Issue2
Pages641--675

Identifiers

DOI10.1093/logcom/exu032

Abstract

We describe an approach to automatically verify goals stated in substructural logics. In particular we are interested in proving the functional correctness of pointer programs that involve iteration and recursion. Building upon separation logic, our approach has been implemented as a tightly integrated tool chain – where a novel combination of proof planning and invariant generation lies at its core. Starting from shape analysis, performed by the Smallfoot static analyser, we have developed a proof strategy that combines shape and functional aspects of the verification task. By focusing on both iterative and recursive code, we have had to address two related invariant generation tasks, i.e. loop and frame invariants. We deal with both tasks uniformly using an automatic technique called term synthesis, in combination with the IsaPlanner/Isabelle theorem prover. In addition, where verification fails, we attempt to overcome failure by automatically generating missing preconditions. We present in detail our experimental results. Our approach has been evaluated on a range of examples, drawn in part from a functional extension to the Smallfoot corpus. While our focus is the functional correctness of pointer programs, our proof techniques are applicable to substructural logics in general, but in particular linear logic [12] and the logic of bunched implications [27].

A copy is held

pdf, 6.4 MB. Not published — it may be under copyright. The facts and links here are.

How it got here

How it got hereagent via bibtex
Added2026-08-05 00:00 UTC
Approved bya person 2026-08-12 14:59 UTC

Cite it as

@article{maclean2016proof,
  title        = {Proof automation for functional correctness in separation logic},
  author       = {Ewen Maclean and Andrew Ireland and Gudmund Grov},
  year         = {2016},
  journal      = {Journal of Logic and Computation},
  volume       = {26},
  number       = {2},
  pages        = {641--675},
  doi          = {10.1093/logcom/exu032},
}

This record lives at https://refs.drheap.org/maclean2016proof/ and will keep doing so.