|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 抽象 : [ちゅうしょう] 1. (adj-na,n) abstract ・ 象 : [ぞう] 【名詞】 1. elephant ・ 解釈 : [かいしゃく] 1. (n,vs) explanation 2. interpretation
抽象解釈(ちゅうしょうかいしゃく、)は、コンピュータプログラムの意味論の健全な近似の理論であり、順序集合(特に束)における単調関数に基づいている。全ての計算を実施することなく、プログラムの部分的な実行(ある種の部分評価)をするものと見ることができ、それによりプログラムの意味に関する情報(例えば、制御構造、情報の流れなど)を獲得する。 主な応用として、形式的な静的コード解析があり、プログラム実行に関する情報を自動抽出するものである。このような解析には次の2つの利用法がある。 * コンパイラ内部で、対象プログラムを解析し、特定の最適化やプログラムの変換が可能かどうかを決定する。 * デバッグ時や、特定の種類のバグが存在しないことを保証するとき。 抽象解釈は、Patrick Cousot と Radhia Cousot によって定式化された。 == 直観的解説 == コンピュータ以外の実世界の例で、抽象解釈の意味を解説する。 会議室に人々が集まっているとする。ある人物がまだ来ていないことを証明したい場合、最も確実な方法は出席者の名前と何らかのID番号(例えばアメリカなら社会保障番号)をリストアップしていけばよい。2人の人間が同じID番号を持つことはないので、このリストを参照すれば特定の人物が出席しているか否かは簡単に判明する。 ここで、名前しかリストアップできないとする。ある人物の名前がリストにない場合、その人物が出席していないということは確実と思われる。しかし、もしあったとしても、出席していると確実に断言できるわけではない。なぜなら、同姓同名の別人かもしれないからである。実際には同姓同名はそうあることではないので、このような不正確な情報でも多くの場合は意味がある。しかし厳密に言えば、その人物が出席していると確実に言えるわけではなく、単に「おそらく」出席しているだろうとしか言えないのである。探している人物が犯罪者なら、「警報」を鳴らすことになるだろう。しかし、その警報が誤りである可能性ももちろんある。同様の現象はプログラムの解析においても発生する。 例えば「''n''歳の人物がその部屋にいるか」といった特定の情報だけを欲しい場合、名前と生年月日のリストを作る必要はない。単に出席者の年齢のリストだけを作れば、正確に質問に答えられる。そのようなリストを作るのも困難な場合、出席者の最小年齢 ''m'' と最大年齢 ''M'' だけを保持するものとする。もし質問の年齢 ''n'' が ''m'' より小さいか ''M'' より大きいなら、そのような人物はいないと確実に答えられる。しかし、それ以外の場合は「わからない」としか答えられないだろう。 コンピュータの場合、確実で正確な情報は、一般に有限の時間とメモリで計算できない(ライスの定理とチューリングマシンの停止問題を参照)。抽象化によって、問題を自動的に解けるレベルにまで単純化する。重要な問題は、「このプログラムはクラッシュするか?」といった質問に答えられるだけの精度を保ちつつ、問題(プログラム)を扱える程度にまで抽象化によって簡略化できるか、である。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「抽象解釈」の詳細全文を読む スポンサード リンク
|