One day, you find an unmarked cardboard box sitting on your front porch.
On top of the box is a single note:
“Open me.”
You take the box inside and open it, to find what appears to be a small black laptop nestled between old newspaper clippings. There are no identifying features to the laptop, other than its sleek blackness and small size. When you open the laptop, instead of being greeted with any sort of familiar welcome screen, there is simply text, displayed in white over a black background. The text says the following:
“Welcome to the next stage of the human experiment.
I have have been watching your kind for a while now, and I believe that you are now ready. I have decided to entrust this machine to your care. Do not attempt to figure out how this machine performs its calculations, as uninformed tampering may result in the deletion of your universe.
The item you are now holding is what your mathematicians would call a Universal Turing Machine, similar in many ways to your typical computer. This machine, however, is significantly different from any other currently existent on Earth.
After reading this message, press any button to reveal two input fields stacked on top of each other, and one output field at the bottom. All input fields can be fed any required data from the internet, or can be entered into directly through the keyboard. Input lengths of any finite size are acceptable.
The top input field will accept and is capable of automatically running the intended code of any language or format that is capable of being run on a standard Universal Turing Machine.
That input will then be translated into the necessary binary code to be computable by the internal “black box” computer.
The bottom input field must be fed a finite natural number of any length, which will determine the number of computations per second. Do not worry about exceeding the speed of light, or of going past any other finite limit; the computation itself is performed in a “bubble universe” with different physical laws than your own, and is capable of computing at absolutely any positive finite speed relative to your universe.
The output field will display the output of your calculations, if any exist, after exactly one minute of computation relative to you.
Do with this machine as you will.
Wishing you the best,
God.”
Your finger hovers over the keyboard.
What will you do with this marvelous machine? What can you do?
What happens next is up to you.
>________________________________
NOTE FROM ME, OUTSIDE OF THE STORY: I wrote this trying to work out my thoughts on what might be possible with a machine with unlimited but finite computing power. I was going to continue the story, but found that I honestly couldn't think of all that many interesting things that would be possible to do with such a machine, that couldn't already be done now. As such, I'm turning this question public, hoping that anyone reading this might have some interesting ideas that I haven't thought of.
Pretty interesting. You're still constrained by your ability to specify solutions, so you can't immediately solve cold fusion or FTL (you'd need to manually write and debug an accurate-enough physics simulator first). Truly, no computing system can free you from the burden of clarifying your ideas. But this constraint does leave some scope for miracles, and I want to talk about one technique in particular: program search.
Program Search
Program search is a very powerful, but dangerous and ethically dubious, way to exploit unbounded compute. Start with a set of test cases, then generate all programs of length less than 100 megabytes (or whatever) and return the shortest, fastest one that passes all the test cases. Both constraints are important: "shortest" prevents the optimizer from returning a hash table that memorizes all possible inputs, and "fastest" prevents it from relying on the unusual nature of the oracle universe (note that you will need a perfect emulator in order to find out which program is fastest, since wall-clock time measurements in the oracle's universe might be ineffective or misleading). In a narrow sense, this is the perfect compiler: you tell it what kind of program you want, and it gives you exactly what you asked for.
Risks
There are some practical dangers. In Python or C, for example, the space of all programs includes programs which can corrupt or mislead your test harness. The ideal language for this task has no runtime flexibility or ambiguity whatsoever; Haskell might work. But that still leaves you at the mercy of God's Haskell implementation: we can assume that He introduced no new bugs, but He might have faithfully replicated an existing bug in the reference Haskell compiler, which your enumeration will surely find. This is unlikely to cause serious problems (at least at first), but it means you have to cross-check the output of whatever program the oracle finds for you.
More insidiously, some the programs that we run during the search might instantiate conscious minds, or otherwise be morally relevant. If that seems unlikely, ask yourself: are you totally sure it's impossible to simulate a suffering human brain in 100 megs of Haskell? This risk can be limited somewhat, for example by running the programs in order from smallest to largest, but is hard to rule out entirely.
Applications
If you're willing to put up with all that, the benefits are enormous. All ML applications can be optimized this way: just find the program that scores above some threshold on your metric, given your other constraints (if you have a lot of data you might be able to use the best-scoring program, but in small-data regimes the smallest, fastest program might still just be a hash table. Maybe score your programs by how much simpler than the training data they are?).
With a little more work, it should be possible to -- almost -- solve all of mathematics: to create an oracle which, given a formal system, can tell you whether any given statement can proved within that system and, if so, whether it can be proved true or false (or both)...that is, for proofs up to some ridiculous but finite length. I think you will have to invent your own proof language for this; the existing ones are all designed around complexity limitations that don't apply to you. Make sure your language isn't Turing complete, to limit the risk of moral catastrophe. Once you have that, you can just generate all possible proofs and then check whether the one you want is present or not.
Simulation
Up until now we've been limited by our ability to specify the solution we want. We can write test cases and generate a program which fulfills them, but it won't do anything we didn't explicitly ask for. We can find the ideal classifier for a set of images, but we first have to find those images out in the real world somewhere, and the power of our classifier is bounded by the number of images we can find.
If we can specify precise rules for a simulation, and a goal within that simulation, most of that constraint disappears. For example, to find the strongest Go-playing program, we can instantiate all possible Go-playing programs and have them compete until there's an unambiguous winner; we don't need any game records from human players. The same trick works for everything simulatable: Starcraft, Magic: the Gathering, piloting fighter jets, you name it. If you don't want to use the oracle to directly generate a strong AI, you can instead develop accurate-enough simulations of the real-world, and then use the oracle to develop effective agents within those simulations.
Endgame
Ultimately the idea would be to develop a computer model of the laws physics that's as correct and complete as our computer model of the rules of Go, so that you can finally develop nanofactories, anti-aging drugs, and things like that. I don't see how to do it, but it's the only prize worth playing for. At this point it becomes very important to be able prove the Friendliness of every candidate program; use the math oracle you built earlier to develop a framework for that before moving forward.
These are pretty much the same thing. The continuum hypothesis is a case where you have a single formal system in mind ( ZFC ) and have proved that the continuum hypothesis is independent of the axioms.
In the case of the halting problem, you just have a couple of extra quantifiers. For all formal systems that don't prove a contradiction, there exists a Turing machine, such that whether the Turing machine halts or not can't be proved... (read more)