私は抽象解釈のコースを受講していますが、理論が実際のコードにどのようにマッピングされるかの例を見たことがありません。
できればコンパイラ全体を操作する必要のない短いコード例を探しています。分析が有用である必要はありません。分析が導出されてから実装される例を見たいだけです。
おそらく大学のコースから、そのような例を知っている人はいますか?
私は抽象解釈のコースを受講していますが、理論が実際のコードにどのようにマッピングされるかの例を見たことがありません。
できればコンパイラ全体を操作する必要のない短いコード例を探しています。分析が有用である必要はありません。分析が導出されてから実装される例を見たいだけです。
おそらく大学のコースから、そのような例を知っている人はいますか?
Bertotによるこの論文があります
これにより、Coq Proof Assistant を使用して単純な玩具言語の抽象インタープリターを完全に実装できます。私はこれを具体的な参考資料として使用しましたが、主題を考えると予想されることですが、少し難しいですが、有用であることがわかりました. Coq は素晴らしい小さなソフトウェアです。
Cousotの論文にも出くわしました:
抽象的な解釈によるコンピュータシステムの正式な検証への穏やかな紹介
Astrée での実装の大まかな詳細 (ただし、完全な詳細については有用な引用があると確信しています)。
また見かけたら教えてください!特にプロローグの抽象インタプリタを見たいです。
このツールも興味深いかもしれません: Interproc Analyzer
非常に単純な言語の抽象アナライザーですが、手続き間の分析を提供します。分析を試して、分析されたプログラムに関する数値的不変条件を取得できます。ソースコードが公開されています (OCaml)。
Abstract Interpretation の「作成者」の 1 人である Patrick Cousot (既に回答の 1 つで言及されています) によって提供された、非常に徹底的で正確なコース: Abstract Interpretation に関する MIT コース。このコースでは、OCaml での課題も提供しています。
最近オープン ソース化されたツールBinNaviに付属している MonoREIL があります。
ここに短いイントロがあります。
MonoREIL フレームワークのコンテキストはコンパイラではなく、バイナリ コードの分析であることに注意してください。それでも、実際のアプリケーションに使用されています。この紹介のスライド 34 以降を参照してください(より正式な背景が含まれています)。