Lean
Typed programming and interactive proofs
What it does
Lean provides a programming language and proof assistant combining types, theorems, and automation for expressing programs and formal reasoning within the same environment.
When to use it
For formal-verification learning, examine function and tactic tutorials to read proof states and develop the argument step by step.