There are many reasons for studying the concept of program verification. The verification is the term given to the activity of proving a program correct.
There is a limit to what we can do with testing. Testing will always be an important part of the program development process. However, famous computer scientist, Dijkstra, once made an interesting statement which is relevant in this context:
Program testing can be used to show the presence of bugs but never to show their absence!
A 100 per cent effective test would need to run the program on every legal input data set. Since there are usually infinitely many of these, this is impractical.
But what if we are in a situation where we need to know ...