Lean is useful even when you do not verify the implementation itself. You can encode a specification as a small executable model, generate a test corpus from that model, feed the same inputs to a real checker, compiler, or runtime, and report disagreements as counterexamples.
The essential separation is:
- Correctness inside the model: Lean checks the semantic decision procedure and its theorems.
- Correspondence with the implementation: an external adapter runs the implementation and compares its observations with Lean's decisions.