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