2025-11-24T00:55:25.034139

PolyVer: A Compositional Approach for Polyglot System Modeling and Verification

Chen, Lin, Godbole et al.
Several software systems are polyglot; that is, they comprise programs implemented in a combination of programming languages. Verifiers that directly run on mainstream programming languages are currently customized for single languages. Thus, to verify polyglot systems, one usually translates them into a common verification language or formalism on which the verifier runs. In this paper, we present an alternative approach, PolyVer, which employs abstraction, compositional reasoning, and synthesis to directly perform polyglot verification. PolyVer constructs a formal model of the original polyglot system as a transition system where the update functions associated with transitions are implemented in target languages such as C or Rust. To perform verification, PolyVer then connects a model checker for transition systems with language-specific verifiers (e.g., for C or Rust) using pre/post-condition contracts for the update functions. These contracts are automatically generated by synthesis oracles based on syntax-guided synthesis or large language models (LLMs), and checked by the language-specific verifiers. The contracts form abstractions of the update functions using which the model checker verifies the overall system-level property on the polyglot system model. PolyVer iterates between counterexample-guided abstraction-refinement (CEGAR) and counterexample-guided inductive synthesis (CEGIS) until the property is verified or a true system-level counterexample is found. We demonstrate the utility of PolyVer for verifying programs in the Lingua Franca polyglot language using the UCLID5 model checker connected with the CBMC and Kani verifiers for C and Rust respectively.
academic

PolyVer: A Compositional Approach for Polyglot System Modeling and Verification

基本信息

  • 论文ID: 2503.03207
  • 标题: PolyVer: A Compositional Approach for Polyglot System Modeling and Verification
  • 作者: Pei-Wei Chen, Shaokai Lin, Adwait Godbole, Ramneet Singh, Elizabeth Polgreen, Edward A. Lee, Sanjit A. Seshia
  • 分类: cs.PL (Programming Languages)
  • 发表时间/会议: Formal Methods in Computer-Aided Design 2025
  • 论文链接: https://arxiv.org/abs/2503.03207

摘要

多语言软件系统(polyglot systems)由多种编程语言实现的程序组合而成,但现有的程序验证器通常只针对单一语言定制。为验证多语言系统,通常需要将其翻译为通用验证语言或形式化表示。本文提出了PolyVer,一种采用抽象、组合推理和综合技术直接执行多语言验证的替代方法。PolyVer将多语言系统构建为转换系统的形式化模型,其中转换相关的更新函数用目标语言(如C或Rust)实现。为执行验证,PolyVer通过更新函数的前置/后置条件契约,连接转换系统的模型检查器与特定语言验证器。这些契约通过基于语法引导综合或大语言模型的综合预言自动生成,并由特定语言验证器检查。

研究背景与动机

问题定义

现代软件系统越来越多地采用多语言架构,如ROS2、Lingua Franca等框架允许开发者为不同组件选择最适合的编程语言。然而,这种灵活性带来了验证挑战:

  1. 语言语义差异:不同编程语言具有不同的语法和语义,如Rust的saturating_add函数在溢出时饱和到最大值,而C的加法可能发生环绕。
  2. 现有验证器局限:大多数程序验证器(如CBMC for C、Kani for Rust)专门针对单一语言设计,无法直接处理多语言系统。
  3. 翻译复杂性:将整个多语言系统翻译为单一验证语言需要支持所有语言的完整语法和语义,这对现代语言来说是禁止性的。

研究重要性

多语言系统的复杂性增加了软件缺陷的风险,而在安全关键领域(如自动驾驶、航空航天),需要形式化验证提供的强保证,而非仅仅依赖测试等不完整方法。

现有方法局限性

  • 单体翻译方法:需要为每种语言开发完整的编译器基础设施
  • 语义保持困难:难以在目标验证语言中忠实捕获源语言的所有语言特定构造
  • 可扩展性问题:生成的验证问题可能变得过于庞大

核心贡献

  1. 多语言验证问题形式化:首次系统性地形式化了多语言验证问题,并提出集成多个特定语言验证器的组合解决方案。
  2. 自动化契约综合:提出了使用中间语言和CEGIS-CEGAR循环的前置/后置条件契约自动综合和细化方法,支持语法引导综合和大语言模型作为综合预言。
  3. 工具实现:基于UCLID5实现了PolyVer工具,支持C和Rust,通过CBMC和Kani验证器,证明了LLM-based综合预言优于纯符号综合方法。
  4. 案例研究与评估:开发了Lingua Franca协调语言的验证器,验证了包含C和Rust过程的多语言系统,以及之前工作无法支持的C语言片段。

方法详解

任务定义

输入:多语言模型M = (Q,V,I₀,T,F)和系统属性φ 输出:验证结果(通过/失败)和可能的反例轨迹 目标:确定M ⊨ φ是否成立

其中:

  • Q:模式集合
  • V:类型化变量集合
  • I₀:初始状态集合
  • T:模式转换集合
  • F:过程集合

模型架构

1. 扩展状态机(ESM)

PolyVer将多语言系统建模为扩展状态机,其中:

  • 状态由模式和变量赋值组成
  • 转换关联守卫条件和更新关系
  • 更新关系特化为过程调用序列

2. 中间契约语言L*

关键创新是引入中间语言L*作为不同语言间的"胶水":

  • 契约用L*编写
  • 通过语义保持编译compL转换为具体语言
  • 避免了完整语言翻译的复杂性

3. CEGIS-CEGAR混合方法

算法核心是两层迭代循环:

外层CEGAR循环

  1. 使用当前契约构建抽象模型M'
  2. 模型检查器验证M' ⊨ φ
  3. 如果失败,检查反例是否虚假
  4. 如果虚假,细化契约;否则报告真反例

内层CEGIS循环

  1. 综合预言生成候选契约
  2. 验证预言检查契约有效性
  3. 如果无效,添加正例并重新综合

技术创新点

1. 组合验证策略

不同于单体翻译,PolyVer采用"分而治之"的策略:

  • 使用契约抽象个体过程
  • 特定语言验证器验证契约有效性
  • 模型检查器验证系统级属性

2. 自动化契约生成

支持多种综合预言:

  • LLM-based综合器:使用思维链提示和Python DSL
  • SyGuS/SyMO综合器:将问题编码为示例编程问题

3. 虚假性检查

通过验证{V = d} C {V' ≠ d'}来检查反例轨迹的可达性,区分真实反例和虚假反例。

实验设置

数据集

  1. LFVerifier基准测试:22个Lingua Franca程序,包含受限C语法
  2. 完整LF示例:LED控制器、爬坡机器人、卫星姿态控制器等嵌入式系统
  3. 多语言系统:C/Rust混合的LF程序、ROS2应用、FFI调用程序

评价指标

  • 综合迭代次数(IS:CEGIS迭代,AR:CEGAR迭代)
  • 运行时间(SOT:综合预言时间,VOT:验证预言时间,UT:UCLID5时间)
  • 验证成功率

对比方法

与LFVerifier15进行对比,这是唯一已知的端到端自动化LF程序验证工具。

实现细节

  • 使用OpenAI o1-mini作为LLM综合器,每个过程3个并行查询
  • CBMC-6.3.1、Kani-0.56.0、z3-4.8.7作为验证后端
  • 3.7GHz Intel Core i9机器,62GB RAM

实验结果

主要结果

RQ1:与已有LF验证工作对比

在22个基准测试中:

  • PolyVer成功验证所有基准,LFVerifier无法验证TrafficLight示例
  • 18个基准在单次CEGIS循环中正确综合契约,平均37秒
  • 虽然总运行时间较慢(主要由契约综合时间主导),但提供了显著的定性改进

RQ2:处理完整LF示例

成功验证了包含完整C代码的嵌入式系统:

  • LED控制器:1个过程,123行C代码,31.0秒综合时间
  • 爬坡机器人:12个过程,75行C/Rust代码,685.4秒综合时间
  • 卫星控制器:6个过程,424行C代码,729.0秒综合时间

RQ3:多语言系统验证

验证了真正的多语言系统:

  • C/Rust混合LF程序
  • ROS2服务应用
  • FFI跨语言调用程序

重要发现

  1. LLM优于符号方法:SyGuS/SyMO求解器需要大量CEGAR迭代且经常无法终止
  2. 契约综合的挑战:复杂控制流和数据依赖的过程需要更多迭代
  3. 实用性验证:能够处理实际实现代码而非玩具示例

相关工作

多语言系统验证

  • 手动翻译方法:Cook等人将汇编代码翻译为C来验证Xen虚拟机监控程序
  • 片段自动翻译:LFVerifier自动翻译C片段到验证语言
  • 黑盒方法:从输入输出行为推断摘要

组合验证

  • 基于Hoare逻辑的组合验证广泛应用于大规模单语言程序
  • 使用抽象解释和CEGAR自动化前置/后置条件学习

契约推断

  • 属性引导的契约推断方法
  • 约束Horn子句求解器
  • 最近LLM在规范学习中的应用

结论与讨论

主要结论

  1. PolyVer成功解决了多语言系统验证的关键挑战
  2. 组合方法避免了完整语言翻译的复杂性
  3. 自动化契约综合使方法实用化
  4. LLM-based综合器表现优于传统符号方法

局限性

  1. 终止性:算法不保证终止,依赖于综合预言的质量
  2. 语言支持:当前仅支持C和Rust,需要为其他语言开发验证预言
  3. 契约表达性:中间语言L*的表达能力限制了可验证属性的复杂性
  4. 可扩展性:大型系统的契约综合时间可能成为瓶颈

未来方向

  1. 扩展到其他多语言分布式软件系统和机器人软件系统
  2. 应用于代码翻译的形式化验证(如C到Rust的翻译)
  3. 改进契约综合的效率和准确性
  4. 支持更复杂的时态逻辑属性

深度评价

优点

  1. 问题重要性:多语言系统验证是一个实际且重要的问题
  2. 方法创新性:组合验证+自动契约综合的结合是新颖的
  3. 理论基础:形式化定义清晰,正确性保证明确
  4. 实用价值:能处理真实系统而非玩具示例
  5. 工具实现:提供了可用的工具实现

不足

  1. 性能开销:契约综合时间较长,可能限制实际应用
  2. 语言覆盖:目前仅支持C和Rust,扩展性有待验证
  3. 基准有限:虽然包含真实示例,但规模相对较小
  4. LLM依赖:依赖商业LLM服务,可能影响可复现性

影响力

  1. 学术贡献:为多语言系统验证开辟了新的研究方向
  2. 实用价值:为安全关键多语言系统提供了验证工具
  3. 技术启发:契约作为语言间接口的思想具有普遍价值

适用场景

  1. 嵌入式系统:混合C/Rust的实时系统
  2. 分布式系统:ROS2、gRPC等多语言框架
  3. 安全关键应用:需要形式化验证保证的系统
  4. 遗留系统集成:新旧代码混合的系统

参考文献

论文引用了50篇相关文献,涵盖了多语言系统、形式化验证、契约推断、语法引导综合等多个领域的重要工作,为研究提供了坚实的理论基础。


总体评价:这是一篇高质量的系统研究论文,解决了一个重要且实际的问题。方法具有创新性,实验充分,工具实现完整。虽然在性能和可扩展性方面还有改进空间,但为多语言系统验证领域做出了重要贡献。