|
|
|
|
|
by oldgradstudent
3106 days ago
|
|
Formal verification techniques can be very useful, especially for finding deep, often insanely complex bugs. The process of developing the proof can produce a lot of insight about the system and expose hidden assumptions that were never considered while designing the system. It is the final proof itself which is the problem. It does not contribute anything except for terminating the debugging process. Because the specification can be just complex as the system, the proof can only provide a false sense of security. A correctness theatre. |
|
That's true in a certain restricted sense, if you see the verified program as a thing set in stone and never touched again. But verified software is maintained, changed and extended just like other software. Whenever you change a program and your proofs still work, that tells you something. If the proofs break, that also tells you something. If all you need to change are some small lemmas but the overall end-to-end proof goes through, you know exactly what interactions with other parts of the system were affected by your change.