Hacker News new | ask | show | jobs
by curtisf 1800 days ago
This presents a confused understanding of Cantor's diagonalization argument.

You are shrouding in complexity something that is straightforward. The complete proof of distinct infinite cardinalities can be stated succinctly and clearly in only a few lines, without referencing the reals at all. You don't need to vaguely refer to "four steps", you should precisely elaborate the steps of the proof you view as problematic.

First, forget the reals. Let's establish that there are sets that are infinite yet uncountable.

----

"Uncountable" means that there is no bijection with (a subset of) the natural numbers.

An "infinite sequence of A's" means a function ℕ → A. For convenience, I'll denote the set of infinite sequences of A's with `A**` -- this is not standard notation.

Theorem: There is no bijection between ℕ and {0, 1}**.

Proof: Suppose for contradiction that there is a bijection f: ℕ → {0,1}**.

Define a function z(n) = 1 - f(n)(n).

z is clearly well defined and is clearly a member of {0,1}**.

Since f is a bijection and z is in the codomain of f, there is an element k of ℕ such that f(k) = z.

However, z(k) = 1 - f(k)(k). Yet f(k) = z, so z(k) = 1 - z(k).

This is a contradiction. So, the assumption (that there exists a bijection f: ℕ ↔ {0,1}**) must be false.

Q.E.D.: There does not exist a bijection between ℕ and {0, 1}**.

----

The linked paper claims that the above proof would work on a bijection of the form ℕ ↔ [ℕ] or ℕ ↔ [ℚ] (where the [] indicate some suitable representation of the set as sequences of bits; again, not standard notation), but that is mistaken: crucially, the constructed function `z` must be a member of the codomain of `f`. The construction 1 - f(n)(n) does not necessarily lie in that set when the set only permits _certain_ bit-sequences!

For example, consider an encoding [ℕ] which is "one-hot"; the natural n is encoded as a function y(n) = 1 and otherwise y(k) = 0. Then there is an obvious bijection `f`: f(a, b) = 1 when a=b and otherwise 0. What is `z` for such an `f`? z(k) = 1 - f(k, k) = 1. So, `z` is not a member of [ℕ].

For a more involved example, consider an encoding of [ℕℕ] that is a unary-encoding of the first natural, followed by a single zero, followed by a unary encoding of the second natural, and followed by only 0s. (The rationals correspond to a subset of these). A standard bijection has the pairs appear in the order of their sum: (0, 0), (0, 1), (1, 0), (2, 0), (1, 1), (0, 2), ... It's an exercise left for the reader that z constructed on this set does not encode to a unary number, followed by a single zero, followed by a unary number, followed by only zeros.

----

If you have an issue with cardinalities, I expect it can be found in the above proof and does not actually lie with the reals. But, for completion, to tie in the real numbers, it's necessary to show that {0,1}** is bijective with ℝ, or with (0, 1). This falls out from the Cauchy-sequence definition of ℝ. For a sequence y : {0,1}** the sequence z(k) = y(0) + 1/2·y(1) + 1/4·y(2) + 1/8·y(3) + ... + 1/2^k·y(k) is clearly a Cauchy sequence with a limit in the interval [0, 1]. It's also straightforward to check that every real number in the interval [0, 1] is the limit of one such Cauchy sequence.

2 comments

> Define a function z(n) = 1 - f(n)(n).

I don't understand the notation f(n)(n). Is it related to f_{nn} in LaTeX notation? Your later text suggests maybe it was aiming at f(n,n) so I will assume that.

I recognise a form of this argument and I might have tackled it in the supplementary materials I created that are referenced in the article. Let me know.

> However, z(k) = 1 - f(k)(k). Yet f(k) = z, so z(k) = 1 - z(k).

I'm assuming this was intended to be: z(k) = 1 - f(k). Yet f(k) = z, so z(k) = 1 - z(k).

For some k, z(k) = 0.5. f(k) = 0.5. Seems Ok.

For future readers: z cannot return 0.5. z can only return 0 or 1. This is because z is closed over a function which returns 0 or 1, and inverts it to return 1 or 0.

This should remind folks of both Turing's Halting problem and Russell's paradox. z takes some f which claims to be a bijection (claims to Halt, claims to be a set of all sets) and finds a way to call f against a witness constructed from f.

For each natural number k, f(k) is itself a function, and f(k)(k) means the value of that function at k.

Yes, you could basically think of it as f_{k,k} if you wanted to.

No, this is __not__ meant to be 1 - f(k) . f(k) is a function (or a sequence, if you prefer), not a particular value in {0,1}, f(k)(k) is a particular value in {0,1}.

0.5 is not in the set {0,1}, and therefore if z(k)=0.5 then z is not in {0,1}* .

> Theorem: There is no bijection between ℕ and {0, 1}*.

So no bijection between \bb{N} in an unspecified number base and some binary strings that could represent integers? That's a nonstarter for me.

Please read my article. Thanks.

You misread their type. There is no bijection N -> (N -> 2); {0,1}* = 2* = N -> 2.

Note that the given proof is a version of Lawvere's fixed-point theorem. The trick is noticing that for some x : N, f : N -> (N -> 2) can be applied onto it twice, giving f(x) : N -> 2 and f(x)(x) : 2.

Note further that infinite binary strings don't just represent natural numbers. Indeed, every natural number has a finite binary string, and that is the bijection that you're imagining. The question is, which natural number is represented by 111...? This leads to the difference between the natural numbers, their one-point compactification, and Cantor space in terms of searchability. Escardó has an article on this: http://math.andrej.com/2007/09/28/seemingly-impossible-funct...

Please read Lawvere's article. Thanks.