# Time loop logic

**Time loop logic** is a system of computation that requires the computer to be able to send data

backwards through time, and relies upon the

Novikov self-consistency principle to force the result of a computation sent backwards through time to be correct. This approach can overcome many limitations on traditional algorithmic complexity.

A program exploiting time loop logic can be quite simple in outline. For example, to find a factor for a large number:

- wait for the result to be transmitted from the future.
- upon receiving the result, test whether it is a factor by dividing the input number by it.
- if the received result is indeed a correct factor of the number, send the result back in time.
- else if the received result is
*not* a correct factor of the number (or no result is received at all within the desired timeframe), generate a number different from the received result and send it back in time. Note that this results in a paradox, since the result sent back is not the same as the one that was received.

Since the Novikov principle states that it is impossible for any sequence of events to result in a paradox, the second clause of the conditional statement can never happen and the result sent from the future is guaranteed to be the correct one. If no result is possible - the subject number is

prime, for example - then some event will occur to prevent the program from running in the first place, or prevent it from running correctly. An event that prevents the program from running in the first place would also satisfy Novikov's principle even if a correct result does exist, so it is important to limit the opportunities for such errors so that the "most likely" way the system will remain consistent is to provide the correct result as desired.

Of course, time loop logic is a purely theoretical exercise at this point. It is not known whether time travel is possible, or if it is whether Novikov's principle really applies to it.