But the neatest test of the hypothesis would be to crash the system that runs our simulation. Naturally, that sounds a bit ill-advised, but if we’re all virtual entities anyway does it really matter? Presumably a quick reboot and restore might bring us back online as if nothing had happened, but possibly we’d be able to tell, or at very least have a few microseconds of triumph just before it all shuts down.
The question is: how do you bring down a simulation of reality from inside it? The most obvious strategy would be to try to cause the equivalent of a stack overflow—asking for more space in the active memory of a program than is available—by creating an infinitely, or at least excessively, recursive process. And the way to do that would be to build our own simulated realities, designed so that within those virtual worlds are entities creating their version of a simulated reality, which is in turn doing the same, and so on all the way down the rabbit hole. If all of this worked, the universe as we know it might crash, revealing itself as a mirage just as we winked out of existence.
You could argue that any species capable of simulating a reality (likely similar to its own) would surely anticipate this eventuality and build in some safeguards to prevent it happening. For instance, we might discover that it is strangely and inexplicably impossible to actually make simulated universes of our own, no matter how powerful our computational systems are—whether generalized quantum computers or otherwise. That in itself could be a sign that we already exist inside a simulation. Of course, the original programmers might have anticipated that scenario too and found some way to trick us, perhaps just streaming us information from other simulation runs rather than letting us run our own.