掲示板

1. コンピュータで証明のステップは大丈夫か

投稿日時: 2020/10/12 システム管理者


数学は何処へ行くより2, 
Brian Davies, Notices of the American Mathematical Society, декабрь 2005, vol. 52, №11.

コンピュータプログラムを書いたことのある人は誰でも、最も単純で最も短いものでさえ、数学者とは異なり、間違いを許さないことをよく知っています。構文のわずかなエラーはコンパイラーによって認識され、そのようなプログラムの実行は即座に停止されます。コンパイラは2つの異なる変数に同じ名前を使用することをスキップしますが、プログラムの出力はほとんど意味がないため、このようなエラーに気付くことは困難です。多くの場合、数学的なエラーは、同様のタイプの単純な問題に対してプログラムを実行することによって検出されます。その解決策は事前にわかっています。この場合、問題の入力パラメーターを変更することで、モデルが予測どおりに動作することを確認できます。

標準ソフトウェアパッケージに含まれているユーティリティで発生する可能性のあるエラーと不正確さは、それらの重要性と発現の希少性のために、識別することははるかに困難です。それにもかかわらず、わずか数百行の長さのプログラムは、数学者の生活を信じられないほど楽にすることができ、プログラムをデバッグすることで最終的に正しく動作できることを示しています。長くて複雑なプログラムを使用すると、本当の問題が発生します。最近、すべての部門のコンピューターに誤ったソフトウェア更新がインストールされたため、英国政府の管理がほぼ1週間麻痺しました。

ソフトウェアの正確さの正式な検証は、応用数学論理の分野の専門家とビジネス担当者の両方の関心事です。特に、Windows XP[訳注)この論文は2005年]の信頼性の向上は、プログラムの機能の根底にある数学的アルゴリズムの正式な整合性チェックの数学的方法に基づく強力なソフトウェアの正確性分析ツールのおかげで達成されました。ただし、いくつかの点で、サイバネティクスと数学の問題は根本的に異なる面にあります。 Javaなどの一部のプログラミング言語の技術文書は、数百ページの長さになる可能性があります。これは、最も洗練された定理が必要とするよりもはるかに長いものです。ソフトウェアの「特異な」動作がバグなのか、プログラムの機能なのかを判断するのが難しい場合もあります。ハング(多くの場合、バッファオーバーフローが原因)は、間違いなくプログラマの欠陥です。たとえば、LATEXが、ユーザーの要求に応じず、何かをすることを拒否した場合、開発者がそのような機能を必要であるとは全く考えていなかったためで,明確なことを言うのはより困難です。一般に、大規模なソフトウェアパッケージの開発に不適切な技術仕様は、プログラマーによる技術仕様の不適切なパフォーマンスよりも、予測できない経済的影響を伴う壊滅的な障害を起こす原因です。


ソフトウェアの正しさの公式的証明により、一部のサイバーネティシストは厳密な数学に同じ方法を適用しようと試みましたが、現時点でこの分野の活動は明らかにうまく行っていません。以下の発言から、私が分析している分野では、正当性の公式的証明の実施に大きな困難が予見されていることがはっきりとわかります。他の分野では(たとえば、数学論理や代数で)価値のあるアプリケーションを見つけるかもしれませんが、これらの分野で働く専門家にこれを判断させてください。たとえこれらの詳細が重要でなくても、起こっていることの雰囲気を読者に伝えるために、ここで詳細を少しだけお話しましょう。数学的分析におけるほとんどすべての定理の証明は、外部の事実に基づいています。これらは読者が知っていることを意図しているため、通常は説明されません。例えば、ディリクレ境界条件を持つ有界ユークリッド領域でのラプラシアンのスペクトル分析に専念していると述べることから始めるなら、このトピックだけでもおそらく数百のモノグラフと数千の出版物があり、著者はそれらのほとんどに精通しているとして、この場合、著者は、読者が気付かない可能性のある、新しくてあまり知られていない論文のみを参照します。これは、そのような記事を読む人が、このジャンルの古典に精通している可能性が高いことを意味します。

この道筋に沿って多くの罠があり、時折それらに陥ります。数学的な分析では、同じ定理の複数のバージョンが存在することが多く、異なる初期の仮定に基づいて同様の結論が出されることを忘れがちです。モノグラフには、多くの場合、セクションまたは章の冒頭に、最初の仮定の単一の表示がされ、定理を使用して、その後、著者はどこにも仮定に言及しません。

多くの場合、証明のステップを正当化するとき、著者は元のソースを引用せずに、いくつかの古典的な結果を参照します。最近、私の学生の一人がマーサーの定理の誤適用を見つけました。マーサー自身の定式化は、1次元間隔でカーネルを使用して動作しますが、私はより一般的な定式化を使用し、説明はなしでした。学生が私のバージョンを立証するように私に依頼したとき、私が使用した解釈をカバーするのに十分な一般的な定理の主張を文献で見つけることができませんでした。半ダースの本をめくった後、私はこの証明を自分で書くことにしました。私のように、線形間隔の元の証明に精通している人なら誰でも、有限数の次元を持つケースにそれを拡張可能なことは明らかに見えます。しかし、一般的な形で定理を厳密に証明するのに4ページかかりました。私は、この場合に必要な結果の証明可能性が明らかであったため、重大な教育上の間違いを犯しませんでした。残ったのは、マーサーの証明のすべての論理ステップを1次元のケースから多次元のケースに丹念に転送することだけでした。結局、生徒は私の証明に満足しました。

専門家は、議論中の文脈に合うように古典的な定理を修正することが可能である場合、ほとんど本能的に「理解」します。どうやら、専門家を区別するのはこの能力です。時折、集まって、あらゆる領域の多かれ少なかれ完全な説明を含むモノグラフを書く力を持った数学者がいます。同僚は後で参照するものがあるので、これは大きな問題です。しかし、そのようなモノグラフは、作者が自発的または無意識に均質な文脈でそれを構築するため、実際の状況を歪めるだけである場合があり、そのようなモノグラフで与えられる多くの定理は、より弱い条件下でも当てはまります。