プルーフを撃downする方法


59

証拠を確認するための一般的なガイドラインは何ですか?これは私のような大学院生にとって重要だと思います。何かを証明するために何をする必要があるかはすでにわかっていますが、送信する前にすべてを常に確認する必要があります。あなた自身のアドバイザーにも。

私は試行錯誤によっていくつかの戦略を開発し、アドバイザーから多くのアドバイスを受けました。しかし、これは常に非常に退屈な作業です。通常、何かを終えたら、次の問題に進みたいだけですが、すべてが完璧になるまで現在の問題に固執する必要があります。ここに、私自身のトリックのリストの例を示します。

  1. 詳細を入力します。「それは明らかです...」、「一般性を失うことなく...」などと書いた場所には多くの間違いがあります。
  2. いくつかの数字を試してください。「またはn = 1000に設定するとどうなるか」などの極端なケースを試してください。n=1n=1000
  3. 清潔なノートを保管してください。毎日それを書き、あなたの大まかなメモと比較してください。私もラテックスで書きますが、この方法で多くの間違いを発見しました。

証拠の確認に適用する一般的な戦略は何ですか?

この質問の目的は、コミュニティWikiにすることです。


質問が主観的と思われる場合は、改善にご協力ください。
マルコスヴィラグラ

このコミュニティウィキを作成するにはどうすればよいですか?
マルコスヴィラグラ

1
おい、クール!私はこの質問に対する答えに本当に興味があります。また、あなたの#3に感謝することができます。(考えてみると、問題に熱心に取り組んでいるときに実際に紙の山が散らばっており、それがランダムに移動します。うん。かなりの時間。
ダニエルアポン

@ダニエル:私は同じ問題を抱えていた!そのため、証拠を完成させた後、すぐにラテックスバージョンを作成します。私がいたるところにすべてを保持している唯一の厄介な男ではないことを知っているのは良いことです:
マルコスヴィラグラ

1
モデレーターの注意を引くためにフラグを立てます。
スレシュヴェンカト

回答:


39

ソフトウェアエンジニアは、「コードの匂い」と呼ぶ概念を持っています。これらは、より深い問題を示す可能性のあるコードの症状です。ソフトウェアエンジニアは、気にするにおいのメンタルリストを収集します(つまり、過度に長いメソッドまたはパラメーターが多すぎます)。これは必ずしも問題があることを意味するわけではなく、ライターが再確認したいことを示しているだけです。

「プルーフニオイ」も考慮する必要があると提案します。これは、あなたの証明をチェックするためのアルゴリズムを提供しませんが、言語と証明の可能な問題を認識するための比phorを提供します。プルーフの匂いの例:

  1. 副詞「明らかに」、「明らかに」など。
  2. 結果自体への参照ではなく、以前の結果の証明への参照。
  3. 多くの技術的前提条件を伴う結果の軽率な使用。

さらに微妙な匂いもあります。たとえば、証明が二項定理を使用して式を展開し、その後二項定理を使用して閉じた形式に戻る場合、閉じた形式で直接操作して同じ結果が得られる場合があります。

私の提案は、そのような匂いの(精神的または書面による)リストを収集し、あなたがあなたの作品を読んでいるときにそれらをチェックすることです。このアプローチの素晴らしい副作用は、あなたをより良い読者にすることです。

注:この回答での私の希望は、M。Alagganの回答で参照されているLamportのHow to Write Proofで提供される厳密な回答に直感的な側面を与えることでした。


4
私はいつもこれを生徒に言いますが、生徒は私がおかしいと思っています。もちろん、私は実際にバグの匂いを嗅ぐことができると主張していますが、これは問題の一部である可能性があります;)
Suresh Venkat

7
@Suresh:この学生は、さまざまな理由であなたがおかしいと思っています。;-)
ジョンモーラー

4
コードの匂いに関するメモでは、私が常に他者の証拠を精査しようとするものには、不平等連鎖が含まれます。多くの場合、非常に基本的なエラーには、より難しい派生物の中に忍び寄る癖があります。
ジョンモーラー

23

レスリー・ランポートによる非常に良い論文があります(証明の書き方)。それは実際、彼が以下のような方法で詳細な証明を書くスタイルに関する提案です。

(1)簡単な方法でエラーを検出できます

(2)どの部分でどの仮定と定理が使用されたかを明確にします。これにより、(たとえば)より弱い仮定を使用したい場合に何が起こるかを簡単に確認できます。

コミュニティでの経験と、MOでのこの手法に関する感動的な解説もあり、一般的に肯定的な経験を示しています(その他のリソースも同様)。

更新:新しいバージョンがあります21世紀の証拠を書く方法


5
これらの証明は、PLの研究論文で書くものと非常に似ています。ロジックのチェーンは非常に明確です。PLスタイルの証明を読んで理解する方法を学んだ後、「通常の」数学証明を理解するのが難しいことがわかりました。そのような証明は、多くの場合、読者が著者と同じように考えることを要求し、異なる証明スタイルに慣れてきたとき、これは単にそうではありません(少なくとも私にとっては!)
クリストファーモンサント

2
@Christopher Monsanto:PLはプログラミング言語の略?あなたがそのような例(そのような論文の1つ)をチェックアウトするために言及できれば感謝します:)
M.アラガン

5
私はいつも、Lamportが示唆していることは、ポール・ロックハートの「数学者の嘆き」(maa.org/devlin/LockhartsLament.pdf)と互換性がないと感じていました。
マルコスビジャグラ


14

物理学者が類似の問題にどのように対処するかについての昔の一般的な説明を読んだことを覚えているようです。次のバージョンがどれほど正確であるかを誰が知っていますか。修正は大歓迎です。しかし、基本的な戦略は非常に注目に値します。

彼らはどのようにブラックホールを信じるようになったかを説明しました。ブラックホールは、ワームホールのような物理学の他の奇妙なオブジェクトのように、当初は純粋に数学的な構造でした。彼らの戦略は印象的でした:彼らは数学的にテストされるオブジェクトに他のオブジェクトを投げます。ワームホールは、通常の物理的オブジェクト、おそらく小惑星の存在下でもワームホールが崩壊することを発見したため、テストに失敗しました。しかし、ブラックホールはこのテストに合格しました。ブラックホールは小惑星が投げられても生き残るでしょう。そこで、彼らはそれに星を投げてみました。同じ結果。最後に、彼らはブラックホールに別のブラックホールを投げ、それは生き残った。この結果、彼らはブラックホールの存在に十分な自信を持ち、実際の宇宙で実際に探し始めました。

したがって、上記の戦略の関連性と適用は、あなたの証明で物事を投げ始めることです。それは健全性チェックを生き残りますか?必要な仮定を取り除いた場合、本来あるべき姿に崩れますか?範囲外のケースに適用されたときに、必要に応じて折りたたまれますか?合理的な一般化と専門化に耐えますか?PolyaのHow to Solve itにあるヒューリスティックリストをご覧ください。これらのヒューリスティックを使用して証明を変更してみて、正常に機能するかどうかを確認してください。


あなたの答えのほとんどは、証拠をチェックすることに焦点を当てています。それは、定理が真であるはずだった場所で真であったことをチェックしないため、機能しません!たとえば、すべての奇数が3で割り切れることを「証明」したと仮定します。偶数にも拡張すると、証明が失敗することを確認します。4は3で割り切れないため、証明は失敗します。ほら、私の証明は正しいに違いない!
デビッドリチャービー14

12

最も安全なアプローチの1つは、複数の独立した証明を考え出すことだと思います。そうすれば、証拠の詳細に誤りがある場合でも、メインの結果が正しいと確信できます。


9

私が便利だと思ったテクニックの1つは、証明戦略で証明できる他の結果を考えることです。証明戦略を簡単に適応させて、大きな未解決の問題、または未解決ではあるが証明戦略の複雑さに比べて非常に複雑な解決策を持つ問題を証明できる場合、それは疑うべき大きな理由ですの証拠。


5
可能であれば、この+10を与える-特に複雑性理論では、ような非常に強力なステートメントを証明するために、欠陥のある証明手法がしばしば示されることがあります。特に、証明手法が相対化する場合!PNP
ジョシュアグロチョウ14

6

COQISABELLEなどのプルーフチェッカーを使用して、常にプルーフを再チェックします。これらのプログラミング言語のいずれかで証明を証明できれば、証明が正しいことを確認できます。ラムダ項と同じくらい簡単;)。


Coqを使用したことはありませんが、試してみるべきです。実際、数学の下限を証明しようとしていますが、正しい方法が見つかりませんでした。特別なパッケージなどが必要なのかもしれません。
マルコスヴィラグラ

1
たぶんそれは長引くかもしれませんが、実数で下限を証明したい場合は、これらのライブラリを確認できます:coqtail.sourceforge.net/?home
Gopi

同意しましたが、どのプログラミング言語でも機能します。ほとんどの場合、これを逆に行います。問題ドメインをプログラミング言語(通常はRuby)で定式化し、これを証明用のテンプレートとして使用します。
チャドブリューベーカー14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.