Formal verification
Also: Machine-checked proof · Property proving
Proving mathematically that code satisfies a stated property for every possible input, rather than testing that it behaves correctly on the inputs someone thought of.
A test checks one execution. A proof checks all of them. The property is written formally — this function never lets the total supply exceed the cap, this loop always terminates — and a tool establishes that no input can violate it.
What changed recently
It stopped being a research activity. Tooling reached the point where teams shipping ordinary contracts use it on the parts that matter, and where a proved property is a normal line in an audit report rather than a specialist engagement.
The failure mode nobody proves away
Specifying the wrong property. A proof is exactly as valuable as the statement it establishes, and a system can satisfy every property it was given while doing something nobody wanted. That is not a hypothetical: it is the standard way verified systems fail.
Why it does not replace review
Verification answers does the code satisfy this property. An audit asks the open question — can trained people find anything wrong at all — which is a different activity and catches the class of problem where the specification itself is the mistake. In practice a proved core frees reviewer time for everything a specification does not cover.