Let me prove activity selection with stays ahead instead of exchange.
Measure of progress: After selecting activities, the end time of the -th activity. Claim: After greedy selects activities, its -th activity ends no later than any optimal solution's -th activity.
If this is true, greedy can always fit at least as many future activities as OPT. So greedy gets at least as many total activities. The earlier you finish, the more room you have for future choices.