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: 多言語システムモデリングと検証のための合成的アプローチ

基本情報

  • 論文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(プログラミング言語)
  • 発表時期/会議: 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. 既存検証器の制限:ほとんどのプログラム検証器(CのためのCBMC、RustのためのKaniなど)は単一言語専用に設計されており、多言語システムを直接処理できません。
  3. 翻訳の複雑性:多言語システム全体を単一の検証言語に翻訳するには、すべての言語の完全な構文とセマンティクスをサポートする必要があり、現代の言語ではこれは実現不可能です。

研究の重要性

多言語システムの複雑性により、ソフトウェア欠陥のリスクが増加します。自動運転や航空宇宙などの安全関連分野では、テストなどの不完全な方法ではなく、形式的検証が提供する強力な保証が必要です。

既存方法の制限

  • 単体翻訳方法:各言語に対して完全なコンパイラインフラストラクチャを開発する必要があります
  • セマンティクス保持の困難:ターゲット検証言語でソース言語のすべての言語固有の構成を忠実に捉えることは困難です
  • スケーラビリティの問題:生成される検証問題が過度に大きくなる可能性があります

コア貢献

  1. 多言語検証問題の形式化:多言語検証問題を初めて体系的に形式化し、複数の言語固有検証器を統合する合成的ソリューションを提案しました。
  2. 自動化契約合成:中間言語とCEGIS-CEGAR循環を使用した前置条件/後置条件契約の自動合成と細分化方法を提案し、構文ガイド合成と大規模言語モデルを合成予言として支持しています。
  3. ツール実装:UCLID5に基づいてPolyVerツールを実装し、CとRustをサポートし、CBMCとKani検証器を通じて、LLMベースの合成予言が純粋な記号合成方法より優れていることを実証しました。
  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混合方法

アルゴリズムのコアは2層の反復ループです:

外層CEGAR循環

  1. 現在の契約を使用して抽象モデルM'を構築します
  2. モデルチェッカーがM' ⊨ φを検証します
  3. 失敗した場合、反例が虚偽かどうかをチェックします
  4. 虚偽の場合、契約を細分化します。そうでない場合、真の反例を報告します

内層CEGIS循環

  1. 合成予言が候補契約を生成します
  2. 検証予言が契約の有効性をチェックします
  3. 無効な場合、正例を追加して再合成します

技術的革新点

1. 合成的検証戦略

単体翻訳とは異なり、PolyVerは「分割統治」戦略を採用しています:

  • 契約を使用して個別プロセスを抽象化します
  • 言語固有の検証器が契約の有効性を検証します
  • モデルチェッカーがシステムレベルの属性を検証します

2. 自動化契約生成

複数の合成予言をサポートします:

  • LLMベースの合成器:思考の連鎖プロンプトとPython DSLを使用します
  • SyGuS/SyMO合成器:問題をサンプルプログラミング問題としてエンコードします

3. 虚偽性チェック

{V = d} C {V' ≠ d'}の検証を通じて反例軌跡の到達可能性をチェックし、真の反例と虚偽の反例を区別します。

実験設定

データセット

  1. LFVerifierベンチマーク:制限されたC構文を含む22個のLingua Francaプログラム
  2. 完全なLF例:LED制御器、登坂ロボット、衛星姿勢制御器などの組み込みシステム
  3. 多言語システム:C/RustハイブリッドのLFプログラム、ROS2アプリケーション、FFI呼び出しプログラム

評価指標

  • 合成反復回数(IS:CEGIS反復、AR:CEGAR反復)
  • 実行時間(SOT:合成予言時間、VOT:検証予言時間、UT:UCLID5時間)
  • 検証成功率

比較方法

唯一既知のエンドツーエンド自動化LFプログラム検証ツールであるLFVerifier15と比較します。

実装詳細

  • 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ハイブリッドのlangua Francaプログラム
  • ROS2サービスアプリケーション
  • FFIクロス言語呼び出しプログラム

重要な発見

  1. LLMが記号方法を上回る:SyGuS/SyMO求解器は多くのCEGAR反復を必要とし、しばしば終了に失敗します
  2. 契約合成の課題:複雑な制御フローとデータ依存性を持つプロセスはより多くの反復が必要です
  3. 実用性の検証:おもちゃの例ではなく、実装コードを処理できます

関連研究

多言語システム検証

  • 手動翻訳方法:CookらがXen仮想マシンモニターを検証するためにアセンブリコードをCに翻訳
  • フラグメント自動翻訳:LFVerifierがCフラグメントを検証言語に自動翻訳
  • ブラックボックス方法:入出力動作から要約を推論

合成的検証

  • Hoare論理に基づく合成的検証は大規模な単一言語プログラムに広く適用されています
  • 抽象解釈とCEGARを使用した前置条件/後置条件学習の自動化

契約推論

  • 属性ガイド契約推論方法
  • 制約Horn節ソルバー
  • 仕様学習におけるLLMの最近の応用

結論と議論

主要な結論

  1. PolyVerは多言語システム検証の重要な課題を解決することに成功しました
  2. 合成的方法は完全な言語翻訳の複雑性を回避します
  3. 自動化契約合成は方法を実用的にします
  4. LLMベースの合成器は従来の記号方法より優れています

制限事項

  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の関連文献を引用し、研究に堅実な理論的基礎を提供しています。


総合評価:これは重要で実際的な問題を解決する高品質なシステム研究論文です。方法は革新的で、実験は十分で、ツール実装は完全です。パフォーマンスとスケーラビリティの面でまだ改善の余地がありますが、多言語システム検証分野に重要な貢献をしています。