最重的位置。
第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】
机检还没有跑。
江临也没有急着跑。
这一步,他准备等韩砚山和丁剑看过新的依赖图,再和陶哲轩对一遍接口命名。
因为从现在开始,每一个节点编号,不再只是他自己的工作习惯。
它会成为几位审查者共同进入这份证明的坐标系。
第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】
机检还没有跑。
江临也没有急着跑。
这一步,他准备等韩砚山和丁剑看过新的依赖图,再和陶哲轩对一遍接口命名。
因为从现在开始,每一个节点编号,不再只是他自己的工作习惯。
它会成为几位审查者共同进入这份证明的坐标系。