论文
SpecPylot:使用 大语言模型 生成 Python 规范
SpecPylot: Python Specification Generation using Large Language Models
摘要
自动生成正式规范可以减少提高程序正确性所需的工作量,但在实践中,这仍然具有挑战性。许多开发人员避免手工编写合约,这限制了自动验证工具的使用。最近的大语言模型(LLM)可以从代码生成规范,但这些规范在验证方面经常失败。原因是语法错误、约束过于严格或与程序行为不匹配。我们展示了 SpecPylot,这是一个 Python 工具,它可以将 Python 程序的可执行规范合成为 icontract 注释,并使用十字线的符号执行来检查它们。该工具依靠 LLM 来提出候选合约并使用十字线来验证它们。当十字线找到具体的反例时,SpecPylot 仅更新生成的合约,而程序本身保持不变。此外,该工具还可以生成覆盖率驱动的 pytest 存根,并保留在调试过程中有用的详细执行工件。总体而言,评估表明 SpecPylot 能够为大多数程序生成十字准线兼容的合约,但它也强调了有界符号探索和 LLM 行为差异带来的实际限制。