最重的位置。

    第38号节点在自然语言证明中已经足够清楚。

    如果直接按照论文里的叙述顺序,把第三层损失回收机制逐行翻译进Lean,形式化代码会变得极重。

    因为论文语言允许数学家在同一个段落里同时追踪条件分布、互信息项、谱簇索引和覆盖递推的支付关系。

    Lean不允许这种压缩。

    它要求每一次变量替换、每一次条件化、每一次等价变形,都被明确命名。

    陶哲轩建议,不要把第38号节点写成一个巨大的单体引理。

    应该把其中的“双重对合”结构单独抽离出来,封装成一个可复用的中间结构。

    这样一来,第三层损失回收本身仍然保持原状。

    但Lean不再需要在同一个文件里反复展开四变量条件分布。

    那些已经在论文中被江临用自然语言压缩掉的对称性,可以在形式化代码里被显式暴露出来。

    江临读完issue,拿起铅笔,在草稿纸上写了三行。

    第一行,论文证明路径。

    第二行,当前Lean编码路径。

    第三行,对称条件化封装。

    写到第三行时,他停了一下。

    因为他发现,陶哲轩指出的不是一个新的数学思路。

    而是一个更干净的接口。

    第39号节点原本用于记录第38号节点之后的一段局部依赖传递。

    在论文里,这一段只是第38号节点结论的自然延伸。

    但在Lean蓝图里,因为第38号节点写得过重,它被迫拆成了一个独立节点。

    如果按照陶哲轩的建议,把双重对合结构预先封装出来,第39号节点未必还需要作为独立形式化节点存在。

    它可以被并入第38号节点的推论层。

    这不会改变论文。

    不会改变证明。

    不会改变任何一个覆盖界。

    改变的只是形式化工程的受力方式。

    江临在issue下面回复。

    【I agree. the nuscript proof is unchanged, but the Lean encoding should expose the doubled-involution wrapper first. Node 39 y bee a corollary of the Node 38 wrapper rather than a separate forlization node. I will update the dependency graph before pushing.】

    五分钟后,陶哲轩回复。

    【Good. please keep the original encoding branch for parison.】

    江临看着这句话,轻轻点头。

    没有任何一个真正做过复杂证明工程的人,会随手删掉旧路线。

    旧路线不是错的。

    它只是重。

    而在形式化数学里,重,本身就是一种风险。

    不是数学风险。

    是协作风险、维护风险、审查风险。

    一个证明如果只能被作者本人沿着原始路径写进机器里,它就还没有真正变成共同体可以接管的工程对象。

    江临没有立刻push。

    他先在本地新建了一个分支。

    forlize/node38-doubled-involution-wrapper

    不是fix。

    不是correction。

    这不是修错。

    这是封装。

    然后,他把第38号节点的自然语言证明重新拆成三层。

    第一层,四变量副本的生成规则。

    第二层,固定宏观和之后的对称条件化结构。

    第三层,条件互信息项如何接回第三层损失回收账本。

    论文里,这三层可以连成一段。

    因为真正懂的人会自己在脑海里补全中间的变量搬运。

    但Lean不会替任何人补。

    Lean要求每一步都写出来。

    也正因为如此,形式化不是在削弱证明的美感。

    它是在把证明中那些原本只能依靠专家直觉跳过去的桥墩,一根一根打进河床里。

    晚上十点。

    第38号节点的新封装草案完成。

    第39号节点被暂时标记为—【candidate corollary of Node 38 wrapper】

    机检还没有跑。

    江临也没有急着跑。

    这一步,他准备等韩砚山和丁剑看过新的依赖图,再和陶哲轩对一遍接口命名。

    因为从现在开始,每一个节点编号,不再只是他自己的工作习惯。

    它会成为几位审查者共同进入这份证明的坐标系。

章节目录