What’s wrong with “I will cooperate with anyone who verifiably asserts that they cooperate with me”.
The word “me”. By Rice’s theorem, they can’t tell that they’re dealing with someone computationally equivalent to me, and there’s no other sense of my “identity” that can be referred to.
Athough that could be added. Have all competitors choose a unique name and allow them to verifiably claim to be the owner of their name. Then “I will cooperate with anyone who verifiably asserts that they cooperate with me” can work if “me” is understood to mean “the entity with my name”. Discovering a blob’s name would have to be a second primitive operation allowed on blobs.
ETA: I think I missed your point a little. Yes, a cooperate-bot verifiably asserts that it cooperates with everyone, so it is an entity that “verifiably asserts (something that implies) that they will cooperate with me.” And there will be other bots of which this is true. But I’m not sure that I can verifiably express that I will cooperate with the class of all such bots, because “the class of all such bots” looks undecidable.
Your source code is your name. Having an additional name would be irrelevant. It is certainly possible for bots to prove they cooperate with a given bot, by looking at that particular bot’s source. It would, as you say, be much harder for a bot to prove it cooperates with every bot equivalent to a given bot (in the sense of making the same cooperate/defect decisions vs. every opponent).
Rice’s theorem may not be as much of an obstruction as you seem to indicate. For example, Rice’s theorem doesn’t prohibit a bot which proves that it defects against all defectbots, and cooperates with all cooperatebots. Indeed, you can construct an example of such a bot. (Rice’s theorem would, however, prevent constructing a bot which cooperates with cooperatebots and defects against everyone else.)
The word “me”. By Rice’s theorem, they can’t tell that they’re dealing with someone computationally equivalent to me, and there’s no other sense of my “identity” that can be referred to.
Athough that could be added. Have all competitors choose a unique name and allow them to verifiably claim to be the owner of their name. Then “I will cooperate with anyone who verifiably asserts that they cooperate with me” can work if “me” is understood to mean “the entity with my name”. Discovering a blob’s name would have to be a second primitive operation allowed on blobs.
ETA: I think I missed your point a little. Yes, a cooperate-bot verifiably asserts that it cooperates with everyone, so it is an entity that “verifiably asserts (something that implies) that they will cooperate with me.” And there will be other bots of which this is true. But I’m not sure that I can verifiably express that I will cooperate with the class of all such bots, because “the class of all such bots” looks undecidable.
Your source code is your name. Having an additional name would be irrelevant. It is certainly possible for bots to prove they cooperate with a given bot, by looking at that particular bot’s source. It would, as you say, be much harder for a bot to prove it cooperates with every bot equivalent to a given bot (in the sense of making the same cooperate/defect decisions vs. every opponent).
Rice’s theorem may not be as much of an obstruction as you seem to indicate. For example, Rice’s theorem doesn’t prohibit a bot which proves that it defects against all defectbots, and cooperates with all cooperatebots. Indeed, you can construct an example of such a bot. (Rice’s theorem would, however, prevent constructing a bot which cooperates with cooperatebots and defects against everyone else.)