Rust’s lang team is exploring some kind of standardised contract language
Creusot focuses on functional correctness, seems to have a smart overall design
Prusti verifies functional correctness plus ownership (that Rust compiler already checked), can take 100x eval time vs. Creusot, struggles with some concepts like reborrowing in a loop
Aeneas translates to “low-level borrow calculus” and then applies F*, currently behind Prusti and Creusot on language support

Verus is similar to Creusot, with added feature of “linear ghost permissions” which allow verifying raw pointer accesses