关于 cs-formal
cs-formal 是用于软件属性与规格验证的 OpenClaw skill,面向需要形式化方法的开发和研究工作。它涵盖 Hoare 三元组、TLA+、Coq、Lean 和类型论相关流程。
主要功能
- 01检查 Hoare 三元组
- 02生成并检查 TLA+ 模型
- 03使用 Coq 和 Lean 证明
- 04求值 System F 构造
- 05以 JSON 导出证明和模型
适用场景
- 01检查代码前置条件与后置条件
- 02对并发系统行为进行模型检查
- 03使用依赖类型证明定理
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill cs-formal安装后在 Claude Code 中输入/cs-formal确认已加载。
详细介绍
cs-formal
用途
此技能提供在计算机科学中应用形式化方法的工具,包括类型论(HoTT 和 System F)、逻辑系统、Hoare 三元组、用于模型检查的 TLA+,以及在 Coq 或 Lean 中进行验证。可用于证明程序正确性并验证规范。
适用场景
在验证软件属性时使用此技能,例如使用 TLA+ 检查分布式系统中的并发错误、在依赖类型中证明定理(例如 HoTT),或通过 Hoare 三元组检查代码不变量。此技能适用于安全关键代码、学术证明,或将形式化验证集成到开发工作流中。
主要功能
- 解析并验证 Hoare 三元组:例如,{P} C {Q},其中包含前置条件和后置条件。
- 生成 TLA+ 规范,用于对并发系统进行模型检查。
- 使用 Coq/Lean 进行定理证明,包括归纳类型和策略。
- 计算类型论构造,例如 System F 多态函数。
- 使用 OpenClaw 的 API 将证明或模型导出为 JSON,以便集成。
使用模式
通过 OpenClaw 的 CLI 进行交互式会话,或通过 API 执行脚本化工作流。使用 CLI 时,命令前缀为 openclaw cs-formal。使用 /api/cs-formal/verify 等 API 端点,并提供 JSON 负载。始终指定工具(例如 --tool coq)和输入文件。对于流水线,可通过管道将输出传递给其他技能,例如先验证 TLA+ 模型,再分析结果。
常用命令/API
使用 OpenClaw 的 CLI 直接执行:
openclaw cs-formal verify --tool coq --file proof.v --tactic induction:使用归纳策略对 proof.v 执行 Coq 证明。openclaw cs-formal check-hoare --pre "{x > 0}" --code "x = x + 1" --post "{x > 1}":验证 Hoare 三元组。openclaw cs-formal model --tool tla --spec "Init == ... Next == ...":生成并检查 TLA+ 模型。
调用 API 时,向 https://api.openclaw.ai/cs-formal/verify 发送 POST 请求,并提供类似以下内容的 JSON 请求体:
{"tool": "lean", "file": "theorem.lean", "options": {"tactic": "simp"}}
在请求头中通过环境变量 $OPENCLAW_API_KEY 设置身份验证,例如 Authorization: Bearer $OPENCLAW_API_KEY。配置文件应采用 YAML 格式,例如:
tool: coq
file: proof.v
tactics:
- intro
- apply
集成说明
在 VS Code 等 IDE 中集成时,可将 OpenClaw 添加为插件,并在 .openclawrc 文件中进行配置:cs-formal: { apiKey: $OPENCLAW_API_KEY, defaultTool: "tla" }。对于 CI/CD,可使用如下脚本:export OPENCLAW_API_KEY=your_key; openclaw cs-formal verify --tool lean --file path/to/file。与其他技能结合使用,例如将输出通过管道传递给“debugging”技能进行错误分析。确保已通过 apt install coq 或类似命令安装 Coq 或 TLA+ 等依赖项。
错误处理
使用 openclaw cs-formal lint --tool tla --file spec.tla 检查常见错误,例如 TLA+ 规范中的语法问题(如缺少运算符)。此命令会返回包含错误代码的 JSON(例如,“TLA001: Undefined constant”)。对于 Coq 中的证明失败,可解析输出中的“stuck”状态,并尝试调整策略,例如某个策略失败时,使用 openclaw cs-formal retry --tactic alternative。通过检查 HTTP 状态码(例如,身份验证问题对应 401)处理 API 错误;如果网络故障,则回退到本地模式。始终验证输入,例如确保 Hoare 三元组的条件是格式正确的字符串。
具体使用示例
- **验证循环的简单 Hoare 三元组:**使用
openclaw cs-formal check-hoare --pre "{n >= 0}" --code "WHILE n > 0 INVARIANT n >= 0 DO n := n - 1 END" --post "{n = 0}"确认不变量成立,然后导出结果以供进一步分析。 - **使用 TLA+ 对并发系统进行模型检查:**运行
openclaw cs-formal model --tool tla --spec "CONSTANT N \\n VARIABLE x \\n Init == x = 0 \\n Next == x' = x + 1"检测死锁,并将输出集成到测试流水线中。
图关系
- 相关领域:“algorithms”(用于算法设计中的逻辑证明)、“software-engineering”(用于代码审查中的验证)、“data-structures”(用于数据建模中的类型论应用)。
- 集群:通过“computer-science”集群连接,共享计算机科学工具。