Reference. Place Capability Graphs: A General-Purpose Model of Rust’s Ownership and Borrowing Guarantees

Rust’s novel type system has proved an attractive target for verification and program analysis tools, due to the rich guarantees it provides for controlling aliasing and mutability. However, fully understanding, extracting and exploiting these guarantees is subtle and challenging: existing models for Rust’s type checking either support a smaller idealised language disconnected from real-world Rust code, or come with severe limitations in terms of precise modelling of Rust borrows, composite types storing them, function signatures and loops. In this paper, we present Place Capability Graphs : a novel model of Rust’s type-checking results, which lifts these limitations, and which can be directly calculated from the Rust compiler’s own programmatic representations and analyses. We demonstrate that our model supports over 97% of Rust functions in the most popular public crates, and show its suitability as a general-purpose basis for verification and program analysis tools by developing promising new prototype versions of the existing Flowistry and Prusti tools.

Cite

Cite as @grannan-2025-place (helia, typst) · \cite{grannan-2025-place} (LaTeX)
BibTeX
bibtex · 1 line
@article{grannan-2025-place, title={Place Capability Graphs: A General-Purpose Model of Rust’s Ownership and Borrowing Guarantees}, volume={9}, ISSN={2475-1421}, url={http://dx.doi.org/10.1145/3763122}, DOI={10.1145/3763122}, number={OOPSLA2}, journal={Proceedings of the ACM on Programming Languages}, publisher={Association for Computing Machinery (ACM)}, author={Grannan, Zachary and Bílý, Aurel and Fiala, Jonáš and Geer, Jasper and de Medeiros, Markus and Müller, Peter and Summers, Alexander J.}, year={2025}, month=Oct, pages={2002–2029} }
hayagriva YAML (typst)
yaml · 25 lines
grannan-2025-place:
  type: article
  title: 'Place Capability Graphs: A General-Purpose Model of Rust’s Ownership and Borrowing Guarantees'
  author:
  - Grannan, Zachary
  - Bílý, Aurel
  - Fiala, Jonáš
  - Geer, Jasper
  - name: Medeiros
    given-name: Markus
    prefix: de
  - Müller, Peter
  - Summers, Alexander J.
  date: 2025-10
  page-range: 2002-2029
  url: http://dx.doi.org/10.1145/3763122
  serial-number:
    doi: 10.1145/3763122
    issn: 2475-1421
  parent:
    type: periodical
    title: Proceedings of the ACM on Programming Languages
    publisher: Association for Computing Machinery (ACM)
    issue: OOPSLA2
    volume: 9
Cites 39 works (2 here)
With notes (2)

Verus: Verifying Rust Programs using Linear Ghost Types lattuada-2023-verus

The Rust programming language provides a powerful type system that checks linearity and borrowing, allowing code to safely manipulate memory without garbage collection and making Rust ideal for developing low-level, high-assurance systems. For such systems, formal verification can be useful to prove functional correctness properties beyond type safety. This paper presents Verus, an SMT-based tool for formally verifying Rust programs. With Verus, programmers express proofs and specifications using the Rust language, allowing proofs to take advantage of Rust’s linear types and borrow checking. We show how this allows proofs to manipulate linearly typed permissions that let Rust code safely manipulate memory, pointers, and concurrent resources. Verus organizes proofs and specifications using a novel mode system that distinguishes specifications, which are not checked for linearity and borrowing, from executable code and proofs, which are checked for linearity and borrowing. We formalize Verus’ linearity, borrowing, and modes in a small lambda calculus, for which we prove type safety and termination of specifications and proofs. We demonstrate Verus on a series of examples, including pointer-manipulating code (an xor-based doubly linked list), code with interior mutability, and concurrent code.
PDF · DOI · arXiv · pldb

Iris from the ground up: A modular foundation for higher-order concurrent separation logic jung_etal_iris_ground_up_2018

Iris is a framework for higher-order concurrent separation logic, which has been implemented in the Coq proof assistant and deployed very effectively in a wide variety of verification projects. Iris was designed with the express goal of simplifying and consolidating the foundations of modern separation logics, but it has evolved over time, and the design and semantic foundations of Iris itself have yet to be fully written down and explained together properly in one place. Here, we attempt to fill this gap, presenting a reasonably complete picture of the latest version of Iris (version 3.1), from first principles and in one coherent narrative.
PDF · DOI · pldb
External (37)
grannan-2025-place reference entries/refs/grannan-2025-place/grannan-2025-place.hel