Описание услуги
Разрабатываю и верифицирую программы на Agda — зависимо типизированном функциональном языке, который одновременно является помощником в доказательствах. Если вам нужна программа, корректность которой проверяет компилятор, а не надежда на тесты, я помогу. Берусь как за небольшие верифицированные структуры данных, так и за полноценные формальные разработки, где каждый инвариант доказан на уровне типов. Я кодирую спецификацию как тип, а затем позволяю проверщику типов заставить реализацию ей соответствовать, поэтому целые классы ошибок просто не компилируются. Типичные результаты работы: верифицированные алгоритмы с доказательствами завершаемости и корректности, формализации математических структур, зависимо типизированные парсеры и интерпретаторы, машинно проверенные модели протоколов и бизнес-правил. Свободно работаю с индексированными типами данных, сигма- и пи-типами, пропозициональным равенством, вполне обоснованной рекурсией и стандартной библиотекой. Переношу неформальные рассуждения на бумаге в полностью проверенные модули Agda. Кроме написания кода я обучаю теории типов: индивидуальные занятия по соответствию Карри-Ховарда, индуктивным семействам, зависимому сопоставлению с образцом и умению мыслить доказательствами вместо тестов. Каждый проект сопровождается чистым комментированным исходником, который проходит проверку типов с нуля, короткой запиской по ключевым леммам и созвоном-разбором для вашей команды. Честно объясняю компромиссы, в том числе когда более лёгкий подход в другом инструменте подойдёт вам лучше.