Repolode
NethermindEth

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

    Instale o Lean 4.35.0 via elan e o .NET SDK 10.0.403 a partir do checkout

  2. 2

    Compile o projeto Lean a partir do checkout

    lake build
  3. 3

    Empacote o Extractor como um pacote NuGet local

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