Repolode
NethermindEth

NethermindEth/LeanCIL

Framework para Lean 4 que permite demostrar con verificación mecánica la corrección y la seguridad de memoria del CIL de .NET compilado desde C#, F# y otros lenguajes .NET.

Estrellas
110
Forks
3
Issues abiertos
21
Último commit
ayer

¿Qué es?

LeanCIL extrae Common Intermediate Language de ensamblados .NET compilados y comprueba pruebas de Lean 4 frente a un modelo explícito de esas instrucciones. Las pruebas pueden abarcar todas las entradas que cumplen un contrato, la terminación de bucles, el acceso a memoria comprobado y contraejemplos que evidencian implementaciones incorrectas. Los contratos de métodos demostrados previamente se pueden componer sin desplegar los cuerpos de los métodos auxiliares.

El flujo de trabajo incluye una CLI con comandos para listar métodos, extraer un método y sus llamadas alcanzables, comprobar los artefactos de extracción y verificar un teorema por nombre mediante la reproducción en el kernel y una auditoría de axiomas. Si la verificación tiene éxito, se genera un informe verified.json vinculado al SHA-256 del ensamblado. Los paquetes consumidores permiten mantener las especificaciones y pruebas de una aplicación en un proyecto Lean independiente, fijado a una versión de LeanCIL.

El subconjunto compatible abarca aritmética de enteros, ciertos flujos de control, llamadas administradas, structs sin referencias y arrays y spans sobre almacenamiento proporcionado. La aritmética de punto flotante, la asignación general de clases, el despacho virtual, la recursión ordinaria y los controladores de excepciones quedan fuera del modelo. El proyecto no afirma ofrecer una verificación completa del CLR ni del JIT.

Funciones clave

  • 01Demuestra propiedades funcionales para todas las entradas que cumplen un contrato mediante pruebas de Lean 4.
  • 02Extrae y valida CIL de ensamblados .NET compilados desde C#, F# y otros lenguajes .NET.
  • 03Comprueba el acceso a memoria, los límites, la inicialización y la alineación mediante un modelo de memoria con comprobaciones.
  • 04Compone contratos de métodos demostrados previamente sin desplegar los cuerpos de los métodos auxiliares.
  • 05Genera un informe verified.json vinculado al hash SHA-256 del ensamblado.

Casos de uso

  • Demostrar que una rutina aritmética o de búfer de .NET se comporta correctamente para todas las entradas.
  • Comprobar que un bucle sobre un span termina y deja sin cambios la memoria fuera de la región en la que puede escribir.
  • Encontrar contraejemplos que demuestren que una implementación incumple la especificación prevista.

Inicio rápido

  1. 1

    Instala Lean 4.35.0 mediante elan y .NET SDK 10.0.403 desde el checkout

  2. 2

    Compila el proyecto Lean desde el checkout

    lake build
  3. 3

    Empaqueta Extractor como paquete NuGet local

    dotnet pack Extractor -c Release -o artifacts/packages
  4. 4

    Instala la herramienta global leancil desde el paquete local

    dotnet tool install --global Nethermind.LeanCIL --add-source artifacts/packages --version 0.1.0

Antes de usarlo

  • Solo admite un subconjunto limitado de CIL; no admite la asignación general de clases, el despacho virtual, los controladores de excepciones ni la aritmética de coma flotante.
  • Requiere tanto una cadena de herramientas de Lean 4 como .NET SDK, con versiones específicas fijadas.
  • Es un proyecto en fase inicial, en la versión 0.1.0 y con una comunidad pequeña.

Temas

Preguntas frecuentes

¿Qué es LeanCIL?
Framework para Lean 4 que permite demostrar con verificación mecánica la corrección y la seguridad de memoria del CIL de .NET compilado desde C#, F# y otros lenguajes .NET. LeanCIL extrae Common Intermediate Language de ensamblados .NET compilados y comprueba pruebas de Lean 4 frente a un modelo explícito de esas instrucciones. Las pruebas pueden abarcar todas las entradas que cumplen un contrato, la terminación de bucles, el acceso a memoria comprobado y contraejemplos que evidencian implementaciones incorrectas. Los contratos de métodos demostrados previamente se pueden componer sin desplegar los cuerpos de los métodos auxiliares.
¿LeanCIL es gratuito? ¿Qué licencia tiene?
LeanCIL es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿LeanCIL sigue mantenido?
Mantenimiento activo. El último commit de LeanCIL fue el 5 nov 2026.
¿Para qué puedo usar LeanCIL?
Demostrar que una rutina aritmética o de búfer de .NET se comporta correctamente para todas las entradas. Comprobar que un bucle sobre un span termina y deja sin cambios la memoria fuera de la región en la que puede escribir. Encontrar contraejemplos que demuestren que una implementación incumple la especificación prevista.
¿Cómo se instala LeanCIL?
Instala Lean 4.35.0 mediante elan y .NET SDK 10.0.403 desde el checkout Compila el proyecto Lean desde el checkout: lake build Empaqueta Extractor como paquete NuGet local: dotnet pack Extractor -c Release -o artifacts/packages Instala la herramienta global leancil desde el paquete local: dotnet tool install --global Nethermind.LeanCIL --add-source artifacts/packages --version 0.1.0
¿Dónde consigo LeanCIL?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/NethermindEth/LeanCIL

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados