Repolode
NethermindEth

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. 1

    Установить Lean 4.35.0 через elan и .NET SDK 10.0.403 из checkout

  2. 2

    Собрать проект Lean из checkout

    lake build
  3. 3

    Упаковать Extractor в локальный пакет NuGet

    dotnet pack Extractor -c Release -o artifacts/packages
  4. 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.

204+13 за неделю24LeanMITАктивно поддерживаетсяОбновлён 8 дней назад

Язык программирования, который использует законы и доказательства, чтобы проверять корректность кода, написанного ИИ, и компилирует его в быстрый параллельный код для CPU и GPU.

24,8 тыс.+194 за неделю793TypeScriptApache-2.0Активно поддерживаетсяОбновлён 18 часов назад