>>1
一行目は何も実行しないプログラムを作ればバグがないので可能。

二行目は計算機停止問題と同等な問題。
よって前提に 「あらゆるプログラムに対して」 がつくならば不可能。

で、できることは、ある問題領域(特定の特徴を持つプログラム)の
特定の種類のバグがあるかないかを調べること。
配列境界、到達可能性(ガベレージ) あたりはコンパイラでもできている。

プログラムはあっているが仕様が正しくないというバグはどうやって見つける?