抽象解釈
しかし、その警報が誤りである可能性ももちろんある。同様の現象はプログラムの解析においても発生する。
例えば「n歳の人物がその部屋にいるか」といった特定の情報だけを欲しい場合、名前と生年月日のリストを作る必要はない。単に出席者の年齢のリストだけを作れば、正確に質問に答えられる。そのようなリストを作るのも困難な場合、出席者の最小年齢 m と最大年齢 M だけを保持するものとする。もし質問の年齢 n が m より小さいか M より大きいなら、そのような人物はいないと確実に答えられる。しかし、それ以外の場合は「わからない」としか答えられないだろう。
コンピュータの場合、確実で正確な情報は、一般に有限の時間とメモリで計算できない(ライスの定理とチューリングマシンの停止問題を参照)。抽象化によって、問題を自動的に解けるレベルにまで単純化する。重要な問題は、「このプログラムはクラッシュするか?」といった質問に答えられるだけの精度を保ちつつ、問題(プログラム)を扱える程度にまで抽象化によって簡略化できるか、である。
しかし、ここで区間演算を行うために x の区間を [0,1] とすると、z の区間は [-1,1] となる。個々の演算は厳密に抽象化されているのに、それを合成した結果は厳密ではない。
問題は明らかである。ここでは x と y の値が等価であるという関係を無視していた。実際、区間の領域では変数間の関係は考慮されない。これを non-relational domain と呼ぶ。non-relational domain は高速で実装が容易であるが、正確とは言えない。
変数間の関係を扱う抽象領域の例として次のものがある。
凸多面体 - 計算コストが高い。
"octagons"(八角形)
difference-bound matrices
linear equalities
そして、これらを組み合わせたものもある。
抽象領域を選んだとき、細かな関係性を保持しようとすれば、計算コストも高くつくのが一般的である。