Recursion & Reality
What is real? How do you define it?
If you’re talking about what you can feel, what you can smell, what you can taste, and see, then real is simply electrical signals interpreted by your brain.
- Morpheus, The Matrix
We’ve all seen those YouTube videos about how we might be living in a simulation or how maybe we’re in The Matrix.
While, for the most part we all might have to live with the harrowing realisation that everything we are is somehow a program running on a higher being’s computer (of sorts), there might still be hope. When it comes to our reality being the “actual” source of truth, something we know to be true - we have only the hope that no one proves it to be true. That is to say, there’s no concrete evidence that proves we’re in a simulation but there’s also no evidence that proves we aren’t.
We’re like Schrödinger’s cat right now.
All we have is hope that we’re not some simulation playing out a fixed loop of events, with whatever’s happening to us is already doomed to happen. Without us having any control over our actions, all of it planned by someone so that they can observe us. But hope is all we need. As long as we aren’t sure about being in a simulation, we still have a chance that we’re not in a simulation.
Recursion & Reality
Coming to the whole point of this post - recursion in programming and how it affects a program.
What is recursion?
Theoretically it’s defined as - “a method of solving a problem where the solution depends on solutions to smaller instances of the same problem”. What this means is that you can solve a large problem by breaking it down into smaller repetitive pieces. For example, if you had to cut an inverted triangle inside a triangle, like this -
All you’d need to do is breakdown the problem to repetitively cut any new triangle that arises. That’s how you end up with the right most image. If you were to zoom in on any triangle there, you could endlessly create another set of cut traingles!
Now, coming back to how this connects to simulations -
Let’s say I were to build a 1:1 simulation of this reality, then I would essentially be using a lot of computing power, everything tuned perfectly to run with perfect efficiency. Anything that messes up that perfectly tuned system would cause that entire simulation to fail. Just because of this reason, I would go out of my way to make sure that no one in the simulation could ever build another machine that can run a 1:1 simulation.
If someone inside the simulation were to build another 1:1 simulation of their world, this would be similar to recursion. Taking up a lot of the performance, limiting the performance of the original simulation. As you can imagine this becomes a huge problem for me if I let it happen.
This is where the hope comes in - if the reality we’re in is the actual reality, then someone could in theory build a 1:1 simulation - this can even be a mirror world that we’re getting peeks off with VR/AR technologies - proving that we’re not in a simulation*.
*Unless we’re all in isolated simulations (not shared), and also all this would be pointless if there was enough compute power to spare