Creusot 0.14.0 release - Contracts for Rust, formally proved
Creusot, the formal verification tool for Rust, has released version 0.14.0 with several new features. One significant change is the relaxation of the PartialOrd specification, allowing for partial orders instead of only total orders. Previously, Creusot's definition of total order relied on a comparison function cmp_log returning an Ordering, but this was replaced by a strict partial order (PartialOrdLogic) with an irreflexive and transitive comparison function lt_log.
This change did not affect existing proofs as the automated provers adapted to it. Another new feature is the generation of verification conditions (VCs) for snapshots, which embed logic expressions in Rust programs. This enhancement improves the use of lemma functions, allowing them to be called within snapshot statements. Creusot now translates these calls to assertions specialized to the function's argument, avoiding the need for provers to instantiate universal quantifiers.
Additionally, Go-to-definition functionality for Pearlite specifications has been improved, enabling more precise navigation within the code.
Written by urgent.news from Lobsters's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.