1. 程序合成技术概述
程序合成(Program Synthesis)是一种自动生成满足给定规范的程序的技术。这项技术最早可以追溯到1950年代Church提出的电路合成问题,经过几十年的发展,已经从最初的演绎式程序合成扩展到如今的多种方法,包括反应式合成、语法引导合成等。
1.1 程序合成的核心原理
程序合成的核心在于将高级规范转换为可执行的程序实现。这个过程通常涉及:
- 规范描述:使用形式化语言(如LTL、SyGuS-IF等)精确描述程序应满足的行为
- 搜索算法:在可能的程序空间中寻找满足规范的程序
- 验证机制:确保生成的程序确实满足原始规范
传统符号工具(如ltlsynt、cvc5等)通常采用形式化方法和枚举搜索相结合的方式,保证生成的程序"构造即正确"(correct by construction)。这些工具在特定领域表现出色,但往往需要专业的规范编写知识。
1.2 大语言模型的兴起与挑战
近年来,大语言模型(LLM)在代码生成方面展现出强大能力。GPT-5等模型能够根据自然语言描述生成代码,这自然引出一个问题:LLM能否用于程序合成?
与符号工具相比,LLM具有以下特点:
- 无需精确规范:能处理模糊或部分规范
- 泛化能力强:可跨领域应用
- 开发门槛低:使用自然语言交互
然而,LLM生成的代码缺乏形式化保证,需要额外验证步骤。此外,LLM对计算资源的需求远高于传统符号工具。
2. 实验设计与方法
2.1 对比框架
本研究设计了严格的对比实验,在四个程序合成领域比较LLM与符号工具的表现:
- LTL反应式合成:生成满足线性时序逻辑规范的有限状态机
- 语法引导合成(SyGuS):在给定语法约束下合成满足规范的程序
- 分布式协议合成:完成TLA+协议草图使其满足性质
- 递归程序合成:完成ACL2s中的递归函数草图
2.2 评估指标
采用以下指标进行公平比较:
- 解决能力:在规定时间内能解决的基准测试数量
- 执行时间:生成正确解所需时间
- 资源消耗:计算资源和API调用成本
2.3 工具链配置
为确保公平性,实验采用以下配置:
| 工具类型 | 硬件配置 | 超时设置 | 迭代机制 |
|---|---|---|---|
| 符号工具 | CPU(4核/64GB) | 10分钟(递归合成15分钟) | 内置枚举 |
| Qwen-32B | CPU+GPU(H200) | 同符号工具 | ILST循环 |
| GPT-5 | OpenAI API | 同符号工具 | 单次查询 |
其中,ILST(Iterate-LLM-until-Solution-or-Timeout)是专为实验设计的迭代机制:反复调用LLM直到获得通过验证器的解或超时。
3. LTL反应式合成对比
3.1 实验设置
LTL合成要求根据线性时序逻辑规范生成有限状态机。实验采用SYNTCOMP 2025的433个可实现基准测试,比较以下工具:
- 符号工具:ltlsynt(SYNTCOMP 2025冠军)
- LLM工具链:
- QwenAIG/QwenSMV:分别生成AIGER和SMV格式
- GPT-5AIG/GPT-5SMV:同上
验证流程严格遵循SYNTCOMP标准,使用nuXmv进行模型检查。
3.2 关键结果
| 工具 | 解决数量 | 平均时间(秒) | 独特解决数 |
|---|---|---|---|
| ltlsynt | 354 | 4.6 | 143 |
| QwenAIG | 4 | 79.6 | 0 |
| QwenSMV | 50 | 164.9 | 1 |
| GPT-5AIG | 150 | 124.0 | 2 |
| GPT-5SMV | 229 | 107.0 | 3 |
结果显示:
- 符号工具ltlsynt优势明显,解决了最多基准测试(354个)
- GPT-5表现优于Qwen,特别是在SMV格式下
- 各工具解决的基准测试存在部分重叠但也有独特解
3.3 失败分析
QwenSMV在383个未解决的测试中:
- 276个生成了最终候选但未验证(134个语法错误,142个语义错误)
- 其余因超时未生成解
GPT-5SMV在361个生成解中:
- 229个正确
- 51个语法错误
- 40个语义错误
- 41个验证超时
4. 语法引导合成(SyGuS)对比
4.1 实验设置
SyGuS要求在给定语法约束下合成满足规范的程序。实验使用cvc5代码库中的148个基准测试,比较:
- 符号工具:cvc5(默认配置)
- LLM工具链:Qwen和GPT-5,生成SMT-LIB格式
验证使用Z3求解器检查语法和语义正确性。
4.2 关键结果
| 工具 | 解决数量 | 平均时间(秒) | 独特解决数 |
|---|---|---|---|
| cvc5 | 137 | 1.8 | 4 |
| Qwen | 96 | 27.8 | 6 |
| GPT-5 | 143 | 28.7 | 10 |
发现:
- GPT-5表现接近cvc5,甚至多解决10个独特基准
- Qwen落后但仍有独特贡献
- 所有方法共解决147/148个基准
4.3 成本分析
GPT-5在此领域的API调用成本极低:
- 平均输入1340 token,输出1609 token
- 总成本仅2.62美元(148次查询)
5. 分布式协议合成对比
5.1 实验设置
基于TLA+的分布式协议合成需要完成协议草图并满足性质。使用171个基准测试,比较:
- 符号工具:PolySemist(状态压缩优化)
- LLM工具链:Qwen和GPT-5,生成TLA+补全
验证使用TLC模型检查器,检查语法和语义。
5.2 关键结果
| 工具 | 解决数量 | 平均时间(秒) | 独特解决数 |
|---|---|---|---|
| PolySemist | 140 | 70.94 | 16 |
| Qwen | 102 | 35.03 | 1 |
| GPT-5 | 136 | 102.22 | 11 |
特别发现:
- 放松语法约束后,LLM表现提升:
- Qwen从102→133
- GPT-5从136→149
- Qwen存在大量重复提案(总计16824次响应中7326次重复)
6. 递归程序合成对比
6.1 实验设置
在ACL2s中完成递归函数草图,满足给定性质和输入输出示例。使用42个基准测试,比较:
- 符号工具:Cataclyst
- LLM工具链:Qwen和GPT-5
验证使用ACL2s反例生成器。
6.2 关键结果
| 工具 | 解决数量 | 平均时间(秒) | 独特解决数 |
|---|---|---|---|
| Cataclyst | 41 | 39.11 | 1 |
| Qwen | 39 | 9.03 | 0 |
| GPT-5 | 41 | 48.33 | 0 |
发现:
- 所有工具表现接近
- Qwen在三个基准上失败("pairs","split-on","suffixb")
- Cataclyst在"ternary-tree-eq"上失败
7. 综合分析与实践建议
7.1 性能对比总结
综合四个领域的实验结果:
解决能力:
- 符号工具在LTL合成中优势显著
- 其他领域GPT-5与符号工具相当
- Qwen整体落后但仍有价值
执行效率:
- 符号工具普遍更快(即使LLM使用更强硬件)
- GPT-5比Qwen更高效
独特价值:
- 各工具都有独特解决的基准
- 实际应用可采用组合策略
7.2 实践启示
基于实验结果,建议:
- LTL合成:优先使用符号工具(如ltlsynt),LLM可作为辅助
- SyGuS:GPT-5与cvc5性能相当,可根据成本选择
- 协议合成:考虑混合方法,结合两者优势
- 递归程序:LLM效率更高,适合快速原型
7.3 优化方向
针对LLM在程序合成中的局限,未来可探索:
- 验证集成:更紧密的"生成-验证"循环
- 提示工程:改进规范表达方式
- 领域适应:针对特定合成任务的微调
- 资源优化:降低LLM的算力需求
程序合成领域正面临LLM带来的变革,但符号方法仍不可替代。最佳实践可能是两者的有机结合,而非非此即彼的选择。