Automatización de pruebas con LLM para el demostrador de teoremas Lean, con sugerencias de tácticas, búsqueda de pruebas y selección de premisas.
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
Instala Lean 4.35.0 mediante elan y .NET SDK 10.0.403 desde el checkout
- 2
Compila el proyecto Lean desde el checkout
lake build - 3
Empaqueta Extractor como paquete NuGet local
dotnet pack Extractor -c Release -o artifacts/packages - 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
Framework de Lean 4 para especificar, ejecutar y verificar formalmente redes neuronales, con tensores que comprueban las dimensiones y entrenamiento al estilo de PyTorch.
Compilador ahead-of-time de Lean 4 que convierte programas Lean comunes en WebAssembly para Node, serverless, edge, WASI y navegadores.
Un lenguaje de programación que usa leyes y pruebas para verificar código escrito por IA y compilarlo a código paralelo rápido para CPU y GPU.
Implementación en TypeScript del intérprete y model checker de TLA+, como reemplazo directo de TLC que se ejecuta en navegadores, Node y Bun.
Formalización en Lean 4 del Stacks Project, la referencia de código abierto sobre geometría algebraica, basada en Mathlib y con demostraciones verificadas por máquina.