Описание услуги
Я инженер доказательств и специализируюсь на системе интерактивного доказательства теорем Coq и её языке спецификаций Gallina. Моя задача — убрать из вашего кода формулировку «скорее всего, работает» и заменить её доказательством, которое проверяет сама машина. Получив алгоритм, протокол или математическое утверждение, я записываю его спецификацию на Gallina, а затем в интерактивном режиме строю доказательство того, что реализация ей соответствует, разбирая все случаи без исключения. Ничего не принимается на веру: каждая лемма выводится и заново проверяется компилятором coqc при каждой сборке. Обычно ко мне обращаются, чтобы формально доказать инварианты структур данных, обосновать завершаемость и функциональную корректность рекурсивных функций, механизировать теоремы из комбинаторики, алгебры или логики, а также смоделировать конечные автоматы для свойств параллелизма и безопасности. Я свободно владею тактическими языками Ltac и Ltac2, дисциплиной SSReflect вместе с библиотекой Mathematical Components, зависимыми типами, вполне обоснованной рекурсией и индуктивными предикатами. Когда доказательства сходятся, я использую механизм извлечения Coq, чтобы получить чистый исполняемый код на OCaml, который переносит гарантии доказательства в продакшн; при необходимости готовлю извлечение в Haskell или Scheme. На выходе вы получаете документированную разработку на Coq, которая компилируется без admit и лишних аксиом, читаемую спецификацию, извлечённый и протестированный модуль и короткий отчёт о том, что именно обещают теоремы и где проходят их границы. Я механизировал проходы компиляторов, верифицировал арифметические и криптографические примитивы и восстанавливал сломанные после обновления библиотек скрипты доказательств. Если вам нужна не просто тестовая выборка, а уверенность, я дам результат, истинный по построению и остающийся истинным по мере развития кода.