The Meaning of "Proof"
- Is this proof an absolute guarantee that
foo will work correctly when run on a
computer?
- No; because the physical running of foo
depends upon many things:
- That the Racket interpreter does not
have any bugs
- That the language Racket is written in
(assembly, C, or Java for example) is
correctly implemented
- That the chips in the computer are
free of defects
- That a lightning bolt does not fry the
motherboard at the time you run foo, etc.
- Proofs of this sort prove the correctness of
an abstract, and not a concrete, process.
- Together, informal and formal methods of
procedure verification can greatly improve
software reliability.