>тесты делают то же самое
Нет, тесты подтверждают правильное поведение программы только на определенных входных данных. А здесь мы можем быть уверены что если теорема написана правильно, то программа будет работать на всех входных данных.
>А какой смысл писать ...
Перестраховка. Написал два раза, и можешь быть уверен что если программа скомпилировалось, то ты не поставил там по пьяни другой знак. Ну или ты совершил одинаковую ошибку в коде и пруве, но я не знаю кем нужно быть чтобы такое совершить.
>Чтобы я видел что здесь можно вызвать undefined
В нормальных языках с сильной системой типов нет undefined
>Недавно фигачил в марафонском режиме...
Можешь не использовать прувы. Но в таком случае практически всегда в программе будут баги, так как тесты не могут покрыть весь код и все возможные варианты данных.
Тем не менее, они покрывают. Я могу доказать в конкретно своём случае, что из корректности на предоставленных тестах следует корректность на любом тесте (конечно, с учётом синтаксиса алгоритма). Я думаю, в общем случае, это какое-то следствие PCP-теоремы, если алгоритм достаточно "гладкий", допустим, в терминах информационных систем Скотта, то его можно гарантированно тестить малыми объёмами тестов.