Something went wrong. Try again.
forked from verus-lang/verus
Something went wrong. Try again.
Summary #
Getting started #
Tutorial: Fundamentals #
- Using Verus within Rust
- Basic specifications
- Specification code, proof code, executable code
- Recursion and loops
- Datatypes: struct and enum
- Libraries
- Spec closures
- Quantifiers
Tutorial: Proof Development #
- Developing proofs
- SMT solving, automation, and where automation fails
- What's decidable, what's undecidable, what's fast, what's slow <!--- Chris --->
- Integers and nonlinear arithmetic
- Bit vectors and bitwise operations
- forall and exists: writing and using triggers, inline functions <!--- Chris --->
- Recursive functions <!--- Chris --->
- Extensional equality
- Libraries: incomplete axioms for Seq, Set, Map <!--- Chris --->
- Managing proof performance and why it's critical
- Using LLM assistants
- Checklist: what to do when proofs go wrong
Tutorial: Verification and Rust #
Installation, configuration, and tooling #
Reference #
- Supported and unsupported Rust features
- Verus syntax by example
- Modes
- Contributed Extensions
- Specification language
- Type Interpretations
- Spec expressions
- Operator Precedence
- Rust subset
- Arithmetic
- Bit operators
- Coercion with
as - Spec equality (
==) - Extensional equality (
=~=,=~~=) - Prefix and/or (&&& and |||)
- Chained operators
- Implication (
==>,<==, and<==>) - Quantifiers (
forall,exists) - Such that (
choose) - Trigger annotations
- The view function
@ - Spec index operator
[] - The
hasoperator - The
isoperator - The
matchesoperator decreases_to!
- Proofs
- Function specifications
- External trait specifications
- Loop specifications
- Recursion and termination
- Type invariants
- Attribute list
- Directives
- Misc. Rust features
- Command line
- Planned future work