为 Lean 定理证明器提供基于大语言模型的证明自动化,包括策略建议、证明搜索和前提选择。
NethermindEth/LeanCIL
基于 Lean 4 的形式化验证框架,可对 C#、F# 等 .NET 语言编译出的 CIL 字节码进行机器可检查的正确性与内存安全证明。
- Star
- 110
- Fork
- 3
- 未关闭 Issue
- 21
- 最近提交
- 前天
这是什么?
LeanCIL 从编译好的 .NET 程序集中提取 Common Intermediate Language(CIL),并依据对这些指令的显式模型,用 Lean 4 检查证明。它可以证明满足契约的所有输入都具有某种结果,证明循环终止,检查内存访问条件,或给出错误实现的反例。已证明的方法契约可以直接组合使用,无需展开辅助函数的实现。
命令行工具提供列出方法签名、提取目标方法及其可达调用、检查提取产物、以及对指定定理进行内核重放和公理审计等功能。验证通过后会生成 verified.json 报告,并与程序集的 SHA-256 绑定。应用可以把规约和证明放在独立的 Lean 项目中,并固定依赖 LeanCIL。
当前支持的子集包括整数运算、部分控制流、托管方法调用、无引用类型的结构体,以及基于已提供存储的数组和 Span。浮点运算、通用类对象分配、虚方法分派、普通递归和异常处理不在模型范围内。项目并不声称完整验证 CLR 或 JIT 的行为。
核心功能
- 01借助 Lean 4 证明,对满足契约的所有输入验证函数性质。
- 02从编译后的 C#、F# 等 .NET 程序集中提取并校验 CIL。
- 03在带检查的内存模型中验证内存访问、边界、初始化和对齐。
- 04无需展开辅助方法实现,即可组合已证明的方法契约。
- 05生成与程序集 SHA-256 绑定的 verified.json 验证报告。
适用场景
- 证明 .NET 中的算术或缓冲区例程对所有输入都行为正确。
- 验证对 Span 的循环会终止,且可写区域之外的内存保持不变。
- 为不符合规约的实现找出反例。
快速上手
- 1
通过 elan 安装 Lean 4.35.0,并安装 .NET SDK 10.0.403
- 2
在代码仓库目录中构建 Lean 项目
lake build - 3
将 Extractor 打包为本地 NuGet 包
dotnet pack Extractor -c Release -o artifacts/packages - 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 的形式化验证框架,可对 C#、F# 等 .NET 语言编译出的 CIL 字节码进行机器可检查的正确性与内存安全证明。 LeanCIL 从编译好的 .NET 程序集中提取 Common Intermediate Language(CIL),并依据对这些指令的显式模型,用 Lean 4 检查证明。它可以证明满足契约的所有输入都具有某种结果,证明循环终止,检查内存访问条件,或给出错误实现的反例。已证明的方法契约可以直接组合使用,无需展开辅助函数的实现。
- LeanCIL 可以免费使用吗?用的什么许可证?
- LeanCIL 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- LeanCIL 还在维护吗?
- 活跃维护中。LeanCIL 最近一次提交是在 2026年11月5日。
- LeanCIL 适合用来做什么?
- 证明 .NET 中的算术或缓冲区例程对所有输入都行为正确。 验证对 Span 的循环会终止,且可写区域之外的内存保持不变。 为不符合规约的实现找出反例。
- LeanCIL 怎么安装和运行?
- 通过 elan 安装 Lean 4.35.0,并安装 .NET SDK 10.0.403 在代码仓库目录中构建 Lean 项目: 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
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
基于 Lean 4 的框架,用于神经网络的形式化规约、执行与形式验证,支持形状检查的张量与类 PyTorch 训练。
将普通 Lean 4 程序提前编译为 WebAssembly,可部署到 Node、无服务器、边缘、WASI 和浏览器。
一门用法则与证明约束 AI 生成代码、并可编译为 CPU/GPU 并行程序的编程语言。
用 TypeScript 实现的 TLA+ 解释器与模型检查器,可替代基于 Java 的 TLC,在浏览器、Node 和 Bun 中运行。
基于 Mathlib 的 Lean 4 形式化项目,将开源代数几何参考书 Stacks Project 转写为机器可验证的证明。