Nash Equilibrium Existence

lean4-proofoptimizationvisualization
 finite game,  σ:  ui(σ)ui(σi,σi)  i,σi\forall\text{ finite game},\; \exists \sigma^*:\; u_i(\sigma^*) \ge u_i(\sigma_i', \sigma^*_{-i})\;\forall i, \sigma_i'

Statement

In a finite strategic-form game with players i{1,,n}i \in \{1, \ldots, n\} and finite action sets AiA_i, a mixed Nash equilibrium is a profile of mixed strategies σ=(σ1,,σn)\sigma^* = (\sigma_1^*, \ldots, \sigma_n^*) such that for each player ii:

ui(σ)ui(σi,σi)mixed strategy σi.u_i(\sigma^*) \ge u_i(\sigma_i', \sigma_{-i}^*) \qquad \forall\, \text{mixed strategy } \sigma_i'.

Nash's Theorem (1950): Every finite game has at least one mixed Nash equilibrium.

The proof uses Brouwer's fixed-point theorem: the best-response correspondence has a fixed point.

Rock-Paper-Scissors verification. The uniform distribution (1/3,1/3,1/3)(1/3, 1/3, 1/3) for each player is the unique Nash equilibrium.

Visualization

Rock-Paper-Scissors payoff matrix (row player wins +1, loses -1, ties 0):

           Rock   Paper  Scissors
Rock    [  0      -1      +1  ]
Paper   [ +1       0      -1  ]
Scissors[ -1      +1       0  ]

Equilibrium check for (1/3,1/3,1/3)(1/3, 1/3, 1/3):

If opponent plays (1/3,1/3,1/3)(1/3, 1/3, 1/3), each pure strategy yields expected payoff 0:

  • E[Rock]=01/3+(1)1/3+11/3=0E[\text{Rock}] = 0 \cdot 1/3 + (-1) \cdot 1/3 + 1 \cdot 1/3 = 0
  • E[Paper]=11/3+01/3+(1)1/3=0E[\text{Paper}] = 1 \cdot 1/3 + 0 \cdot 1/3 + (-1) \cdot 1/3 = 0
  • E[Scissors]=(1)1/3+11/3+01/3=0E[\text{Scissors}] = (-1) \cdot 1/3 + 1 \cdot 1/3 + 0 \cdot 1/3 = 0
My actionE[payoff]E[\text{payoff}] against (1/3,1/3,1/3)(1/3,1/3,1/3)
Rock0
Paper0
Scissors0
Mixed (any)0

No deviation is profitable — the uniform mix is a Nash equilibrium.

Proof Sketch

  1. Mixed strategy simplex: each player's mixed strategies form a compact convex set Δ(Ai)\Delta(A_i).
  2. Best-response correspondence: BRi(σi)=argmaxσiui(σi,σi)BR_i(\sigma_{-i}) = \arg\max_{\sigma_i} u_i(\sigma_i, \sigma_{-i}) is a closed, convex-valued correspondence on the compact product simplex.
  3. Kakutani's fixed point: the joint correspondence σBR(σ)\sigma \mapsto BR(\sigma) maps a compact convex set to itself with closed convex values, so it has a fixed point σ\sigma^*.
  4. Fixed point = Nash equilibrium: σBR(σ)\sigma^* \in BR(\sigma^*) means every player is best-responding — the definition of Nash equilibrium.
  5. Mathlib: Mathlib.Topology.MetricSpace.Basic and Mathlib.Topology.Algebra.ContinuousMap contain the ingredients; the full theorem awaits formalisation, but the RPS equilibrium condition is a direct arithmetic fact.

Connections

  • von Neumann Minimaxvon Neumann Minimaxminxmaxyf(x,y)=maxyminxf(x,y)\min_x \max_y f(x,y) = \max_y \min_x f(x,y)For a convex-concave function on compact sets, the min-max and max-min values coincideRead more → — Nash's theorem generalises the minimax theorem from two-player zero-sum to nn-player general-sum games
  • Brouwer Fixed-Point TheoremBrouwer Fixed-Point Theoremf:DnDn continuous    x,  f(x)=xf : D^n \to D^n \text{ continuous} \implies \exists\, x,\; f(x) = xEvery continuous map from a compact convex set to itself has a fixed pointRead more → — Nash's proof relies on Brouwer's (or Kakutani's) fixed point theorem
  • Chebyshev's InequalityChebyshev's InequalityP(Xμkσ)1k2P(|X - \mu| \geq k\sigma) \leq \frac{1}{k^2}A random variable rarely deviates from its mean by more than a few standard deviationsRead more → — mixed strategies over finite supports can be analysed using discrete probability inequalities
  • Cauchy–Schwarz InequalityCauchy–Schwarz Inequalityu,vuv|\langle u, v \rangle| \leq \|u\| \, \|v\|The inner product of two vectors is bounded by the product of their normsRead more → — payoff computations under mixed strategies use inner product structure

Lean4 Proof

import Mathlib.Data.Real.Basic

/-- Verification that the uniform mix (1/3, 1/3, 1/3) is a Nash equilibrium
    for Rock-Paper-Scissors: every pure strategy yields expected payoff 0. -/
theorem rps_uniform_equilibrium :
    (0 : ) * (1/3) + (-1) * (1/3) + 1 * (1/3) = 0 
    (1 : ) * (1/3) + 0  * (1/3) + (-1) * (1/3) = 0 
    ((-1) : ) * (1/3) + 1 * (1/3) + 0 * (1/3) = 0 := by
  norm_num