FVSpec: перевод реальных property-based тестов на Lean и новые ориентиры для ИИ-верификации

8 сентября 202629 просмотров

Исследователи собрали более 11 тысяч property-based тестов из настоящих Python-проектов и автоматически превратили их в тысячи формальных спецификаций Lean 4. Получившийся открытый бенчмарк позволяет оценивать, насколько хорошо модели и агенты справляются с проверкой реального кода.

FVSpec: перевод реальных property-based тестов на Lean и новые ориентиры для ИИ-верификации

Зачем нужен новый бенчмарк

Чем больше кода пишут нейросети, тем острее встаёт вопрос: как убедиться, что этот код действительно делает то, что нужно? Обычные тесты находят часть ошибок, но не дают формальных гарантий корректности. Для этого нужна верификация — перевод программы на язык строгих математических утверждений и доказательство её свойств. Работа это дорогая и сложная, поэтому исследователи хотят переложить её на ИИ.

Проблема в том, что модели, обученные на аккуратных учебных примерах, часто теряются при встрече с реальным кодом. В настоящих проектах полно неявных соглашений, особенностей языка и недокументированного поведения. Чтобы проверить, насколько ИИ справляется с такими условиями, нужен масштабный полигон, построенный на настоящих программах, а не на синтетических задачках.

FVSpec: реальные тесты как задача для ИИ

Группа исследователей — Quinn Dougherty, Max von Hippel, Simon Henniger, Hazel Shackleton и Mike Dodds — представила бенчмарк FVSpec. Работа появилась на arXiv под номером 2606.01008, а в августе 2026 года авторы выпустили обновлённую версию.

Основная идея состоит в том, чтобы взять property-based тесты из реальных Python-репозиториев и превратить их в формальные спецификации на языке Lean 4. Такие тесты проверяют не конкретные примеры, а свойства функции: «для любого допустимого входа выполняется определённое условие». Это делает их естественным мостиком к математической формализации.

Авторы собрали 11 039 property-based тестов из открытых Python-проектов. Автоматически перевести на Lean 4 удалось лишь 2 772 из них — примерно четверть. При этом на выходе получилось 9 415 спецификаций: около трёх вариантов формализации на каждый успешно переведённый тест. Запас нужен потому, что одно и то же свойство можно записать по-разному, и заранее не всегда понятно, какой вариант окажется удобнее для последующего доказательства.

Почему это сложно

Переписывание тестов на Lean — не механическая замена синтаксиса. Python и Lean находятся в разных парадигмах: в первом — динамическая типизация, изменяемые объекты и императивные конструкции, во втором — строгая система с зависимыми типами. Чтобы спецификация соответствовала реальному поведению кода, семантику Python приходится аккуратно моделировать.

Дополнительная сложность в том, что property-based тест часто записан как императивный сценарий: с циклами, исключениями и работой с состоянием. Выделить из этого чистое утверждение вида «для любого x выполняется P(x)» — отдельная исследовательская задача.

Наконец, Lean 4 остаётся языком со сложной системой типов, который редко встречается даже в профессиональной разработке. Для языковых моделей это серьёзный вызов: им нужно одновременно освоить редкий синтаксис, привыкнуть к зависимым типам и генерировать корректные определения.

Как устроен пайплайн и оценка

Для автоматического перевода авторы создали конвейер из трёх LLM-агентов. Судя по описанию, агенты распределяют работу между собой: один разбирает исходный тест, другой строит спецификацию, третий проверяет и улучшает результат. Весь код пайплайна опубликован, как и собранные данные.

Качество перевода оценивалось по нескольким направлениям. Покрытие показывает, какая доля реальных тестов вообще поддаётся формализации. Отдельные метрики качества оценивают, насколько полученная спецификация отражает исходное поведение кода. Кроме того, исследователи зафиксировали бейзлайны для генерации доказательств: они прогнали несколько автоматических и модельных подходов и выяснили, как часто тем удаётся доказать сформулированные утверждения. Такие замеры дают будущим работам точку отсчёта для сравнения.

Что это даёт практике

FVSpec нацелен на малоизученную область — ИИ-ассистированную формальную верификацию реального ПО. Умение доказывать свойства учебных примеров не гарантирует успеха на настоящем коде, поэтому бенчмарк, построенный на реальных тестах, помогает честно сравнивать методы и отслеживать прогресс.

Значимость такого подхода растёт вместе с количеством кода, который генерируют нейросети. Если ИИ всё чаще пишет программы, то автоматические инструменты проверки корректности становятся не роскошью, а необходимостью.

Вывод

FVSpec — заметный шаг к тому, чтобы формальная верификация перестала быть уделом узких специалистов и превратилась в практический инструмент. Бенчмарк объединяет настоящие property-based тесты, язык Lean 4 и открытый LLM-пайплайн. Благодаря доступным данным и коду любой исследователь может воспроизвести эксперименты или предложить собственный подход, а значит, у сообщества появляется общая точка для движения вперёд.

Часто задаваемые вопросы

Похожие материалы

Все материалы
FVSpec: перевод property-based тестов в Lean 4 — обзор