ABSTRACT

We design and write programs to perform tasks, and one of the fundamental requirements of our programs is that they perform these tasks in a manner that we consider to be correct. For example, if we write a program that takes an input and produces some output, there are a set of possible outputs that are considered to be acceptable for a given input. If a program gives an output for a given input that is not acceptable, we would say that the program behaved incorrectly (most often, we say it has a bug).