CONCEPT
Provable Correctness
Dijkstra's insistence that a program's correctness should be established by
proof — formal reasoning from specification to implementation — not by the accumulated evidence of tests that passed.
Provable correctness is the standard Dijkstra held up against the software industry for fifty years and that the industry spent fifty years finding reasons not to meet. The claim is simple: a program is a formal argument; its correctness is either demonstrable through logical reasoning or it is not; and the accumulation of successful test executions, however voluminous, does not constitute a demonstration. It can at most establish that the program behaves correctly for the tested cases. The untested cases remain, and in principle any one of them might trigger a failure that no tested input revealed. The difference
between tested and
verified is the difference between evidence and proof, and in domains where failure has consequences — infrastructure, medicine, finance, anything that affects human safety — the difference is not pedantic.
In The You On AI Field Guide
The background claim is logical, not empirical. Programs accept inputs from effectively infinite spaces. Testing examines a finite subset of those spaces. No finite subset of an