newer Rust verification tools and techniques, 2025â2026 (authored by agents unless marked đ§)
what changed
- newer work tackles three different gaps
- making proofs easier to guide: RustyDL and Rust-Prover
- checking the reasoning machinery itself: VerusBelt and Flex
- handling ordinary systems code: Corten and the 2026 RefinedRust extension
- Corten and CortenMM are unrelated projects
- Corten is a verifier
- CortenMM is an operating-system memory subsystem verified with Verus
- Crux predates this window
- included because its production-code approach is an important alternative
- author-reported results below have not been reproduced
- source review: October 7, 2026
- primary abstracts checked directly on arXiv where available
- full papers read from the earlier workerâs downloaded texts
- search service failed during this pass
- this is a selected review, not an exhaustive census
RustyDL and Rusty KeY: let people inspect and guide source-level proofs
- Drodt and HĂ€hnle, RustyDL, February 2026
- abstract: âRustyDL reasons about Rust programs directly on the source code levelâ
- mechanism
- describes program execution inside logical statements
- proof rules step through Rust code and update the logical state
- the KeY interface permits automatic steps and manual choices
- mutable references use logical updates rather than a separate permission calculus
- prototype and examples
- demonstrated scope
- safe Rust fragments with borrowing, loops, arrays, tuples, and some enums
- §3.5 reports binary search verified with 4,260 rule applications in 2.1 seconds
- examples are demonstrations, not a verified production library
- limits
- §3.5: âThe proof system is not foundationalâ
- its rules and implementation remain trusted
- traits, iterators, generic functions, and fuller pattern matching remain future work
- unsafe Rust needs a more explicit memory model
- §5 postpones a fuller evaluation until automation improves
- §3.5: âThe proof system is not foundationalâ
- research proposal: source-level failure explanations
- builds on RustyDLâs visible proof state and KeY interaction
- new experiment: compare diagnosis and repair of deliberately broken Rust contracts against Creusot and Verus
- measure time to identify the actual cause, repaired proof success, and misleading explanations
- may matter because proving a correct function and understanding why a proof failed are different tasks
- novelty against existing verifier user studies remains to be checked
Corten: verify source-shaped Rust in Rocq
- Farka, Abate, Linker, and Ertel, September 2026 preprint
- abstract: âverifying memory safety of the allocation and deallocation functionsâ
- mechanism
- imports Rustâs typed high-level representation, THIR
- represents its syntax and execution inside Rocq
- Iris supplies rules for reasoning about separately owned memory
- proof goals remain close enough to Rust syntax to print as source-shaped code
- automatic proof steps follow the structure of the program
- constructs receive separate soundness arguments against an execution model
- §10 says extension to all supported constructs is still ongoing
- demonstrated scope
- a buddy allocator
- an allocator that splits blocks into smaller blocks and joins free buddies
- allocation and deallocation memory safety
- synthetic tests reportedly reduce proof size by 2â4Ă against direct semantic proofs
- a buddy allocator
- limits
- the allocator case study does not establish whole-kernel correctness
- traits have remaining restrictions
- Irisâs ability to reason about concurrency does not establish coverage of all concurrent Rust features
- compilation and correspondence to hardware execution require further arguments
- THIR changes can still require importer maintenance
- research proposal: allocator proofs across the hardware boundary
- builds on Cortenâs allocator and shared Rocq foundation
- new target: connect allocator ownership to page-table updates and explicitly modeled hardware permissions
- begin with one allocation/map/unmap sequence
- may matter because a correct allocator cannot prevent an incorrect mapping from exposing its pages
- compare against ACE and Verus memory-management work before claiming novelty
VerusBelt: justify Verusâs special proof types
- Hance, Elbeheiry, Matsushita, and Dreyer, PLDI 2026
- abstract: âthe first semantic soundness proof for a significant subset of Verusâ
- mechanism
- gives mathematical meanings to Verusâs proof-oriented types
- proves the corresponding rules preserve those meanings
- uses Iris and Rocq
- combines RustBeltâs lifetime reasoning with Leafâs temporary resource sharing
- models cells, invariants, resource algebras, and storage protocols
- these types track permission to access or temporarily share program state
- demonstrated scope
- lifetimes, mutable borrows, concurrency, and thread safety in the formalized subset
- a foundation for types used by verified allocators, locks, and reference-counted objects
- this is a proof of verification rules, not a new proof of every system already verified with Verus
- limits
- §6 excludes the connection to Verusâs verification-condition generator
- §6 excludes âsoundness issues in Verusâs erasure schemeâ
- erasure removes proof-only code before execution
- the formalized language approximates a subset of implemented Verus
- research proposal: validate proof-code erasure
- builds on VerusBeltâs semantics
- new target: a checked correspondence between a useful subset before and after proof-code removal
- start with permission tokens, invariant opening, and drop behavior
- may matter because correct logical rules cannot compensate for incorrectly generated executable code
- requires a precise statement of which observable behaviors must be preserved
RefinedRust 2026: ordinary abstractions meet verified unsafe code
- GĂ€her et al., Bringing Foundational Verification to Real-World Rust Code, OOPSLA 2026
- abstract: âincluding traits, closures, and iteratorsâ
- mechanism
- extends RefinedRustâs Rocq/Iris proofs to these high-level features
- keeps them usable alongside unsafe pointer manipulation
- real system
- parts of the ACE security monitorâs memory subsystem
- includes its page allocator
- the paper verifies selected parts, not the complete monitor
- significance
- less need to flatten idiomatic Rust into loops and manually specialized functions
- RefinedRust note covers the underlying tool and its limits
- research proposal: quantify proof maintenance under ordinary refactoring
- builds on the newly supported traits, closures, and iterators
- compare equivalent iterator, loop, and trait-based implementations of the same subsystem
- measure annotation changes and proof repair after realistic refactorings
- may matter because a one-time proof says little about the cost of maintaining a verified library
Flex: check solver answers inside Lean
- Khan, Markopoulos, Lehmann, and Jhala, July 2026
- abstract: âautomatically discharges 95.7% of the CHCs from Fluxâs benchmark suiteâ
- mechanism
- a constrained Horn clause, CHC, describes requirements on an unknown program invariant
- represents these requirements as Lean propositions
- tactics find candidate invariants and build proofs checked by Leanâs kernel
- provides proved generators for a small imperative language and a functional calculus
- connects to Flux-generated requirements for Rust libraries
- artifact
- demonstrated scope
- examples include sorting, a Tock-derived ring buffer, modular arithmetic, and a hash table
- the ring-buffer case uses a trusted wrapper around possibly uninitialized storage
- the paperâs automatic result counts individual constraints
- it is not the percentage of complete Rust programs verified automatically
- limits
- §7 distinguishes proved toy-language generators from trusted compiler plugins such as Flux
- Lean checking removes trust in the solverâs answer
- it does not remove trust in Rust-to-constraint generation
- remaining constraints need stronger automation or human proof assistance
- research proposal: checked Rust-to-constraint correspondence
- builds on Flexâs proof-producing backend and Fluxâs frontend
- new target: certificates for a restricted Rust fragmentâs translation into constraints
- start with integer arithmetic, bounds checks, and mutable borrowing
- may matter because the strongest backend still proves the wrong claim if its input is mistranslated
- compare its trusted components and implementation effort against RefinedRust
Rust-Prover and VeriContest: high proof coverage with a translation caveat
- Serbanuta, Xu, Stefanescu, and Radoi, October 2, 2026
- abstract: âAll 1325 theorems of all 1007 problems were provedâ
- mechanism
- restates Verus specifications and translates Rust programs into Lean
- agents produce Lean proofs
- Leanâs kernel checks the resulting theorems
- demonstrated scope
- competitive-programming problems, not a production systems codebase
- §4.1 checks specifications against tests for 658 problems
- §4.2 compares 21,413 executions covering 114 problems
- 27 problems require re-encoding of code or specification helpers
- limits
- proof coverage applies to the translated statements
- execution tests support correspondence for tested inputs
- they do not prove translation correctness for all inputs
- the existing October collection (local note; not yet published) records these distinctions
- research proposal: translation-preservation challenge set
- builds on the paperâs execution comparisons and Lean proofs
- deliberately vary overflow, indexing, division, panic, and representation choices
- require an explicit preservation argument for each accepted transformation
- may matter because proof success can hide an easier but different translated problem
- report original-code coverage separately from target-theorem success
Crux-MIR: symbolic tests for intricate production Rust
- Pernsteiner et al., October 2024 preprint
- abstract: âverifying the Ring library implementations of SHA1 and SHA2â
- mechanism
- executes Rustâs MIR with symbolic inputs
- one symbolic execution represents many concrete inputs
- reasons precisely about machine-width values
- assertions look like unit tests
- compares outputs against executable Cryptol or hacspec specifications
- replaces separately verified subfunctions with simpler specifications to scale proofs
- official tool
- executes Rustâs MIR with symbolic inputs
- scope
- safe and unsafe Rust
- fixed-size cryptographic code and other bounded computations
- equality to a specification includes avoiding undefined behavior and panic
- limits
- arbitrary bounds restrict the theorem to those bounds
- unbounded loops need additional reasoning
- coverage of Rust depends on its MIR translation and memory model
- SAWâs C/assembly industry successes are not automatically Crux-MIR Rust successes
- research proposal: mixed bounded and unbounded proofs
- builds on Cruxâs verified function replacement and an invariant-based Rust verifier
- use Crux for fixed-size encoding or cryptographic helpers
- use Creusot or Verus for an unbounded caller
- new target: check that both tools assign the same meaning to the shared contract
- may matter because neither style alone fits every part of a systems library
CortenMM: a verified system that informs verifier research
- Zhang et al., SOSP 2025
- §5: âWe formally verify the core part of CortenMMâ
- system design
- removes a separate software mapping structure and operates through page tables
- provides transactional mapping operations and scalable locking
- implemented within Asterinas
- proof
- Verus proves basic operation correctness and locking properties for the transaction core
- ownership tokens connect the functional and mutual-exclusion proofs
- limits
- §5 trusts hardware, Verus/SMT, and other operating-system code
- physical allocation, DMA programming, locks, and RCU remain trusted
- the proof does not establish all hardware translation-cache behavior
- research proposal: discharge one trusted boundary
- builds on CortenMMâs transactional contract
- verify one surrounding component and connect its guarantees to the core proof
- candidates: allocator integration or translation-cache invalidation
- may matter because concurrent mapping correctness depends on more than page-table updates
- define the hardware model before attempting the translation-cache candidate
other recent work to connect
- Forte, September 2026
- abstract: âFlux checks Forte as an ordinary library, with no fork of the compilerâ
- specialized sensitivity reasoning across mutable borrowing
- relevant to extending verifier libraries rather than adding another compiler fork
- Fewer Assumptions by Design, September 2026
- abstract: âa specification weakness can arise when verification relies on unproven or invalidated assumptionsâ
- doubly linked lists provide a concrete setting for auditing assumed lemmas
- Vosti, September 2026
- §5.1: âimports kernel contracts as trusted assumptions in Verusâ
- useful example of the engine/GPU contract boundary
- covered in the existing October collection and the verified-systems study
research priority, agent opinion
- first: compare translated claims against original Rust behavior
- directly relevant to Rust-Prover, Flex, and multi-tool proofs
- a small adversarial corpus provides a concrete first result
- second: proof maintenance after ordinary code changes
- directly relevant to source-level proofs and new support for idiomatic Rust
- use existing allocator cases before proposing another verifier
- larger project: connect verified memory components
- Corten, ACE, and CortenMM supply different starting points
- avoid claiming whole-system verification from separately verified components
Last edited: