Automação de provas com LLM para o provador de teoremas Lean, com sugestões de táticas, busca de provas e seleção de premissas.
NethermindEth/LeanCIL
Um framework em Lean 4 para provas verificadas por máquina de correção e segurança de memória sobre CIL de .NET compilado a partir de C#, F# e outras linguagens .NET.
- Estrelas
- 110
- Forks
- 3
- Issues abertas
- 21
- Último commit
- há 21 horas
O que é?
O LeanCIL extrai Common Intermediate Language de assemblies .NET compilados e verifica provas em Lean 4 com base em um modelo explícito dessas instruções. As provas podem abranger todas as entradas que atendem a um contrato, o término de loops, o acesso verificado à memória e contraexemplos de implementações incorretas. Contratos de métodos provados anteriormente podem ser compostos sem desdobrar os corpos das funções auxiliares.
O fluxo de trabalho inclui uma CLI com comandos para listar métodos, extrair um método e suas chamadas alcançáveis, verificar artefatos de extração e validar um teorema pelo nome com replay no kernel e auditoria de axiomas. Uma verificação bem-sucedida gera um relatório verified.json vinculado ao SHA-256 do assembly. Pacotes consumidores permitem manter especificações e provas da aplicação em um projeto Lean separado, fixado em uma versão do LeanCIL.
O subconjunto compatível abrange operações aritméticas com inteiros, alguns fluxos de controle, chamadas gerenciadas, structs sem referências e arrays e spans sobre armazenamento fornecido. Aritmética de ponto flutuante, alocação geral de classes, despacho virtual, recursão comum e manipuladores de exceção não fazem parte do modelo. O projeto não afirma verificar completamente o CLR ou o JIT.
Recursos principais
- 01Prova propriedades funcionais para todas as entradas que atendem a um contrato, usando provas em Lean 4.
- 02Extrai e valida CIL de assemblies compilados em C#, F# e outras linguagens .NET.
- 03Verifica acesso à memória, limites, inicialização e alinhamento em um modelo de memória verificado.
- 04Compõe contratos de métodos provados anteriormente sem desdobrar os corpos das funções auxiliares.
- 05Gera um relatório verified.json vinculado ao hash SHA-256 do assembly.
Casos de uso
- Provar que uma rotina aritmética ou de buffer em .NET se comporta corretamente para todas as entradas.
- Verificar que um loop sobre um span termina e deixa inalterada a memória fora da região gravável.
- Encontrar contraexemplos que mostram que uma implementação viola sua especificação pretendida.
Início rápido
- 1
Instale o Lean 4.35.0 via elan e o .NET SDK 10.0.403 a partir do checkout
- 2
Compile o projeto Lean a partir do checkout
lake build - 3
Empacote o Extractor como um pacote NuGet local
dotnet pack Extractor -c Release -o artifacts/packages - 4
Instale a ferramenta global leancil a partir do pacote local
dotnet tool install --global Nethermind.LeanCIL --add-source artifacts/packages --version 0.1.0
Antes de usar
- Oferece suporte apenas a um subconjunto restrito de CIL; alocação geral de classes, despacho virtual, manipuladores de exceção e aritmética de ponto flutuante não são compatíveis.
- Requer tanto uma toolchain do Lean 4 quanto o .NET SDK, em versões específicas fixadas.
- Projeto em estágio inicial, na versão 0.1.0 e com uma comunidade pequena.
Tópicos
Perguntas frequentes
- O que é LeanCIL?
- Um framework em Lean 4 para provas verificadas por máquina de correção e segurança de memória sobre CIL de .NET compilado a partir de C#, F# e outras linguagens .NET. O LeanCIL extrai Common Intermediate Language de assemblies .NET compilados e verifica provas em Lean 4 com base em um modelo explícito dessas instruções. As provas podem abranger todas as entradas que atendem a um contrato, o término de loops, o acesso verificado à memória e contraexemplos de implementações incorretas. Contratos de métodos provados anteriormente podem ser compostos sem desdobrar os corpos das funções auxiliares.
- LeanCIL é gratuito? Qual é a licença?
- LeanCIL é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- LeanCIL ainda é mantido?
- Manutenção ativa. O último commit de LeanCIL foi em 5 de nov. de 2026.
- Para que posso usar LeanCIL?
- Provar que uma rotina aritmética ou de buffer em .NET se comporta corretamente para todas as entradas. Verificar que um loop sobre um span termina e deixa inalterada a memória fora da região gravável. Encontrar contraexemplos que mostram que uma implementação viola sua especificação pretendida.
- Como instalar LeanCIL?
- Instale o Lean 4.35.0 via elan e o .NET SDK 10.0.403 a partir do checkout Compile o projeto Lean a partir do checkout: lake build Empacote o Extractor como um pacote NuGet local: dotnet pack Extractor -c Release -o artifacts/packages Instale a ferramenta global leancil a partir do pacote local: dotnet tool install --global Nethermind.LeanCIL --add-source artifacts/packages --version 0.1.0
- Onde consigo LeanCIL?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/NethermindEth/LeanCIL
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Framework Lean 4 para especificar, executar e verificar formalmente redes neurais, com tensores com verificação de dimensões e treinamento no estilo PyTorch.
Compilador AOT para Lean 4 que transforma programas Lean comuns em WebAssembly para Node, serverless, edge, WASI e navegadores.
Uma linguagem de programação que usa leis e provas para tornar verificável o código escrito por IA e compilá-lo em código rápido e paralelo para CPU e GPU.
Implementação em TypeScript do interpretador e verificador de modelos TLA+, substituta direta do TLC em Java que roda em navegadores, Node e Bun.
Analisador estático que detecta deadlocks, use-after-free, invalid-free e possíveis pontos de panic em projetos Rust.