Автоматизация доказательств в Lean с помощью LLM: подсказки по тактикам, поиск доказательств и подбор лемм.
NethermindEth/LeanCIL
Фреймворк для Lean 4, позволяющий формально доказывать корректность и безопасность работы с памятью в скомпилированном .NET CIL.
- Звёзды
- 110
- Форки
- 3
- Открытые issues
- 21
- Последний коммит
- 18 часов назад
Что это?
LeanCIL извлекает Common Intermediate Language из скомпилированных сборок .NET и проверяет доказательства Lean 4 относительно явной модели этих инструкций. С помощью доказательств можно установить корректность для всех входных данных, удовлетворяющих контракту, завершение циклов, безопасность проверяемого доступа к памяти и найти контрпримеры для некорректных реализаций. Контракты уже доказанных методов можно использовать совместно, не раскрывая тела вспомогательных методов.
Рабочий процесс включает CLI с командами для вывода списка методов, извлечения метода и достижимых из него вызовов, проверки артефактов извлечения и верификации именованной теоремы с повторной проверкой ядром и аудитом аксиом. При успешной верификации создаётся отчёт verified.json, привязанный к SHA-256 сборки. Пакеты для потребителей позволяют хранить спецификации приложения и доказательства в отдельном проекте Lean, зафиксированном на конкретной версии LeanCIL.
Поддерживаемое подмножество включает целочисленную арифметику, отдельные конструкции управления потоком, вызовы управляемого кода, структуры без ссылок, а также массивы и spans, работающие с предоставленной памятью. Арифметика с плавающей точкой, произвольное создание объектов классов, виртуальная диспетчеризация, обычная рекурсия и обработчики исключений не входят в модель. Проект не заявляет о полной верификации CLR или JIT.
Ключевые возможности
- 01Доказывает функциональные свойства для всех входных данных, удовлетворяющих контракту, с помощью Lean 4.
- 02Извлекает и проверяет CIL из скомпилированных сборок C#, F# и других языков .NET.
- 03Проверяет доступ к памяти, границы, инициализацию и выравнивание в модели памяти с проверками.
- 04Позволяет использовать совместно контракты уже доказанных методов, не раскрывая тела вспомогательных методов.
- 05Создаёт отчёт verified.json, привязанный к хешу SHA-256 сборки.
Сценарии использования
- Доказательство корректности арифметической процедуры или процедуры обработки буфера в .NET для всех входных данных.
- Проверка, что цикл по span завершается и не изменяет память за пределами доступной для записи области.
- Поиск контрпримеров, показывающих, что реализация нарушает предполагаемую спецификацию.
Быстрый старт
- 1
Установить Lean 4.35.0 через elan и .NET SDK 10.0.403 из checkout
- 2
Собрать проект Lean из checkout
lake build - 3
Упаковать Extractor в локальный пакет NuGet
dotnet pack Extractor -c Release -o artifacts/packages - 4
Установить глобальный инструмент leancil из локального пакета
dotnet tool install --global Nethermind.LeanCIL --add-source artifacts/packages --version 0.1.0
Что важно знать
- Поддерживается только ограниченное подмножество CIL; общая аллокация классов, виртуальная диспетчеризация, обработчики исключений и арифметика с плавающей точкой не поддерживаются.
- Требуются и тулчейн Lean 4, и .NET SDK с конкретными зафиксированными версиями.
- Проект на ранней стадии: версия 0.1.0, небольшое сообщество.
Темы
Частые вопросы
- Что такое LeanCIL?
- Фреймворк для Lean 4, позволяющий формально доказывать корректность и безопасность работы с памятью в скомпилированном .NET CIL. LeanCIL извлекает Common Intermediate Language из скомпилированных сборок .NET и проверяет доказательства Lean 4 относительно явной модели этих инструкций. С помощью доказательств можно установить корректность для всех входных данных, удовлетворяющих контракту, завершение циклов, безопасность проверяемого доступа к памяти и найти контрпримеры для некорректных реализаций. Контракты уже доказанных методов можно использовать совместно, не раскрывая тела вспомогательных методов.
- LeanCIL можно использовать бесплатно? Какая у него лицензия?
- LeanCIL распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- LeanCIL всё ещё поддерживается?
- Активно поддерживается. Последний коммит в LeanCIL — 5 нояб. 2026 г..
- Для чего можно использовать LeanCIL?
- Доказательство корректности арифметической процедуры или процедуры обработки буфера в .NET для всех входных данных. Проверка, что цикл по span завершается и не изменяет память за пределами доступной для записи области. Поиск контрпримеров, показывающих, что реализация нарушает предполагаемую спецификацию.
- Как установить LeanCIL?
- Установить Lean 4.35.0 через elan и .NET SDK 10.0.403 из checkout Собрать проект Lean из checkout: lake build Упаковать Extractor в локальный пакет NuGet: dotnet pack Extractor -c Release -o artifacts/packages Установить глобальный инструмент leancil из локального пакета: dotnet tool install --global Nethermind.LeanCIL --add-source artifacts/packages --version 0.1.0
- Где скачать LeanCIL?
- Исходный код и инструкции по установке — на GitHub: https://github.com/NethermindEth/LeanCIL
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Фреймворк для Lean 4, позволяющий описывать, запускать и формально верифицировать нейросети с проверкой форм тензоров и обучением в стиле PyTorch.
AOT-компилятор Lean 4, который превращает обычные программы на Lean в WebAssembly для Node, serverless-, edge-, WASI- и браузерных сред.
Язык программирования, который использует законы и доказательства, чтобы проверять корректность кода, написанного ИИ, и компилирует его в быстрый параллельный код для CPU и GPU.
Интерпретатор и проверщик моделей TLA+ на TypeScript — замена TLC на Java, работающая в браузерах, Node и Bun.
Статический анализатор, который выявляет дедлоки, use-after-free, invalid-free и возможные места паники в проектах на Rust.