README.md

March 27, 2026 · View on GitHub

Rust verification in Lean 4

A collection of formal verification projects for zero-knowledge virtual machine components. Each subdirectory is a self-contained project where Rust code is translated to Lean 4 using Hax or Aeneas, and then formally verified.

Projects

DirectoryPipelineDescription
hax-FRI/Hax → LeanVerification of one-step FRI folding from Plonky3
hax-horner/Hax → LeanHorner polynomial evaluation from Plonky3, with CompPoly spec and proofs
hax-merkle/Hax → LeanMerkle root recomputation and inclusion verification from RISC Zero
hax-annotations-adc/Hax → Lean32-bit limb addition with carry (adc), verified via Hax annotations and bv_decide
aeneas-FRI/Aeneas → LeanFRI folding functions (fold_step, fold_arity) translated via the Aeneas pipeline
Plonky3-Field-Arithmetic/HaxHax → LeanGeneration of Lean 4 code via Hax from Rust models of Plonky3's Mersenne31 and KoalaBear fields
Plonky3-Field-Arithmetic/AeneasAeneas → LeanVerification of addition and multiplication functions of Rust models of Plonky3's Mersenne31

Each project has its own README with details on the verification target, pipeline specifics, and current status.

Building

Each Lean project can be built independently with lake build from its respective directory. Rust crates can be built with cargo build. See individual project READMEs for specific instructions.