私は最近たくさん読んでいて、人々がドナルド・クヌースによるTexプログラムにバグがないという「壮大な」主張をする記事に出くわしました。これは何らかの方法で可能ですか?もしそうなら、これはどのように可能ですか?
(重複としてマークされていても、私の答えはそうではありません;)
それは可能ですが、TeXサイズではなく、誰もそれを証明することはできません。 http://ertos.nicta.com.au/research/l4.verified/ は、検証済みのソフトウェアの例です。
ソフトウェアにバグがないことをsayに誰でもできることが2つあります(Donが言ったとは言わないでください)。
(1)の問題は、ソフトウェアがテストに合格したとしても、バグがないという証拠がないことです。これは、一連のテストで検出されるバグがプログラムにないことを証明するだけです。大規模なプログラムの場合、テストのコストが高すぎます。 TeXは、基本的にユーザーベースからの無料テストを楽しんでいます。ドンがTeXにバグがないことを証明できれば、100万ドルの報奨金を支払うことができたはずです。
私が立てたリンクは、(2)妥当なサイズのプログラムを証明する方法の例です。合理的な意味で、それは些細な証拠を持っている一行のプログラムではなく、何か役に立つことをすることができます。彼らが行ったことは、設計を設計し、設計を改良し、設計をCに変換し、それらのステップを定理証明者(Isabelle/HOL)にチェックさせたことです。実証済みのパーツのサイズは7500行のCコードです。
すべてのプログラムを信頼できるシステムとして構築するのは難しいかもしれませんが、プログラムの一部を検証し、プログラムの残りの部分をテストでカバーすることは考えられます。