paper-with-me

Papers

Leveraging Rust types for modular specification and verification

2019-10-10 · OOPSLA 2019 10 · Vytautas Astrauskas, Peter Müller, Federico Poli, Alexander J. Summers

Rust's type system ensures memory safety: well-typed Rust programs are guaranteed to not exhibit problems such as dangling pointers, data races, and unexpected side effects through aliased references. Ensuring correctness properties beyond memory safety, for instance, the guaranteed absence of assertion failures or more-general functional correctness, requires static program verification. For traditional system programming languages, formal verification is notoriously difficult and requires complex specifications and logics to reason about pointers, aliasing, and side effects on mutable state. This complexity is a major obstacle to the more-widespread verification of system software. In this paper, we present a novel verification technique that leverages Rust's type system to greatly simplify the specification and verification of system software written in Rust. We analyse information from the Rust compiler and synthesise a corresponding core proof for the program in a flavour of separation logic tailored to automation. To verify correctness properties beyond memory safety, users can annotate Rust programs with specifications at the abstraction level of Rust expressions; our technique weaves them into the core proof to verify modularly whether these specifications hold. Crucially, our proofs are constructed and checked automatically without exposing the underlying formal logic, allowing users to work exclusively at the level of abstraction of the programming language. As such, our work enables a new kind of verification tool, with the potential to impact a wide audience and allow the Rust community to benefit from state-of-the-art verification techniques. We have implemented our techniques for a subset of Rust; our evaluation on several thousand functions from widely-used Rust crates demonstrates its effectiveness.

📄 PDF Abstract BibTeX

Code (1)

viperproject/prusti-dev 공식 구현

Tasks

Formal Logic

Similar Papers 제목 키워드 기반

Agentic Specification Generator for Move Programs

2025-09-29 · Yu-Fu Fu, Meng Xu, Taesoo Kim arxiv

While LLM-based specification generation is gaining traction, existing tools primarily focus on mainstream programming languages like C, Java, and even Solidity, leaving emerging and yet verification-oriented languages l…

Modular Redesign of Mechatronic Systems: Formulation of Module Specifications Guaranteeing System Dynamics Specifications

2024-02-09 · Lars A. L. Janssen, Rob H. B. Fey, Bart Besselink, Nathan van de Wouw

Complex mechatronic systems are typically composed of interconnected modules, often developed by independent teams. This development process challenges the verification of system specifications before all modules are int…

Management

Assume/Guarantee Contracts for Dynamical Systems: Theory and Computational Tools

2020-12-23 · Miel Sharf, Bart Besselink, Adam Molin, Qiming Zhao 외

Modern engineering systems include many components of different types and functions. Verifying that these systems satisfy given specifications can be an arduous task, as most formal verification methods are limited to sy…

Autonomous Driving

ModelVerification.jl: a Comprehensive Toolbox for Formally Verifying Deep Neural Networks

2024-06-30 · Tianhao Wei, Luca Marzari, Kai S. Yun, Hanjiang Hu 외

Deep Neural Networks (DNN) are crucial in approximating nonlinear functions across diverse applications, ranging from image classification to control. Verifying specific input-output properties can be a highly challengin…

image-classificationImage Classification

An AI Approach to Verified Production Cryptographic Libraries

2026-08-02 · Chuyue Sun, Su Fong, Zhiyi Kuang, Yizheng Jiao 외 arxiv

Cryptographic code is critical infrastructure that must be correct, yet formally verifying production libraries remains difficult. Existing language-model proof systems solve isolated obligations with specifications and …