Introduction

Two suspects sit in separate rooms. Each can cooperate (stay silent) or defect (betray the other). If both stay silent, both get a light sentence. If one betrays, they go free while the other faces the maximum penalty. If both betray, both suffer a moderate sentence.

Played once, the logic is merciless: defect, whatever the other player does. This is the prisoner's dilemma — one of the most famous puzzles in game theory, studied by John Nash and many others. The unique Nash equilibrium of the one-shot game is mutual defection, even though mutual cooperation would leave both players better off.

Now repeat the game, day after day, with no fixed end date. Suddenly the calculus changes. A betrayal today earns a short-term gain but invites retaliation tomorrow. The shadow of the future makes patience pay.

The folk theorem captures this precisely: for any discount factor close enough to one — players who care enough about future payoffs — almost any outcome that is individually rational and feasible can be sustained as a Nash equilibrium through credible threats. It is called "folk" because the result was known informally among game theorists before anyone pinned down a formal proof; Aumann and Shapley gave the key formalization in the 1970s and 1990s.

The theorem does not say cooperation will happen. It says that once the game repeats, cooperation can be an equilibrium — alongside countless other outcomes. Repetition turns a one-outcome game into a landscape of possibilities.

Try It: Grim Trigger

In the demo below, you play repeated rounds of the prisoner's dilemma against a grim-trigger opponent. Grim trigger cooperates as long as you cooperate — but the moment you defect once, it defects forever.

<div class="controls">
  <label>{{discount_label}} <span id="delta-val">0.90</span>
    <input type="range" id="delta" min="0.50" max="0.99" step="0.01" value="0.90">
  </label>
  <button id="coop-btn" type="button">{{btn_cooperate}}</button>
  <button id="defect-btn" type="button" class="defect">{{btn_defect}}</button>
  <button id="reset-btn" type="button" class="ghost">{{btn_restart}}</button>
</div>
<div class="payoff-table">
  <div class="pt-title">{{payoff_title}}</div>
  <table>
    <thead><tr><th></th><th>{{th_opp_cooperate}}</th><th>{{th_opp_defect}}</th></tr></thead>
    <tbody>
      <tr><th>{{th_you_cooperate}}</th><td id="cc" class="hi">3 / 3</td><td id="cd">0 / 5</td></tr>
      <tr><th>{{th_you_defect}}</th><td id="dc">5 / 0</td><td id="dd">1 / 1</td></tr>
    </tbody>
  </table>
</div>
<div class="history" id="history"></div>
<div class="stats">
  <div class="stat"><span class="label">{{stat_my_score}}</span><span id="my-score">0</span></div>
  <div class="stat"><span class="label">{{stat_opp_score}}</span><span id="opp-score">0</span></div>
  <div class="stat"><span class="label">{{stat_round}}</span><span id="round">0</span></div>
  <div class="stat eq-status"><span class="label">{{stat_eq_label}}</span><span id="eq-status">–</span></div>
</div>
<div class="theorem-box" id="theorem-box"></div>
* { box-sizing: border-box; }
body { font-family: system-ui, sans-serif; color: #222; margin: 0; font-size: 14px; }
.controls { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-bottom: .8rem; }
.controls label { display: flex; align-items: center; gap: .4rem; font-size: .85rem; white-space: nowrap; }
input[type=range] { width: 120px; cursor: pointer; }
button { font: 600 13px system-ui; padding: .4rem .85rem; border-radius: 7px; cursor: pointer; border: 1px solid #1d3557; background: #1d3557; color: #fff; }
button.defect { background: #c92f3c; border-color: #a8202c; }
button.ghost { background: #fff; color: #555; border-color: #bbb; }
.payoff-table { margin-bottom: .7rem; }
.pt-title { font-size: .78rem; color: #666; margin-bottom: .3rem; }
table { border-collapse: collapse; font-size: .82rem; }
th { font-weight: 600; padding: .3rem .55rem; background: #f0f4f8; border: 1px solid #cdd9e3; }
td { padding: .3rem .55rem; border: 1px solid #cdd9e3; text-align: center; }
td.hi { background: #d4f0de; font-weight: 700; }
.history { min-height: 56px; max-height: 80px; overflow-y: auto; display: flex; flex-wrap: wrap; gap: 3px; margin-bottom: .7rem; align-content: flex-start; }
.round-chip { padding: 2px 7px; border-radius: 12px; font-size: .78rem; font-weight: 600; }
.chip-cc { background: #d4f0de; color: #0a7d33; }
.chip-cd { background: #fde8e9; color: #9b1f2a; }
.chip-dc { background: #fff0cc; color: #7d5800; }
.chip-dd { background: #ebe9e9; color: #555; }
.stats { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: .6rem; }
.stat { display: flex; flex-direction: column; align-items: center; background: #f6f8fb; border: 1px solid #dde3ea; border-radius: 8px; padding: .35rem .65rem; min-width: 80px; }
.stat .label { font-size: .7rem; color: #666; text-align: center; }
.stat span:last-child { font-size: 1.1rem; font-weight: 700; }
.eq-status span:last-child.yes { color: #0a7d33; }
.eq-status span:last-child.no { color: #c92f3c; }
.theorem-box { background: #eef3fb; border-left: 4px solid #1d3557; border-radius: 6px; padding: .5rem .75rem; font-size: .82rem; line-height: 1.5; color: #1d3557; }
// Code not found

Adjust the discount factor δ\delta (how much you value tomorrow versus today). The folk theorem predicts cooperation is an equilibrium when δTRTP\delta \ge \frac{T - R}{T - P}, where RR is the reward for mutual cooperation, TT is the temptation to defect, and PP is the punishment for mutual defection. Watch the running payoffs to feel when defection stops being worth it.

The Real Math

The folk theorem is a proven result — not a conjecture, not an approximation. Here is the precise claim:

Let G be any finite stage game and let v* be any feasible payoff vector in G that gives every player strictly more than their minimax value (the lowest the other players can force on them). Then there exists a discount factor δ<1\delta^* < 1 such that for all δ(δ,1)\delta \in (\delta^*, 1), the payoff vector v* is the average payoff of a subgame-perfect Nash equilibrium of the infinitely repeated game.

Three concepts are doing the heavy lifting:

  • Feasibility: the target payoffs can be achieved by some mixture of play — they lie inside the convex hull of the one-shot payoffs.
  • Individual rationality: each player's payoff must exceed what opponents can guarantee they will never exceed (the minimax value). Below this floor, a player always has an incentive to deviate.
  • Discount factor δ\delta: a player who discounts the future heavily (small δ\delta) cares mostly about today and will happily defect for a short-term gain. As δ1\delta \to 1, the future matters as much as the present, and the threat of perpetual punishment becomes crushing.

The punishment strategy at the heart of all proofs is the key: if any player deviates, opponents permanently switch to an action that holds the deviator to their minimax value. Because the deviator loses all future surplus, deviation is not worth it when δ is high enough.

The subgame-perfect version (Fudenberg & Maskin, 1986) requires the punishment to itself be an equilibrium — players must actually want to carry out the threat. This stronger result uses more complex "stick-and-carrot" strategies but still covers essentially the same payoff set.

The theorem is a solved result in game theory. It is not an open problem — it is a cornerstone, proven rigorously for both Nash equilibria (Aumann & Shapley, 1970s) and subgame-perfect equilibria (Fudenberg & Maskin, 1986). The hard open questions in repeated games concern computational complexity: computing the equilibrium payoff set or finding an optimal strategy is often computationally intractable, linking the area to problems studied in P vs NP.

Where It Matters

The folk theorem is not abstract philosophy — it explains cooperation across an enormous range of human and algorithmic settings:

  • Cartels and oligopolies: firms that repeatedly interact can tacitly sustain prices above the competitive level without explicit agreements. OPEC's cohesion depends on this logic. Antitrust regulators study repeated-game theory precisely because of it.
  • International agreements: countries have no global enforcer, yet they maintain trade agreements, arms control treaties and climate accords. The folk theorem explains why: the threat of reverting to a worse equilibrium keeps parties in line.
  • Social norms and reputation: "I scratch your back, you scratch mine" is folk-theorem cooperation. Communities sustain norms of fairness, reciprocity, and honesty through the implicit threat of social exclusion — a grim-trigger strategy played out socially.
  • Internet routing and auctions: autonomous systems (internet routers) cooperate to share traffic even without a central authority. Repeated-game incentives keep ISPs from rerouting maliciously. Similarly, repeated auctions and procurement markets reward honest reporting.
  • Mechanism design: understanding what outcomes can be sustained as equilibria (the folk theorem's answer: almost anything individually rational) tells mechanism designers which outcomes cannot be implemented without strong enforcement.

The folk theorem also has limits. It requires players to observe each other's actions (or nearly so), to have a common understanding of the future, and to discount the future at a similar rate. When monitoring is imperfect, the set of equilibria shrinks. When the game has a known finite horizon, the logic unravels by backward induction — if the last round is a one-shot game with a unique equilibrium, cooperation cannot be sustained even one round before. Finite repetition is a genuinely different beast from infinite or indefinite repetition.

Related results in strategic complexity include the study of Nash equilibria in one-shot games and the hardness of computing equilibria.

Conclusion

The prisoner's dilemma seems to doom cooperation. Betray and you come out ahead, whatever the other player does. Yet every day, humans cooperate — in business, in diplomacy, in friendship, in the norms that hold communities together.

The folk theorem resolves the paradox. It does not require altruism, law, or enforcement. It requires only that the game repeats and players care about the future. Under those conditions, the shadow of tomorrow is enough: any threat of punishment becomes credible, and cooperation becomes rational.

The theorem tells us something profound about the structure of strategic interaction: the one-shot game is a degenerate special case. Real life is repeated, and in repeated games cooperation is not naive — it is equilibrium.

The next time a colleague keeps their word, a country honors a treaty, or a router forwards your packets honestly, you are watching the folk theorem in action — rational agents, caring about tomorrow, choosing cooperation because the alternative invites a punishment that is not worth bearing.

Share this article

Pick a channel — or use your device's native share sheet.

Comments

Loading comments...

https://www.kipuhub.com/en/article/repeated-games-folk-theorem/Content licensed under CC BY-NC 4.0.