九月一日,晚上八点零六分。

    江临结束军训,洗完澡回到402室时,研究支持单元转来的材料已经躺在固定窗口队列里。

    邮件标题经过了重新编号。

    【A-1/bb5/第一轮复现材料/仅供本地审查】

    附件没有直接进入电脑。

    附件中包含外部代码。

    即使代码公开,也可能访问不该访问的文件,或者在异常输入下长期占用处理器和内存,因此必须放进断网、限权的隔离环境中复现。

    江临先核对来源、文件清单、公开decider仓库的提交记录,以及内部证书草案的版本清单。

    确认哈希校验无误后,他才把压缩包下载到一块专门负责外部代码审查的物理介质里。

    联网电脑的网线随即被拔除,无线模块物理断电,介质接入旁边的隔离工作站。

    工作站的屏幕亮起,展露出核心材料的真容。

    三份来自公开仓库的decider代码。

    三套包含数千个边界情况的测试集。

    三份由清华团队根据现有decider输出格式整理出来的未公开证书草案。

    以及二十七个已经被原始工具验证通过,却在统一草案中暴露出字段冲突、错误拒绝或兼容性问题的边缘样例。

    目录和昨晚建立的三个空项目一一对应。

    【cyclers_Reproduction】

    【translated_cyclers_Reproduction】

    【backward_Reasoning_Reproduction】

    江临没有运行作者提供的一键脚本。

    在不可信的环境中运行自动化脚本,无异于把系统底层的控制权交出去。

    他新建虚拟机快照,固定了编译器版本、底层运行库和所有第三方依赖,将三个项目的网络权限从内核层面全部切断,又为原始代码目录设置了只读挂载。

    每一次编译产生的中间文件、标准输出和异常退出记录,都被定向写入一个单独的复现日志系统。

    第一轮复现很快失败。

    程序能够正常完成编译,首个证书的哈希却无法与原记录对齐。

    cycler项目引用了一个用于证书持久化的序列化库。原作者环境中保留着旧版本,本地构建脚本却没有写明依赖上限。新版接口改变了字段的默认编码顺序,同一个证书对象写入磁盘后,字节表示与原环境不再一致。

    江临没有修改源码,也没有强行兼容新版编码,而是根据提交日期回退依赖版本,并在复现日志中记录环境差异。

    八点四十三分,第一组样例完成复现。

    屏幕上出现第一组机器编号和运行记录。

    【chine_Id: cY-Rp-017】

    【State_count: 5】

    【Syol_count: 2】

    【t1: 186】

    【t2: 254】

    【configuration_hash_tch: tRUE】

    江临没有因为最后一行绿色的tRUE就轻易接受结果。

    他从空白纸带重新执行转移函数,在第186步和第254步分别导出完整有限支撑、读写头位置和内部状态,再逐项比较。

    两次配置完全相同。

    从第186步开始,机器落入了一个无可逃脱的陷阱。

    之后六十八步形成了一个封闭的拓扑环。

    图灵机再次回到与起点毫无二致的配置,它未来的全部演化,只能像推石头的西西弗斯一样,机械地重复这段轨迹,直到时间尽头。

    cycler证书所需的见证对象很清楚。

    一张确定的包含所有分支的机器转移表。

    两个明确的整数时间点。

    两份通过计算得到的,必须完全一致的机器配置。

    以及从第一份配置执行到第二份配置的,可由独立程序复核的确定性运行段。

    江临把作者提供的四百二十七个普通cycler样例,送进自己的模拟器里全部重新跑了一遍。

    四百二十七次测试,全数通过。

    随后,他开始进行破坏性测试。

    他写了一个简易的变异脚本,随机篡改证书中的时间点、把读写头位置偏移一格、扩大纸带验证边界,甚至仅仅是翻转了某个非活跃区间的单个符号,从而生成了一大批人为制造的伪造证书。

    核验器如同无情的闸刀,将这些伪造品逐一拒绝,没有出现一次漏判。

    十点五十一分,第一份复现记录撰写完成。

    【cyclers_Reproduction / pASS】

    【证书语义:精确配置重复】

    【可信前提:核验器独立执行t1至t2之间的全部转移】

    【异常测试:未发现错误接受漏洞】

    江临保存虚拟机快照,物理切断隔离工作站的电源。

    当天的固定技术窗口就此结束。

    第二天清晨,他照常去操场。

    军姿、队列、正步、休息、补水。

    九月的阳光带着残存的暑气,在塑胶跑道上蒸腾。

    白天的训练没有因为昨晚硬盘里那些复杂的拓扑结构发生任何变化。

    关于图灵机的多维状态空间、停机与非停机的边界,全都被他严丝合缝地压在意识的后台,直到晚间窗口重新打开。

    九月二日,晚上八点零九分。

    江临开始复现translated cycler(平移循环)。

    前一晚在审阅立项摘要时,为了让技术联络员快速理解,江临用了一个通俗的比喻,把translated cycler概括成了一枚不断向远处滚动的印章。

    印章每翻滚一圈,就在纸带上留下一个相同的图案,只是位置更靠右了。

    既然它永远在向右开拓新的未访问区域,自然永远不会停机。

    但现在真正进入代码级别的复现,他需要检查的,恰恰是那段科普里最容易被一笔带过的附加条件。

    印章确实可以不断向右滚动。

    但它过去留下的那些旧痕迹,那些被遗忘在左侧遥远坐标上的零星符号,真的永远不会像幽灵一样,在某次未知的回溯中重新挡住它前进的去路吗?

    作者提供的专用decider非常谨慎。

    它不会在纸带上随便挑选两个看起来相似的局部图案就草率判定。

    只在读写头抵达此前从没到过的新位置时留下记录,等机器再次向同一方向开出新格子,再把两次记录中的读写头位置对齐。

    两次记录之间,读写头向后退得最远有多少格,需要比较的窗口就至少覆盖多少格。

    只有机器状态相同、窗口内的图案能够平移重合,而且窗口外的旧痕迹不会重新挡住去路,才能把它列为translated cycler候选。

    前二十七个基础样例全部顺利通过。

    但江临没有继续编写脚本扩大测试数量。

    二十七个绿色的通过记录,只能证明本地复现环境与原作者的开发环境在依赖和编译器行为上达成了一致,却无法证明清华团队试图草拟的那套通用证书规则在数学逻辑上是可靠的。

    他把目光投向了那些棘手的边缘数据。

    不过他没有先处理那些被统一草案拒绝的样例,而是从已经被专用核验器和统一核验器同时接受的样例里,抽出了一台处在纸带边界附近的机器。

    这台编号为 tc-EdGE-09 的机器,在第912步和第1074步,出现了两段形状完全相同的局部纸带图案。

    内部状态一致,读写头的相对偏移量一致,第二段图案整体向右平移了十一格。

    translated cycler原始判定程序将它判定为非停机。

    清华团队为这类证书编写的专用核验器接受了它。

    试图统合所有规则的统一核验器也返回了通过。

    一切看起来都很顺利。

    江临敲击键盘,调用可视化工具,把两次机器配置从局部窗口,直接展开到了整条纸带的全局视野。

    第912步,在被标记为有效的窗口左侧,距离三十七格的地方,安静地躺着一个孤立的数字1。

    那是机器在极早期的运行阶段,向左侧无序游荡时留下的废弃物。

    在此后的七百多步里,读写头一路向右狂奔,再也没有回头访问过这个坐标。

    到了第1074步,那个孤立的1依然停留在原先的绝对坐标上。主体图案向右平移了十一格,窗口内部的0和1完全一致,整条纸带却没有发生严格的整体平移。

    这台机器仍然可以被正确判定为translated cycler。

    原始专用decider并不需要预测机器的无限未来。它只在读写头抵达此前从未访问过的最右位置时留下记录,然后等待机器再次向右开出新格子。

    两次记录之间,读写头向左退得最远有多少格,专用decider就把比较窗口至少向左扩展多少格。随后,它将两次记录中的读写头位置对齐,检查机器状态是否相同、窗口内的图案能否在平移后完全重合。

    如果这些条件全部成立,确定性的转移规则就会让下一段运行按照同样的方式整体向右平移。不断重复这一结论,便能证明机器只会继续开辟新的格子,不会重新退回窗口之外的孤立符号。

    专用

本章未完,请点击下一页继续阅读>>

章节目录