If you don’t recognize your opponent as a copy of yourself because he’s written in C++ and not Java, or because he uses iteration and not recursion, then you’re acting sub-optimally (unless those things matter of course!).
In any cliquing strategy, you (the player) want to submit a bot that always defects against a bot that is not functionally equivalent to itself: this is crucial to guarantee the stability of the Nash equilibrium that you hope to reach.
You also want your bot to cooperate with any bot it can prove to be functionally equivalent to itself, and to always compute an answer in a finite time.
Due to Rice’s theorem , functional equivalence is a semidecidable property, therefore you need to use a stronger, decidable, equivalence relation that underestimates, but never overestimates, functional equivalence. Textual equality is the most obvious of such relations. You can invent many more weaker equivalence relations that still guarantee functional equivalence, but they would add complexity to your bot and presumbly make coordination with the other player more difficult, therefore it is not an obvious choice to use any of them.
Once you have chosen to use a cliquing strategy, you still have to choose between (infinitely) many cliques, therefore you face a “choosing sides” coordination game with the other player. This a non-trivial problem, but fortunately it is easier than the original game.
Being strict in recognizing the other is a feature, not a bug. You want to obtain a stable Nash equilibrium.
If you don’t recognize your opponent as a copy of yourself because he’s written in C++ and not Java, or because he uses iteration and not recursion, then you’re acting sub-optimally (unless those things matter of course!).
Don’t conflate the player with the bot.
In any cliquing strategy, you (the player) want to submit a bot that always defects against a bot that is not functionally equivalent to itself: this is crucial to guarantee the stability of the Nash equilibrium that you hope to reach.
You also want your bot to cooperate with any bot it can prove to be functionally equivalent to itself, and to always compute an answer in a finite time. Due to Rice’s theorem , functional equivalence is a semidecidable property, therefore you need to use a stronger, decidable, equivalence relation that underestimates, but never overestimates, functional equivalence.
Textual equality is the most obvious of such relations. You can invent many more weaker equivalence relations that still guarantee functional equivalence, but they would add complexity to your bot and presumbly make coordination with the other player more difficult, therefore it is not an obvious choice to use any of them.
Once you have chosen to use a cliquing strategy, you still have to choose between (infinitely) many cliques, therefore you face a “choosing sides” coordination game with the other player. This a non-trivial problem, but fortunately it is easier than the original game.