POPL 2026
Sun 11 - Sat 17 January 2026 Rennes, France

This program is tentative and subject to change.

Sun 11 Jan 2026 09:00 - 10:30 at Salle 12 - Creusot: Formal verification of Rust programs
Sun 11 Jan 2026 11:00 - 12:30 at Salle 12 - Creusot: Formal verification of Rust programs

Rust is a systems programming language notable for its type system enforcing an ownership discipline (the borrow checker), preventing a large class of memory unsafety errors while keeping programmers in control of the memory layout of their data structures. This makes Rust an especially attractive programming language for developing low-level systems software. As Rust finds usage in key systems like Firefox and the Linux kernel, it becomes important to move beyond the safety guarantees of the language.

Creusot is a tool for formally verifying Rust programs, which improves upon the memory safety guarantees of Rust in two ways: it enables reasoning further about the functional behavior of programs, and it also enables the verification of pointer-manipulating unsafe code whose safety conditions cannot be tracked by Rust’s borrow checker.

Creusot allows users to specify their functions using contracts (pre- and post-conditions). Creusot then translates contracts into logical formulae to be dispatched to automated solvers. It has, for example, been used to develop a verified SAT solver.

The first session of this tutorial will present how Creusot works and its main features to help write specifications: using prophecies to represent mutable borrows, ghost resources to reason about pointers, etc. The second session (bring your own laptop!) will propose hands-on practical exercises to try Creusot in action.

Recommended prerequisites: familiarity with Hoare logic and program verification, and some awareness of ownership or separation logic. Only minimal knowledge of Rust syntax will be needed as exercises will consist in annotating preexisting code with specifications.

This program is tentative and subject to change.

Sun 11 Jan

Displayed time zone: Brussels, Copenhagen, Madrid, Paris change

09:00 - 10:30
Creusot: Formal verification of Rust programsTutorials at Salle 12
09:00
90m
Tutorial
Creusot: Formal verification of Rust programs
Tutorials
Li-yao Xia LMF, Inria, Université Paris-Saclay, Jacques-Henri Jourdan LMF, CNRS, Université Paris-Saclay, Arnaud Golfouse Université Paris-Saclay, CNRS, ENS Paris-Saclay, Inria, Laboratoire des méthodes formelles, 91190, Gif-sur-Yvette, France, Vincent Lafeychine Université Paris-Saclay, CNRS, ENS Paris-Saclay, INRIA, Laboratoire Méthodes Formelles, 91190, Gif-sur-Yvette, France.
Media Attached
11:00 - 12:30
Creusot: Formal verification of Rust programsTutorials at Salle 12
11:00
90m
Tutorial
Creusot: Formal verification of Rust programs
Tutorials
Li-yao Xia LMF, Inria, Université Paris-Saclay, Jacques-Henri Jourdan LMF, CNRS, Université Paris-Saclay, Arnaud Golfouse Université Paris-Saclay, CNRS, ENS Paris-Saclay, Inria, Laboratoire des méthodes formelles, 91190, Gif-sur-Yvette, France, Vincent Lafeychine Université Paris-Saclay, CNRS, ENS Paris-Saclay, INRIA, Laboratoire Méthodes Formelles, 91190, Gif-sur-Yvette, France.
Media Attached
Hide past events