← 最新论文
💻 computer science

A Minimal Executable Proof for Multi-Language Contract Traceability

本文提出一种最小化、可证伪的可执行证明,展示如何通过六种不同语言的"Hello, world!"程序来验证多语言契约、实现图、可追溯链和审查关卡,其中五个程序成功通过,一个因缺少工具而跳过。

原作者: Werner Kasselman

发布于 2026-05-28
📖 1 分钟阅读☕ 轻松阅读

原作者: Werner Kasselman

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象你是一位在非常严格的法庭中任职的法官。你为某个游戏设定了一条单一且微小的规则:“严格按照原文说出‘Hello, world!',不得有任何多余杂音,并立即停止。”

本文并非关于如何构建整个软件法律体系的宏大理论。相反,它是一个刻意微小、自成一体的证明,表明我们可以构建一个“法庭”,在其中能够核查不同人员(使用不同语言编写)是否遵循了那条简单的规则。

以下是本文的分解说明,辅以日常类比:

1. “契约”(规则手册)

作者创建了一份名为契约的数字规则手册。

  • 规则:计算机程序必须打印确切的字母 Hello, world!,后跟一个“换行符”(如同按下回车键)。它不能向“错误”通道输出任何内容(不得喧哗),且必须以"0"结束(满分)。
  • 类比:这就像一场烘焙比赛,唯一的规则是:“蛋糕的宽度必须恰好为 10 英寸。”如果宽度是 10.1 英寸,或者蛋糕烤焦了,你就输了。

2. “证人”(测试者)

为了证明规则得到了遵循,本文使用了证人。这些是用于检查工作成果的自动化脚本(小机器人)。

  • 主要证人:它运行了六种不同语言(Rust、Go、C、Java、TypeScript 和 AWK)编写的六个不同版本的程序。
  • 结果:其中五个完美通过。其中一个(Java)被标记为"跳过",因为法官桌上没有检查它所需的工具(Java 编译器)。这并非失败;只是测试无法进行。
  • 类比:想象一位品酒师尝试六种不同的蛋糕。其中五个味道完全正确。第六个装在一个无法打开的盒子里,因此品酒师将其标记为“未测试”,而非“不合格”。

3. "DAG"(家谱)

本文使用了一种称为DAG(有向无环图)的结构。

  • 概念:想象一棵家谱树。你有“祖父母”(源代码文件),它们都汇聚到一个“父节点”(验证步骤)。
  • 要点:这张地图确切地展示了哪个代码文件导致了哪个测试结果。它证明了测试并非凭空发生,而是特定代码的直接、可追溯的结果。

4. “重写”(魔术戏法)

本文还测试了系统是否能识破有人试图“隐藏”规则的行为。

  • Go 的戏法:一位程序员以一种非常复杂、曲折的方式编写了"Hello, world!"消息(如同编写秘密代码)。本文声称,即使“肉”(字面文本)被隐藏,系统仍能看清代码的“骨架”(函数名称)。
  • AWK 的戏法:另一种语言(AWK)并不在系统通常理解的官方语言列表中。因此,作者专门为它创建了一份特殊的“备选”检查清单。
  • 类比:这就像一位侦探,能看出嫌疑人戴着伪装(曲折的代码),但仍能辨认出其身高和鞋码(代码结构)。对于侦探不熟悉的语言,他们只需使用一份更简单的检查清单。

5. 本文不是什么(“非主张”)

这是最重要的一部分。作者非常谨慎地说明了他们没有做什么:

  • 它不是基准测试:他们并未声称自己的系统是最快或最好的。
  • 它不是现实世界的保证:他们并未声称该系统能抓获每一位黑客,或修复大型银行中的每一个漏洞。
  • 它不涉及“含义”:他们并未证明两个复杂程序的含义相同。他们仅证明对于这微小的示例,规则得到了遵循。

核心结论

请将本文视为一块完美砖块的蓝图

作者并非试图建造摩天大楼。他们是在说:“看,我们建造了一块微小的砖块。我们拥有其制作过程的地图、所用工具的清单,以及一份确认其符合尺寸要求的证人证明。如果你拥有相同的工具,你就能建造出完全相同的砖块,并看到相同的结果。”

其目标是展示透明度是可能的:你可以将一个主张(我们遵循了规则)一直追溯回证明该主张的特定代码和特定测试。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →