Zero is the Devil: Common ways to construct bogus proofs. (暂未翻译)

创建时间: 2020年5月10日

It is easy to make mistakes when conducting mathematical proofs. Nevertheless, you can find some recurring error patterns in those proofs. And some of the most common reasons are related to the innocuous-looking number zero.

Division-by-zero fun

Let's look at the following "proof" of 1=21 = 2:

let a,bZ such that a=ba2=aba2b2=abb2(a+b)(ab)=b(ab)a+b=ba+a=a2a=a2=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}

What is wrong here? We cancel both side of the equation by aba - b, but our premise includes a=ba = b, so we have a division-by-zero problem.

Generally, performing cancellation without a zero-check is a terrible idea and should be avoided.

Sets with zero elements

Ok, here is another stupid "proof" of that "all objects are the same." We will assume that objects are countable.

Proof:

Let SS be the set of all objects. And let the property P(n)P(n) mean that all subsets of SS of size at most nn contain the same same objects. Formally:

P(n)XPow(S),  Xn such that o,o X,o=oP(n) \equiv \forall X \in \text{Pow}(S),\; |X| \leq n \text{ such that } \forall o, o' \ \in X, o = o'

where Pow(S)\text{Pow}(S) is the power set of the set SS, which is defined by all subsets of SS, and X|X| means the cardinality (elements count) of XX.

We want to prove that n>1,P(n)\forall n > 1, P(n). And we will prove that by mathematical induction on nn.

Base case (n=1n = 1):

This is trivial as the singleton set of object can only contain the same object.

Inductive cases:

We treat P(n)P(n) as our inductive hypothesis, and we need to prove P(n+1)P(n + 1). Without the loss of generality, pick an arbitrary set XPow(S)X \in \text{Pow}(S) such that X=n+1|X| = n + 1. Pick two objects x,xXx, x' \in X, and let's show x=xx = x'. Let Y=XxY = X - {x} and Y=XxY' = X - {x'}. Since Yn,Yn|Y| \le n, |Y'| \le n, we know that P(Y)P(Y) and P(Y)P(Y') by the inductive hypothesis. Pick an arbitrary object yYYy \in Y \cup Y'. We get y=xy = x because of P(Y)P(Y) and x,yYx,y \in Y. Similarly, y=xy = x'. Thus, x=xx = x', which proves the inductive steps and the "theorem" n>1,P(n)\forall n > 1, P(n).

Again the mistake here is related to zero. YY|Y \cup Y'| can well be zero, so we cannot just "pick" an element from it.

If you are from a more programming background, it is no coincidence that dividing by zero or getting an element from a collection of zero-elements will cause horrible run-time errors.

I hope you have fun reading this post, just as me having fun writing it.