Given access to the SOURCE of the opponent, you can just RUN the opponent and observe what they’ll do this round.
Main problem: if you’re playing against yourself, this creates an infinite loop of you simulating you simulating you simulating...
Fortunately, it’s often possible to prove things about other programs without running them.
Of course, given, say, 10 seconds to calculate between rounds, the wise opponent just ensures it will take exactly 10 seconds to run their code, that way you can either calculate your own move OR the opponent’s, but not both.
In a Prisoner’s Dilemma, TDT would defect if it couldn’t deduce anything in time about the other player. The only way to achieve mutual cooperation is to make it easy for the other player to deduce what you’re doing in that circumstance. (I’ll cover this in more depth in the TDT section.) This doesn’t mean “always cooperating”, nor does it mean giving up mixed strategies in zero-sum games.
Main problem: if you’re playing against yourself, this creates an infinite loop of you simulating you simulating you simulating...
Fortunately, it’s often possible to prove things about other programs without running them.
In a Prisoner’s Dilemma, TDT would defect if it couldn’t deduce anything in time about the other player. The only way to achieve mutual cooperation is to make it easy for the other player to deduce what you’re doing in that circumstance. (I’ll cover this in more depth in the TDT section.) This doesn’t mean “always cooperating”, nor does it mean giving up mixed strategies in zero-sum games.