4 ms·
The idea of different infinities is very important to programmers. In particular, they are the underlying reasons for undecidable problems. You can write any v
by tikhonj 14y ago
The idea of different infinities is very important to programmers. In particular, they are the underlying reasons for undecidable problems.
You can write any valid computer program as a string of finite length from a finite alphabet. This means the set of programs is countable. (This should not be surprising--everything is ones and zeroes, after all, so you always end up mapping your program to a really large natural number to use it.)
EDIT: To clarify a bit--the set of computer programs is infinite and countable. I sometimes use "countable" to mean "countably infinite" which is a very bad habit. My only justification is that the fact that a finite set is countable is trivial and therefore boring.
The number of functions between two countably infinite sets is not countable. This is also fairly easy to see: the set X → Y can be easily mapped to a subset of P(X × Y) where P deontes a powerset. All this says is that you can describe any function from X to Y as a set of ordered pairs (X, Y). For two countable sets X and Y, X × Y is also countable; if either X or Y is infinite, X × Y is also infinite. This means that P(X × Y) is not countable, so X → Y is not countable either.
EDIT: My justification for why X → Y is uncountably infinite if either X or Y is countably infinite (and both are countable, of course) is not correct. Just mapping something to a subset of P(X × Y) doesn't actually tell us anything. However, the actual fact is correct even if I don't show it, so I'm going to figure out (or, honestly, probably look up) why this is the case and amend my post further :P.
So the number of programs we can write is countable; the number of functions we can write over interesting domains (like natural numbers or integers) is not countable. There has to be an infinite number of functions we cannot write programs for!
So we have managed to show, in a fairly simple way, that there have to exist undecidable problems. The real trick is that we can see this without having to construct a problem like that or even reason much about programs in general; all we have to know is that programs are strings and have finite lengths.
The other neat bit is that this reasoning is very easy to adapt to proofs rather than programs. After all, mathematical proofs are also finite-length strings! And, for example, propositions about the natural numbers are essentially functions ℕ → {true, false}. So you can't prove all of them.
So now we also see a deep relationship between proofs and programs, without actually doing much thinking about proofs or programs.
We can also see that I'm no mathematician and either made some blatant errors or was not very rigorous throughout :P.
- deleted 14y ago[deleted]
- Dove 14y agoI'd never thought about that before. I think you could use that argument to prove that strong AI is impossible. --------------- Consider an AI to be a chat program which maps strings to strings -- all the strings of its input over time to all the strings of its output. There are, by the argument above, an uncountable number of such mapping programs, only a countable number of which can actually be coded. So, enumerate the ones that can be coded. This shouldn't even be difficult--let's just do it alphabetically. Now, suppose I have a strong AI called Sal. My first input to Sal is to describe the program enumeration strategy, and instruct her to respond to any string which contains a number by looking up the program on the table corresponding to that number, inputting all the input she has received so far, and then giving a response different than what it would give. A strong AI can certainly do this. Sal is not programmable.
- Dove 14y agoIn fact, that argument can be stated a lot more simply. Take any programmable AI. Show it its own source code. Instruct it to run the code with all the inputs it has received so far, and then return something different. Hence, a strong AI cannot have source code that it is capable of running. Huh. I'd always heard that a true mind couldn't comprehend itself. I guess now I know why.
- Evbn 14y agoMy Mac can run Mac OS X in a VM and begin to execute the original Mac's inputs. It just won't finish.
- gjm11 14y agoThis argument also proves that people can't really think, because I can set you the following challenge: "Work out what number you'd name in response to this question, and then tell me the number one bigger than that."