规范符合性
- 状态:active
- 读者:贡献者、审阅者
- 权威性:工程符合性指南;从属于 QED 形式规范与当前代码/测试
- 范围:代码/测试映射、实现对齐、贡献者义务与文档示例规则
- 最近审阅:2026-10-08
本文档记录当前 MoonBit 工程线怎样对齐 QED 形式规范,以及外围工程怎样才算符合现在的核心。
它不是新的规范层;它的作用是把“论文要求”“当前代码”“当前测试”“外围工程义务”放到同一张表上。
规范性来源
QED 当前的权威关系如下:
- QED 形式规范 是唯一规范性来源。
doc/attachments/qed_formal_spec.typ是规范源文件。- 当前代码与测试决定当前真实 shipped state。
- 文档治理 规定文档层级与引用规则。
- 用户手册 描述当前仓库中的实现合同。
- 本文档描述工程符合性、代码/测试映射和贡献者 checklist。
Part II conformance 相关的 Lean 锚点主要在:
formal_verification/QEDFV/Engineering/Conformance.leanformal_verification/QEDFV/Spec/Items.leanformal_verification/QEDFV/Audit/AppendixG.leanformal_verification/QEDFV/Audit/PartI.lean
已实现与未实现
已实现并经过测试
当前已经有稳定代码与回归测试支撑的部分包括:
- 带类型的项/类型核心
- 不透明的定理对象 + 经检查的原始规则
- scoped signature stack 与 definition history discipline
DefOK/TypeDefOK/SpecOK闸门- theorem admissibility around const identity、schema instance、definitional coherence 和 type-language admissibility
- 已解析的精化 (elaboration) 边界,常量标识已冻结
- 解析器 (parser) 规范化 + 原始偏移契约
- 由解析器持有的目标降级 (lowering) 边界,不直接依赖 tactics
- surface connector 的 basis-backed lowering contract
- 基于定义定理的规范联结词识别
- audit certificates 与 executable conservative replay hook
- logic 层的 definition theorem / unfold / replay helper
- 受支持的命题定理脚本路径,可重放为内核
Thm
已实现但有意保持部分支持
以下部分已经存在,但覆盖范围仍有限:
tactics的Goal/ProofState/ step execution 与ps_qed成功路径prover的 theorem-script driver- theorem-name based replay 目前只覆盖小规模稳定命题目录
- parser 当前支持 theorem-header binder、顺序
bybody 与最小结构化分支块语法: theorem 头部可带零个或多个(name : type)binder; body 可写成单行theorem ... := by step; step; ...,或块状theorem ... := by后按换行分隔的 step 列表;split/left/right仍可携带最小 branch block 语法,并保留 raw binder/goal/step span;branch body 的实际调度与 blame 归因由prover负责 - theorem-script 当前还支持
hole/hole <name>unfinished-proof step; theorem-header binder 当前已构成 shipped quantifier-facing surface,能够稳定进入 goal lowering、proof-state locals 与 cmd diagnostics;rawforall/∀theorem goal 也作为 goal-only sugar 进入 shipped lowering path,但仍不是 term-level syntax - parser-side
parse_let/parse_def_function已 formalize 为 non-script utility surface
这些层不是“任意用户证明都能产出可信 theorem”的完整前端。
未实现
当前没有实现,应明确视为缺失能力的部分包括:
- 更丰富的证明块
- 已提升的 rewrite/simplify 策略 (tactic) / 命令界面
- 字典传递 (dictionary passing)
- 类型类 (typeclass) 前端
- 实例环境 / 实例搜索
- 约束求解
- 元变量 / hole
- 局部类型推断
- 高阶合一
- 任意脚本 / 任意战术组合下的完备 theorem reconstruction
代码与测试映射
| 领域 | 当前实现 | 回归覆盖 |
|---|---|---|
| 带类型核心 + 边界转换 | src/kernel/types.mbt, src/kernel/terms.mbt | src/kernel/kernel_terms_test.mbt, src/kernel/kernel_types_test.mbt |
| 带作用域的状态 + 扩展闸门 | src/kernel/sig.mbt | src/kernel/kernel_sig_test.mbt, src/kernel/kernel_audit_test.mbt |
| 原始规则 + 可容许性 | src/kernel/thm.mbt | src/kernel/kernel_thm_test.mbt, src/kernel/kernel_thm_wbtest.mbt, src/kernel/kernel_audit_test.mbt |
| 已解析的精化边界 | src/elab/resolved.mbt | src/elab/elab_test.mbt |
| 解析器桥接 + 规范化/原始偏移契约 | src/parser/parser.mbt | src/parser/parser_test.mbt |
| 解析器到 tactics 的显式目标桥接 | src/parser/parser.mbt, src/prover/prover.mbt | src/parser/parser_test.mbt, src/prover/prover_positive_corpus_test.mbt |
| 表层联结词基的展开 | src/logic/prop_prelude.mbt, src/logic/prop_foundation.mbt, src/logic/prop_tools.mbt | src/logic/prop_prelude_test.mbt, src/logic/prop_tools_test.mbt, src/parser/parser_test.mbt |
| 命题定理重放/目录种子 | src/logic/prop_bool_theorems.mbt, src/logic/prop_refs.mbt, src/logic/prop_replay.mbt | src/logic/prop_bool_theorems_test.mbt, src/logic/prop_refs_test.mbt, src/logic/prop_replay_test.mbt |
| 可操作的证明脚本 + M1 子集重放 | src/tactics/proof_state.mbt, src/prover/prover.mbt | src/tactics/proof_state_test.mbt, src/tactics/tactics_test.mbt, src/prover/prover_test.mbt, src/prover/prover_positive_corpus_test.mbt, src/prover/prover_negative_corpus_test.mbt |
以文件为先的 cmd 集成界面 | src/cmd/cmd.mbt | src/cmd/cmd_wbtest.mbt |
面向量词的绑定子 (binder) / 原始 forall 语料 + CLI 契约 | src/prover/corpus.mbt, src/prover/prover_mapping_matrix_test.mbt, src/cmd/cmd_corpus_wbtest.mbt | src/cmd/cmd_corpus_wbtest.mbt, src/cmd/cmd_wbtest.mbt, src/prover/prover_mapping_matrix_test.mbt |
| 形式化 Part I / Part II 符合性包 | formal_verification/QEDFV/Audit/PartI.lean, formal_verification/QEDFV/Engineering/Conformance.lean | lake build |
值得特别注意的回归点:
src/kernel/kernel_audit_test.mbt已覆盖 def-head monotonicity、typedef witness validity、const-id drift、typed beta/trans guard、conservative replay 等高风险场景。src/parser/parser_test.mbt已覆盖 normalize/raw-offset contract 与非boolconnector 的 fail-closed rejection。src/parser/parser_test.mbt当前也覆盖 theorem-header binder、structured branch block 解析,以及 raw-span 回归。src/parser/parser_test.mbt与src/prover/prover_positive_corpus_test.mbt当前共同固定 parser-owned goal lowering 与上层显式 bridge 到tactics.Goal的合同。src/prover/prover_test.mbt当前固定 structured branch block 的脚本调度、branch path 归因与 step blame 口径。src/prover/prover_test.mbt当前覆盖了 M1 已支持子集的Ok((KernelState, Thm))正例,以及若干 direct-close / implication-backed theorem-name path。src/prover/prover_positive_corpus_test.mbt/src/prover/prover_negative_corpus_test.mbt当前承载 shipped subset 的 canonical script corpus,用于固定 capability 覆盖与 honest failure 口径。src/prover/prover_test.mbt、src/prover/prover_mapping_matrix_test.mbt与src/cmd/cmd_corpus_wbtest.mbt当前也覆盖了 unfinished-proof / hole reporting 的结构化合同与 canonical unfinished corpus 锚点。src/prover/prover_mapping_matrix_test.mbt与src/cmd/cmd_corpus_wbtest.mbt当前也覆盖了 nested branch unfinished path 与 stable empty-marker rendering。src/cmd/cmd_corpus_wbtest.mbt与src/cmd/cmd_wbtest.mbt当前也固定了 shipped quantifier-facing binder / raw-forallscripts 的 success / failure / unfinished CLI contract,包括 goal、locals、branch path 与 step blame。src/prover/prover_mapping_matrix_test.mbt当前把 positive / negative / unfinished 三类 canonical case id、量词 binder / raw-forallcase id、能力标签与 用户手册 的公开示例锚点绑定在同一份回归约束里。src/cmd/cmd_wbtest.mbt当前覆盖 success rendering、parse/io/usage failure、 tactic failure context rendering、branch-path rendering,以及 file-first argv workflow。
文档示例来源契约
为避免文档把规划能力写成已交付能力,当前文档示例必须遵守以下来源约束:
README.md只发布当前 shipped subset 的摘要,不单独发明新示例语义。- 用户手册 中的 runnable theorem-script examples 必须来自现有回归测试覆盖。
- theorem-producing 正例脚本当前以
src/prover/prover_test.mbt与src/prover/prover_positive_corpus_test.mbt为主锚点。 - shipped subset 的负例 / honest failure 示例当前以
src/prover/prover_negative_corpus_test.mbt为主锚点。 - canonical unfinished-proof 示例当前以
src/prover/prover_test.mbt、src/prover/prover_mapping_matrix_test.mbt与src/cmd/cmd_corpus_wbtest.mbt为主锚点;root-level unfinished 与 nested branch unfinished 两类样例都要保持同步。 - quantifier-facing binder / raw-
forall示例当前也以src/prover/corpus.mbt、src/prover/prover_mapping_matrix_test.mbt与src/cmd/cmd_corpus_wbtest.mbt为主锚点;公开文档只允许引用这些 canonical case id。 - 公开文档中的 case-id 到示例锚点映射当前以
src/prover/prover_mapping_matrix_test.mbt为主锚点。 - tactic-level 例子、local-over-name 冲突与 wrong-mode honest failure 当前以
src/tactics/proof_state_test.mbt为主锚点。 - 包页面(
api/、design/、tutorial/)中引用的定理脚本复用上述锚点处的脚本,不引入新的脚本语义。 - 包页面中的 MoonBit API 示例是完整程序,调用当前代码的公开函数,并用
assert_eq、assert_true或inspect快照记录结果。每个这样的代码块在页面变更之前都会针对当前代码编译并运行;不打算运行的代码块使用moonbit nocheck围栏标注。 - 若文档要新增、修改或删除公开示例,应同步新增、修改或删除对应回归测试。
Part II 符合性义务
Lean 中当前已经把外围工程的 Part II obligations 明确写成了工程义务。核心项包括:
ruleFidelityboundaryFidelityscopeFidelityreplayTraceFidelitygateFidelitycertificateNonAuthorityconservativeReplayFidelity
对贡献者来说,更可执行的 checklist 是下面这组规则。
贡献者清单
logic只能做 checked wrapper、definition/unfold helper、replay helper 和非权威 theorem reference 组织;不能绕过 kernel invent 新规则。parser必须保持local > const、normalize + raw-offset contract,并与logic共用同一套 connector contract。elab必须冻结 resolved identity;后续 typing 遇到 const-id 或 schema drift 时必须 fail-closed。tactics只能在通过logic回放构造出与相继式一致的Thm时,由ps_qed交出定理;否则必须 fail-closed。ps_qed的最终验收当前必须按 strict normalized sequent equality 执行;不得保留仅按 shape-aware compatibility 放行的旧边界。prover仅在回放成功时返回Ok与Thm;否则继续返回诚实错误。cmd只能是新的非权威集成层,不得成为第二证明内核。- extension certificate 只能是 audit artifact;不能被当成 theorem acceptance 的替代物。
这组 checklist 的目标,是把可执行前端逐步压成论文里所说的 faithful realization,而不是在外围工程里新增第二套逻辑系统。
外围对齐
当前工作区的工程主线是一次有意识的收口:
- parser 已从“依赖 state 中存在同名 prelude 常量”转为“basis-backed builder + resolve/lowering contract”。
- logic 已从“注册表面符号名”推进到“定义常量 + definition theorem + unfold/replay helper + 小型 theorem catalog + shared theorem inventory”。
- tactics/prover 已从纯 operational prototype 前进到“支持子集可 replay 到 kernel
Thm,并由 canonical corpus 固定支持矩阵与 honest failure”。
若外围工程要继续符合现在的核心,应继续保持:
- 在共享 theorem inventory 与 canonical corpus 之上继续扩展 replay builders;
- 继续把新 shipped capability 写回 canonical corpus / mapping matrix / manual anchors,避免文档口径落后于实现;
- 把 goal / hole / unfinished-proof diagnostics 做成正式前端合同,但继续明确它们不是 proof object;
- 对 theorem-header binder 这条已 shipped 的 quantifier-facing 路径,以及 raw
foralltheorem-goal sugar,继续保持 parser/lowering/replay 的边界显式化; - 让
cmd继续复用prover的 structured failure contract,而不是自行解释错误字符串; - 在当前 file-first workflow 之上继续扩大前端表达力。
这些任务应当复用现有工具:
logic_prop_def_*logic_prop_unfold_*logic_apply_fun_eq*logic_beta_normalize_eqlogic_eq_mp_boollogic_eq_symlogic_prop_replay_*
不应该另起一套仅在 tactic/prover 中成立、但无法 replay 到 kernel path 的临时证明语义。
其余未发布的界面
当前仍然没有 shipped 的能力包括:
- theorem catalog 仍然偏小,尚不足以支撑更自然的大量脚本;但当前 shipped subset 的 inventory、mode 边界与 corpus 已经固定;
- canonical corpus 还需要补齐 hardening regression,才能完成
H5集成门; - theorem-script body 已支持最小
M4b结构化分支块;但 richer proof block 仍未实现; - holes / unfinished proof 当前已进入 shipped theorem-script surface;但 hole completion / metavariable authority 仍未实现;
- theorem-header binder 这条 quantifier-facing surface 已 shipped;raw
forall/∀theorem-goal frontend 也已作为 goal-only sugar 支持; - parser-side utility surface 已收口为 non-script API;后续只需保持文档 / 测试同步;
- Lean 线当前是 paper/conformance pack,而不是 MoonBit 源码的直接机械化证明。
因此更准确的状态判断是:
- Part I 核心与 Part II 的主要符合性口径已经落地;
- 支持子集上的 theorem-producing frontend 已经存在;
- 但更完整的 faithful realization 仍在继续收口。
验证闸门
当前推荐的 paper-alignment / engineering-conformance 门禁是:
moon build
moon test
cd formal_verification
lake build
准备合并或封板时,还应执行:
moon info
moon fmt
moon test
cd formal_verification
lake build
本地检查结果:
- 2026-10-08,MoonBit
mooncv0.10.14:moon check --target all无警告,moon test在wasm、wasm-gc、js和native目标上全部通过(357 个测试) - 2026-04-05:
lake build通过;此后formal_verification/未发生变化
当涉及 trust boundary、scope、gate、connector contract、proof scripting 或文档口径时,应同时检查: