Let S be the set of all computable sets (which are subsets of |N). We know that S is countable. I have constructed the following proof that S is uncountable, using the diagonal argument, to which I wish to find the mistake. Assume S is countable. Then it can be put in an ordering like this: S1 S2 S3 ... Si ... Let the predicate E_i(j) denote that the i-th element of S contains the natural number j; that is, E_i is the characteristic function of S_i. Now, construct the set S' such that its characteristic function E(x) = not E_x(x). S' is computable, because the following algorithm can be constructed: function S'(i) { return !E_i(i); } As E_i(i) can be computed by calling program S_i with input i in finite time, then therefore S'(i) must also complete in finite time. For all i in |N, E will be different from E_i, because they differ at element i. Therefore, the set of computable numbers is uncountable.