EconCSLib.GameTheory.StrategicGame.ZeroSum.StrongComplementarity #
Formalises matrix-game strong complementarity [MFoGT Prop. 2.4.1(c)]:
for a finite zero-sum matrix game A : I → J → ℝ, there exists an
optimal pair (xx*, yy*) ∈ X(A) × Y(A) such that
The forward direction is support_complementarity_row/column and holds
for every optimal pair. The reverse direction comes from LP strong CS
(EconCSLib.LinearProgramming.exists_strong_complementary_pair)
applied to the shifted matrix-game LP.
Proof outline #
- Shift: define
KsoA' i j := A.g i j + K > 0for everyi, j. The shifted value isv' := A.value + K > 0. - LP setup: the row LP for the shifted game is
min ∑ x'_isubject to(A'ᵀ x')_j ≥ 1andx' ≥ 0. Optimalx'rescales toxx = x' · v'(a mixed strategy). - Optimal LP pair: from a matrix-game optimal pair
(xx₀, yy₀)(existence viaMatrixGame.exists_mixed_nash_equilibrium), setx'₀ := xx₀ / v',u'₀ := yy₀ / v'. Both have LP objective1/v'. - Apply LP strong CS: gives a strong-CS optimal pair
(x'*, u'*). - Rescale and biconditional:
xx* := x'* · v',yy* := u'* · v'. The LP strict CS conditions translate to the matrix-game biconditional via(A'ᵀ xx*)_j = A.Ej xx* j + Kandv' = A.value + K. Specifically:
The LP theorem indexes primal variables by Fin n; we bridge to
Fintype I via Fintype.equivFin I (a Fintype.sum_equiv adapter).
The index types are constrained to Type (= Type 0) so the
universe inference for Fintype.sum_equiv matches ℝ : Type 0.
Blueprint #
docs/knowledge/nodes/zero_sum/strong_complementarity.md
Matrix-game strong complementarity [MFoGT Prop. 2.4.1(c)].
There exists an optimal pair (xx, yy) ∈ X(A) × Y(A) such that for every
row i, xx_i > 0 ↔ A.Ei i yy = A.value, and for every column j,
yy_j > 0 ↔ A.Ej xx j = A.value.
The forward direction is support_complementarity_row/column. The
reverse direction comes from LP strong complementarity
(EconCSLib.LinearProgramming.exists_strong_complementary_pair)
applied to the shifted matrix-game LP. See module docstring for the
detailed proof outline.