Event-B Agent: Towards LLM Agent for Formal Model Synthesis and Repair
本文介绍了 Event-B Agent,这是一个新颖的框架,它利用大语言模型,通过交织的细化与验证过程,迭代地合成和修复 Event-B 形式化模型,从而显著提升了从自然语言需求端到端生成“按构造即正确”软件的能力。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在尝试建造一座摩天大楼,但你没有使用蓝图和施工队,而是请一位非常聪明、博学但偶尔会感到困惑的建筑师(人工智能)仅凭一段简单的口头描述来设计整栋建筑。
问题在于,这位 AI 建筑师擅长撰写文字,却不擅长数学和逻辑。如果你让它设计一座桥梁,它可能会写出优美的描述,但支撑结构背后的数学计算可能是错误的。在现实世界中,如果用错误的数学计算建造桥梁,桥梁就会坍塌。在软件领域,如果数学计算错误,系统就会崩溃或表现出不可预测的行为。
这就是形式化方法所面临的挑战:一种在运行软件之前,利用严格的数学规则来证明其有效性的构建方法。但由于其难度极高且需要深厚的数学专业知识,极少有人使用它。
现在,"Event-B Agent"登场了。
这篇论文介绍了一个名为Event-B Agent的新系统。不要仅仅把它看作一个撰写者,而要将其视为一个协作施工团队,其中包括 AI 建筑师、严格的建筑检查员和维修小组,它们在一个循环中协同工作。
以下是其工作原理的简单分解步骤:
1. “分步”策略(细化)
如果你要求 AI 一次性建造整座摩天大楼,它会感到不知所措并犯错。
- 类比:想象建造一座房子。你不会试图在一个巨大的段落中同时设计屋顶、管道、电路和地基。你是分层进行的。首先,你画出形状的粗略草图。然后,你添加墙壁。接着,你添加窗户。
- Agent 的做法:它将庞大而令人畏惧的需求(“构建一个寻找最小数的系统”)分解为小块、可管理的部分。它首先构建一个简单的“抽象”版本,证明该版本有效,然后再为其添加更多细节。这被称为细化。这就像剥洋葱;你一次处理一层,确保每一层都稳固后再进入下一层。
2. “严格检查员”(形式化验证)
一旦 AI 绘制了建筑的一层,它不会仅仅假设它是好的。
- 类比:想象一位超级严格的建筑检查员,他们不仅查看蓝图,还会运行模拟。他们会检查:“如果下雨,屋顶会漏水吗?”“如果电梯下行,缆绳会断裂吗?”
- Agent 的做法:它使用两种类型的检查员:
- 模型检测器:针对特定场景检查设计(就像在风洞中测试汽车)。它能快速发现错误,但仅限于有限的范围内。
- 定理证明器:这是终极逻辑学家。它试图从数学上证明该设计对所有可能的场景都是完美的,且永远如此。
如果任一检查员发现问题,该建筑就不会获得批准。
3. “维修小组”(模型与证明修复)
这是神奇的部分。在过去,如果检查员发现错误,AI 就会卡住或放弃。
- 类比:想象检查员说:“你的门框太弱了。”普通的 AI 可能会说:“哦,好的,”然后停止。但 Event-B Agent 拥有一个维修小组。该小组查看检查员的报告,弄清楚为什么门是弱的,并提出具体的修复方案:“让我们在这里加一根钢梁,”或者“让我们把木头换成金属。”
- Agent 的做法:当数学验证失败时,Agent 不会只是猜测。它会查看具体的错误信息(即“证明义务”)。它拥有一个“修复规则”库(就像机械师手册)。它可能会说:“数学表明这个变量可能为零,这会导致除零错误。让我们添加一条规则,说明‘该变量必须大于零’。”
然后,它会同时更新设计和证明。它会不断重复这个循环——设计、检查、修复、检查、修复——直到检查员竖起大拇指表示通过。
为什么这很重要?
论文在 27 个不同的复杂系统(如搜索数据或管理交通信号灯的算法)上测试了该系统。他们将 Event-B Agent 与其他仅尝试编写代码或一次性检查代码的 AI 工具进行了比较。
- 结果:Event-B Agent 在构建实际上正确的系统方面表现优异得多。它成功证明了其设计在约**98%**的情况下是有效的,而其他方法在处理复杂数学时往往力不从心,并经常留下错误。
- 效率:它并没有花费漫长时间。它可以在大约一个半小时内部署并修复一个复杂系统,这与可能需要数天或数周才能完成相同数学计算的人类专家相比,速度惊人地快。
核心结论
Event-B Agent是一个教导 AI 如何构建“通过构建即正确”的软件的工具。它通过以下方式实现:
- 将大问题分解为简单的小步骤。
- 利用严格的数学检查员找出每一个错误。
- 拥有一个智能维修小组,将设计和数学证明一起修复,直到一切完美。
这就像给机器人一张蓝图、一个计算器和一把锤子,并告诉它:“在你无法从数学上证明这栋建筑永远不会倒塌之前,不要停止。”论文表明,这种方法比仅仅要求机器人“写一些代码”要有效得多。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。