‘Other authors now have an incentive to include PREFIX in their programs, moving their original logic into the “anythingElse” subroutine. This modification has no downside.’
Not really. Including this prefix makes it impossible to defect against a PREFIX program. It’s still better to exclude the PREFIX and get the other problem to cooperate while you defect, if possible. It is true, though, that this isn’t worthwhile if many programs will never cooperate if you defect, which includes that where anythingElse == Strategy.DEFECT;.
‘Other authors now have an incentive to include PREFIX in their programs, moving their original logic into the “anythingElse” subroutine. This modification has no downside.’
Not really. Including this prefix makes it impossible to defect against a PREFIX program. It’s still better to exclude the PREFIX and get the other problem to cooperate while you defect, if possible. It is true, though, that this isn’t worthwhile if many programs will never cooperate if you defect, which includes that where anythingElse == Strategy.DEFECT;.
Good catch, thanks. You’re right. Upvoted the comment, edited the post.
A weaker statement seems to be true: that the program provided is an evolutionarily stable strategy.