ゼロは悪魔です:偽の証拠を作成する一般的な方法

数学的な証明を行う際に間違いを犯すのは簡単です.それでも、それらの証明で繰り返されるエラーパターンを見つけることができます.そして、最も一般的な理由のいくつかは、無害に見える数のゼロに関連しています.

ゼロ除算の楽しみ

次の 1 の「証明」を見てみましょう。 = 2 1 =2 1=2:

<セマンティクス>させて a , b Z そのような a = b a 2 = a b a 2 b 2 = a b b 2 ( a + b ) ( a b ) = b ( a b ) a + b = b a + a = a 2 a = a 2 = 1 \begin{aligned}\text{let } a, b \in \mathbb{Z} \text{ such that } a =b \\a^2 &=ab \\a^2 - b^2 &=ab - b^2 \\(a + b)(a - b) &=b(a - b) \\a + b &=b \\a + a &=a \\2a &=a \\2 &=1\end{aligned} a,b∈Zを、a=ba2a2−b2(a+b)(a−b)a+ba+a2a2 =ab=ab−b2=b(a−b)=b=a=a=1な

ここで何が間違っているのでしょうか? a で方程式の両辺をキャンセルします b a - b a-b ですが、前提には a が含まれます = b a =b a=b なので、ゼロ除算の問題があります。

一般に、ゼロチェックなしでキャンセルを実行することはひどい考えであり、避けるべきです。

要素がゼロのセット

わかりました、これは「すべてのオブジェクトは同じ」という愚かな「証明」です。オブジェクトは可算であると仮定します。

証明:

S とする セマンティクス> S をすべてのオブジェクトのセットとします。プロパティを P とします。 ( ) P(n) P(n) は、S のすべてのサブセットを意味します セマンティクス> 最大で n のサイズの S n n には同じオブジェクトが含まれます。正式には:

<セマンティクス>P ( ) X パウ ( ) , X そのような , o ' X , = o ' P(n) \equiv \forall X \in \text{Pow}(S),\; |X| \leq n \text{ such that } \forall o, o' \ \in X, o =o' P(n)≡∀X∈Pow(S),∣X∣≤n そのような ∀o,o' ∈X,o=o'

where <セマンティクス>Pow ( ) \text{Pow}(S) Pow(S) は集合 S の冪集合です。 セマンティクス> S のすべてのサブセットによって定義される S セマンティクス> S、および X |X| ∣X∣ は X の基数 (要素数) を意味します X X.

少し立ち止まって、この定義が何を意味するのかを理解してください。次の「証明」で使用します。

であることを証明したい > 1 , P ( ) \forall n> 1, P(n) ∀n>1,P(n)。 n の数学的帰納法によって証明します。 n n.

基本ケース (n = 1 n =1 n=1):

オブジェクトのシングルトン セットには同じオブジェクトのみを含めることができるため、これは簡単です。

帰納的なケース:

P を扱います ( ) P(n) P(n) を帰納的仮説として、P を証明する必要があります。 ( + 1 ) P(n + 1) P(n+1)。一般性を失うことなく、任意のセット X<を選択します。 /ミ> パウ ( ) X \in \text{Pow}(S) X∈Pow(S) X = + 1 |X| =n + 1 ∣X∣=n+1.2 つのオブジェクトを選択 x , x ' X x, x' \in X x,x′∈X、そして x を表示しましょう = x ' x =x' x=x′.Let <セマンティクス>Y = X x Y =X - {x} Y=X−x および Y ' = X x ' Y' =X - {x'} Y′=X−x′.Since <セマンティクス> , Y ' |Y| \le n, |Y'| \le n ∣Y∣≤n,∣Y′∣≤n, P ( ) P(Y) P(Y) と P ( Y ' ) P(Y') 帰納仮説による P(Y′)。 Y ' y \in Y \cup Y' y∈Y∪Y′.yを取得します = x y =x P のため y=x ( ) P(Y) P(Y) と x , はい x,y \in Y x,y∈Y.同様に、y = x ' y =x' y=x'.したがって、 <セマンティクス>x = x ' x =x' x=x'、これは帰納的なステップと「定理」を証明します > 1 , P ( ) \forall n> 1, P(n) ∀n>1,P(n).

繰り返しますが、ここでの間違いはゼロに関連しています。 Y ' |Y \cup Y'| ∣Y∪Y′∣ は十分にゼロになる可能性があるため、そこから要素を「選択」することはできません。

あなたがよりプログラミングのバックグラウンドを持っている場合、ゼロで除算したり、ゼロ要素のコレクションから要素を取得したりすると、恐ろしい実行時エラーが発生するのは偶然ではありません.

そして、ほとんどの型システムはあなたを救いません (独自の制限がある依存型システムを除く)。

私が楽しんで書いているように、この投稿を読んで楽しんでいただければ幸いです。