Table of contents

Select a white background

Why are Proofs Important?

From a mathematician's point of view, proofs are vital, since they are the foundation for the discovery of new mathematical knowledge. But what about for a practicing computer scientist? Can't he or she just rely on existing mathematical knowledge, and dispense with ever doing proofs?

That question goes right to the heart of what computer scientists often find themselves doing: writing pieces of computer software. When you define a method or function, you presumably have a very good idea of what you want that method or function to do. But what makes you think that what you have written is correct? Testing can certainly help, but testing cannot be the whole answer, for two reasons.

  1. While testing can demonstrate the presence of errors, it cannot guarantee their absence. If testing were all that were required, software with bugs in it would never be released.

  2. If testing were the only way to understand whether what you have written is correct, you would have no recourse but to try random programs until (after a very long time) you stumbled across a correct program. Obviously, you have some reason for writing the method or function definition as you did. You must have engaged in some reasoning to convince yourself that it is correct. Although that reasoning is not a proof, it is a precursor to a proof.

When you write software, you engage in proof-like thinking, demonstrating that a particular method or function definition does what you think it does. You will not find just what you want proved in any mathematics book, because you have a custom claim that is only of interest to you. It is critical that you possess the ability to carry out such custom reasoning.