2023 05 17, Nico Lehmann, Flux -- Liquid Types for Rust

  Рет қаралды 4,191

Galois

Galois

Күн бұрын

Title
Flux: Liquid Types for Rust
Abstract
Low-level, pointer-manipulating programs are tricky to write and devilishly hard to verify, requiring complex spatial program logics to reason about heap updates. Recent systems like Prusti and Creusot take advantage of Rust ownership mechanisms to shield the programmer from some spatial assertions, allowing them to only write pure, first-order logic specifications which can be automatically verified by a solver. Even with these advances, verification remains unpleasant. For instance, when working over collections, program-logic based methods require the use of loop invariants that are universally quantified to account for the potentially unbounded contents of the collection. Such invariants often require a sophisticated understanding of the underlying spatial program logic, and worse, the quantification makes them difficult to synthesize.
This talk presents Flux, a refinement type checker for Rust that shows how logical refinements can work in tandem with Rust’s ownership mechanisms to yield ergonomic type-based verification. First, we describe how Flux extends Rust’s type system with logical refinements that can be used to specify properties about data. Next, we demonstrate how the combination of refinements and Rust’s ownership mechanisms allows the specification and verification of imperative code.
To showcase how the interaction between refinement and ownership types enables ergonomic verification, we describe a simple but powerful refined API for vectors that uses polymorphism to track quantified assertions about their elements. Using this API, we demonstrate how Flux can be used to verify lightweight properties in a suite of vector-manipulating programs and parts of a verified sandboxing library. We use these examples to compare how, when specifications are encoded as types, refinement inference makes verification more ergonomic and efficient relative to program-logic based techniques.
Bio
Nico Lehmann is a Ph.D. student in the ProgSys group at UCSD, supervised by Ranjit Jhala. His current research focuses on integrating refinement types into the Rust programming language with the broader goal of bringing expressive typing disciplines into mainstream programming. Nico holds a master's degree from the University of Chile.

Пікірлер: 3
@lsp0
@lsp0 Жыл бұрын
Very very cool!
@sethawarren
@sethawarren Жыл бұрын
Thank you all!
@isaactfa
@isaactfa Жыл бұрын
Very impressive.
[SOAP'23] Flux: Refinement types for Rust
56:38
ACM SIGPLAN
Рет қаралды 815
Остановили аттракцион из-за дочки!
00:42
Victoria Portfolio
Рет қаралды 3,9 МЛН
The selfish The Joker was taught a lesson by Officer Rabbit. #funny #supersiblings
00:12
Inside Out 2: ENVY & DISGUST STOLE JOY's DRINKS!!
00:32
AnythingAlexia
Рет қаралды 13 МЛН
小天使和小丑太会演了!#小丑#天使#家庭#搞笑
00:25
家庭搞笑日记
Рет қаралды 34 МЛН
Makepad: Designing modern UIs with Rust - Rik Arends - RustNL 2023
55:20
Rust Nederland (RustNL)
Рет қаралды 53 М.
Use Arc Instead of Vec
15:21
Logan Smith
Рет қаралды 147 М.
"Type-Driven API Design in Rust" by Will Crichton
40:57
Strange Loop Conference
Рет қаралды 122 М.
Why Isn't Functional Programming the Norm? - Richard Feldman
46:09
All Rust string types explained
22:13
Let's Get Rusty
Рет қаралды 173 М.
Introduction to Async in Rust
46:02
Rust and Cpp Cardiff Meetup
Рет қаралды 6 М.
A Simpler Way to See Results
19:17
Logan Smith
Рет қаралды 109 М.
Type Theory for the Working Rustacean - Dan Pittman
19:24
Rust Belt Rust Conference
Рет қаралды 18 М.
John Launchbury - The Trajectory of AI
1:08:19
Galois
Рет қаралды 1,2 М.
Rust Data Modelling Without Classes
11:25
No Boilerplate
Рет қаралды 174 М.
Остановили аттракцион из-за дочки!
00:42
Victoria Portfolio
Рет қаралды 3,9 МЛН