抽象解釈
プログラムのある時点で、変数 x に代入されている値の区間が [lx,hx] であるとする。値 v(x) を x に代入していることがその具体化であるとき、v(x) は [lx,hx] の区間にある。変数 x と y の区間が [lx,hx] と [ly,hy] であるとき、x+y ([lx+ly,hx+hy]) や x-y ([lx-hy,hx-ly]) の区間も容易に得られる。これは「厳密な; exact」抽象化であり、例えば x+y の取りうる値の集合はその区間([lx+ly,hx+hy])と正確に対応している。同様のより複雑な定式化が、乗算や除算などについても導出できる。これを interval arithmetics(区間演算)と呼ぶ。
ここで次のような単純なプログラムを見てみよう。
一般的な算術型であれば、z の値はゼロになるはずである。
コンピュータ以外の実世界の例で、抽象解釈の意味を解説する。
会議室に人々が集まっているとする。ある人物がまだ来ていないことを証明したい場合、最も確実な方法は出席者の名前と何らかのID番号(例えばアメリカなら社会保障番号)をリストアップしていけばよい。2人の人間が同じID番号を持つことはないので、このリストを参照すれば特定の人物が出席しているか否かは簡単に判明する。
ここで、名前しかリストアップできないとする。ある人物の名前がリストにない場合、その人物が出席していないということは確実と思われる。しかし、もしあったとしても、出席していると確実に断言できるわけではない。なぜなら、同姓同名の別人かもしれないからである。実際には同姓同名はそうあることではないので、このような不正確な情報でも多くの場合は意味がある。しかし厳密に言えば、その人物が出席していると確実に言えるわけではなく、単に「おそらく」出席しているだろうとしか言えないのである。探している人物が犯罪者なら、「警報」を鳴らすことになるだろう。