МБ
Size: a a a
МБ
AT
МБ
МБ
p
p
МБ
p
G
p
G
МБ
p
К
Проблема в том, что рассматриается вырожденный случай, когда всем всё понятно, что правильно
А этот очевидный случай как раз неправильный и система доказательства полной корректности бы его не приняла.result = a - b
, а не городить всё то, что тут было предложеноM
FO
FO
МБ
Проблема в том, что рассматриается вырожденный случай, когда всем всё понятно, что правильно
А этот очевидный случай как раз неправильный и система доказательства полной корректности бы его не приняла.result = a - b
, а не городить всё то, что тут было предложеноresult = a - b
, если и так написано substract a b = a - b
? Ведь, чисто с технической точки зрения, мы просто увеличиваем корректность кода повторением одного и того же в двух разных местах. Но, ведь, нет никаких гарантий, что ошибка именно на уровне типов, а не на уровне термов. Во-вторых, тесты делают то же самое. И можно строго доказать, что не нужно проверять каждую функцию в программе, а достаточно проверять свойства на верхнем уровне, и тогда с высокой степенью вероятности substract будет вести себя, как -
.Certigrad
, где для обоснования простого градиентного спуска потребовалась годовая работа института. Хотя, на бумажке это делается минут за 15.#undefined
, как функцию, и вот тебе тестовый контрпример.AT
AT