[論文レビュー] Translating Xd-C programs to MSVL programs
本論文は、Xd-Cプログラム(Cの制限付きで意味論的に完全なサブセット)を、UMC4Mツールを用いたランタイム検証のための等価なMSVLプログラムに自動的に変換する翻訳フレームワークを提示する。このアプローチは、形式的オペレーショナル意味論を用いてXd-CとMSVLの構文的・意味論的同等性を証明し、C2Mと呼ばれるツールに実装されている。C2Mは13の実世界のCプログラムを線形時間計算量で正しく変換し、強い動作同等性を維持する。
C language is one of the most popular languages for software systems. In order to verify safety, reliability and security properties of such systems written in C, a tool UMC4M for runtime verification at code level based on Modeling, Simulation and Verification Language (MSVL) and its compiler MC is employed. To do so, a C program $P$ has to be translated to an MSVL program M and the negation of a desired property $Q$ is also translated to an MSVL program M', then "M and M" is compiled and executed armed with MC. Whether $P$ violates $Q$ is checked by evaluating whether there exists an acceptable execution of new MSVL program M and M". Therefore, how to translate a C program to an MSVL program is a critical issue. However, in general, C is of complicated structures with goto statement. In this paper, we confine the syntax of C in a suitable subset called Xd-C without loss of expressiveness. Further, we present a translation algorithm from an Xd-C program to an MSVL program based on translation algorithms for expressions and statements. Moreover, the equivalences between expressions and statements involved in Xd-C and MSVL programs are inductively proved. Subsequently, the equivalence between the original Xd-C program and the translated MSVL program is also proved. In addition, the proposed approach has been implemented by a tool called $C2M$. A benchmark of experiments including 13 real-world Xd-C programs is conducted. The results show that $C2M$ works effectively.
研究の動機と目的
- MSVLを用いたランタイム検証を通じて、Cプログラムのコードレベルにおける形式的検証を可能にすること。
- gotoステートメントを含む複雑なCプログラムを、形式的検証に適した言語に変換する課題に対処すること。
- システムレベルプログラミングに必要な表現力を保持しつつ、MSVLへの信頼性の高い変換を可能にする、Cの制限付きだが表現力のあるサブセット(Xd-C)を定義すること。
- オペレーショナル意味論に基づいて、Xd-CプログラムとそのMSVL変換版の意味論的同等性を形式的に証明すること。
- 実世界のCプログラムをMSVLに自動的に変換するための実用的ツール(C2M)を実装・評価すること。
提案手法
- gotoステートメントを除外するが、すべての基本的なデータ型と制御構造を保持する制限付きCサブセット(Xd-C)を定義する。
- 文法的・意味論的規則を用いて、Xd-Cの宣言、式、ステートメントを等価なMSVL構文にマッピングする翻訳アルゴリズムを設計する。
- 終了および発散を捉えるために、Big-step意味論を用いてXd-CおよびMSVLのオペレーショナル意味論を形式化する。
- オペレーショナル意味論に基づく構造的帰納法および規則的帰納法を用いて、ステートメントおよび式の同等性を証明する。
- 前処理、Parser Generator(PG)を用いたレキシカルおよびシンタクティック解析、およびMSVLコード生成を含む、C2Mと呼ばれるツールに翻訳パイプラインを実装する。
- 後処理による出力最適化と、Xd-CおよびMSVL関数用のカスタムライブラリとの統合により、実世界プログラムの変換を支援する。
実験結果
リサーチクエスチョン
- RQ1制限付きC(Xd-C)を定義できるか。その際、システムレベルプログラミングに必要な表現力を保持しつつ、MSVLへの正しく正確な変換が可能になるようにする。
- RQ2Xd-CとMSVLプログラム間の意味論的同等性を保つ形式的翻訳アルゴリズムをどのように設計できるか。
- RQ3翻訳プロセスの時間計算量は何か。また、実世界のプログラムにスケーラブルか。
- RQ4C2Mツールは、元のCプログラムとそのMSVL同等物との間で、どの程度の動作同等性を維持できるか。
- RQ5UMC4MツールおよびそのMSVLコンパイラMCを用いて、変換されたMSVLプログラムを効果的に検証できるか。
主な発見
- C2Mツールは、RERSおよびSPEC2000のベンチマークを含む13の実世界のXd-Cプログラムを、等価なMSVLプログラムに正しく変換した。
- 生成されたMSVLプログラムの平均サイズは、元のXd-Cプログラムの約2.6倍であり、時間計算量はO(n)(nはステートメント数)の線形時間である。
- 最大のプログラム(twolf、約17k LOC)の翻訳時間は7.11秒であり、全13プログラムの合計時間は95.15秒であった。
- 形式的証明により、式およびステートメントの帰納的推論に基づいて、Xd-CとMSVLプログラム間の意味論的同等性が確立された。
- ツールは強い動作対応関係を維持しており、モデル抽象化に起因する誤検出や見逃しのない正確なランタイム検証が、UMC4Mによって可能となった。
- ベンチマーク結果から、C2Mが産業規模のCプログラムに対して効果的かつスケーラブルであることが確認され、将来的な完全な検証パイプラインへの統合を支援する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。