Verus is a tool for verifying the correctness of code written in Rust
Ce document présente un outil de vérification formelle pour du code Rust visant la correction fonctionnelle complète sans contrôles d'exécution. Il utilise une preuve assistée par ordinateur et génère des conditions de vérification simples résolues par un solveur SMT (Z3). L'approche combine un langage mathématique pour spécifications et preuves basé sur la logique classique, un langage impératif bas niveau inspiré de Rust, et un typage linéaire léger pour gérer mémoire et aliasing. Les auteurs considèrent que Rust facilite la vérification grâce à ses types algébriques, fonctions de premier ordre et au support des types linéaires et emprunts, ce qui réduit le raisonnement sur la mémoire. Le guide suppose des connaissances en Rust, explique l'écriture de spécifications et preuves en syntaxe Rust étendue (macros comme forall, exists, requires, ensures) et détaille une progression didactique des preuves simples aux preuves inductives et concurrentes, en précisant les limites de l'automatisation.