Есть у меня, к примеру, графы. И несколько алгоритмов по работе с графами. Хочется убедиться в корректности работы этих процедур - тесты, все-таки, покрывают не все возможные случаи.
Я знаю о существовании agda, coq, ats - но, насколько можно судить по разрозненным знаниям из википедии, они доказывают корректность зависимых типов выражений. А у меня тип везде один и тот же - граф и граф
Подскажите, как правильно будет доказать правильность реализации алгоритма по некой спецификации? И как правильно описывать такие спецификации алгоритмов?