Основная причина ошибок, допускаемых даже опытными программистами, состоит в невозможности предсказать поведение сложной разветвленной программы во всех мыслимых ситуациях и при любых наборах исходных данных. Такие ошибки — настоящий бич программирования, а цена их может быть очень велика. Известны случаи, когда в результате единственного неверного оператора срывались запуски космических кораблей, происходили серьезные аварии на производстве и транспорте. Поэтому разработка методов, облегчающих процесс обнаружения ошибок и позволяющих проверять правильность программ,— это одна из центральных проблем информатики.