It seems unfair to count this SlowCooperateBot against OpportunisticBot since OB only uses up to PA-2 while Masquerade uses up to PA+4. What if we change OB by replacing its PA-1 and PA-2 with PA-3 and PA-4 respectively? Then we can still create a SlowCooperateBot that OB wrongly cooperates with by changing SCB’s PA+1 to PA+3. But I think we can also create a SlowFairBot that OB rightly cooperates with but Masquerade wrongly defects against (assuming N=4).
def SlowFairBot(X):
- if 2+2=3 is provable in PA-3:
-- return D
- if "X(SlowFairBot)=C" is provable in PA-4:
-- return C
- return D
Looks like the score is even? ETA: Also, I feel like talking about these “Slow” opponents is probably a distraction, and there may be some point to Masquerade that I’m not getting yet. Maybe it will be more apparent when you talk about the generalizations and bargaining problems mentioned in the OP?
As I was saying to cousin_it, it’s instructive to think about what happens when you throw a delay like this at Masquerade: it basically has to wait it out and start from scratch.
Qualitatively, Masquerade needs to go up a few steps before reaching mutual cooperation with FairBot. That kind of delay will make it “start out” at PA+4. Notably, if your SlowFairBot delays to PA+3 but tries to prove cooperation in PA+7, it’ll still work.
I’m willing to accept that sometimes you run out of time to find mutual cooperation and end up mutually defecting. The property that OpportunisticBot has that I don’t like is that it sometimes “regrets it has too much power”- it would have done better on my example if it had stopped searching sooner. That’s not the case for Masquerade.
EDIT: Actually, as Masquerade is written, it would end up with mutual defection here. But if, instead of having all the proof searches capped at the same N, the MaskSearch capped out at a lower (but still sufficiently high) level than SlowFairBot and Masquerade’s sanity check, it would mutually cooperate.
It seems unfair to count this SlowCooperateBot against OpportunisticBot since OB only uses up to PA-2 while Masquerade uses up to PA+4. What if we change OB by replacing its PA-1 and PA-2 with PA-3 and PA-4 respectively? Then we can still create a SlowCooperateBot that OB wrongly cooperates with by changing SCB’s PA+1 to PA+3. But I think we can also create a SlowFairBot that OB rightly cooperates with but Masquerade wrongly defects against (assuming N=4).
Looks like the score is even? ETA: Also, I feel like talking about these “Slow” opponents is probably a distraction, and there may be some point to Masquerade that I’m not getting yet. Maybe it will be more apparent when you talk about the generalizations and bargaining problems mentioned in the OP?
Sorry for the delay.
As I was saying to cousin_it, it’s instructive to think about what happens when you throw a delay like this at Masquerade: it basically has to wait it out and start from scratch.
Qualitatively, Masquerade needs to go up a few steps before reaching mutual cooperation with FairBot. That kind of delay will make it “start out” at PA+4. Notably, if your SlowFairBot delays to PA+3 but tries to prove cooperation in PA+7, it’ll still work.
I’m willing to accept that sometimes you run out of time to find mutual cooperation and end up mutually defecting. The property that OpportunisticBot has that I don’t like is that it sometimes “regrets it has too much power”- it would have done better on my example if it had stopped searching sooner. That’s not the case for Masquerade.
EDIT: Actually, as Masquerade is written, it would end up with mutual defection here. But if, instead of having all the proof searches capped at the same N, the MaskSearch capped out at a lower (but still sufficiently high) level than SlowFairBot and Masquerade’s sanity check, it would mutually cooperate.