Documentation

FLT_Proofs.PureMath.ApproxMinimax

Approximate Minimax for Finite Boolean Games #

Infrastructure for the minimax theorem in finite Boolean games: PMF construction utilities, payoff analysis, covering arguments, and MWU potential bounds.

Main definitions #

Main results #

References #

PMF Construction Utilities #

noncomputable def normalizeToPMF {C : Type u_1} [Fintype C] [Nonempty C] (w : C) (hw : ∀ (c : C), 0 < w c) :

Normalize a strictly positive weight vector to a FinitePMF.

Equations
  • normalizeToPMF w hw = { prob := fun (c : C) => w c / c' : C, w c', prob_nonneg := , prob_sum_one := }
Instances For
    theorem normalizeToPMF_prob {C : Type u_1} [Fintype C] [Nonempty C] (w : C) (hw : ∀ (c : C), 0 < w c) (c : C) :
    (normalizeToPMF w hw).prob c = w c / c' : C, w c'
    def pointMassPMF {C : Type u_1} [Fintype C] [DecidableEq C] (c₀ : C) :

    Point mass PMF at a single element.

    Equations
    Instances For
      noncomputable def uniformPMF (C : Type u_1) [Fintype C] [Nonempty C] :

      Uniform PMF over a nonempty Fintype.

      Equations
      Instances For
        noncomputable def empiricalPMF {α : Type u_1} [Fintype α] [DecidableEq α] {T : } (hT : 0 < T) (rs : Fin Tα) :

        Build FinitePMF from empirical frequencies of a finite sequence.

        Equations
        • empiricalPMF hT rs = { prob := fun (a : α) => {t : Fin T | rs t = a}.card / T, prob_nonneg := , prob_sum_one := }
        Instances For

          Boolean Game Payoff #

          def boolGamePayoff {R : Type u_1} {C : Type u_2} [Fintype R] (M : RCBool) (p : FinitePMF R) (c : C) :

          Expected payoff of distribution p against column c in a Boolean game.

          Equations
          Instances For
            theorem boolGamePayoff_nonneg {R : Type u_1} {C : Type u_2} [Fintype R] (M : RCBool) (p : FinitePMF R) (c : C) :
            theorem boolGamePayoff_le_one {R : Type u_1} {C : Type u_2} [Fintype R] (M : RCBool) (p : FinitePMF R) (c : C) :
            theorem boolGamePayoff_pointMass {R : Type u_1} {C : Type u_2} [Fintype R] [DecidableEq R] (M : RCBool) (r₀ : R) (c : C) :
            boolGamePayoff M (pointMassPMF r₀) c = if M r₀ c = true then 1 else 0

            Point mass payoff equals the game value at that row-column pair.

            theorem minimax_value_le_one {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] (M : RCBool) (v : ) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) :
            v 1

            The minimax value of a Boolean game is at most 1.

            Covering Row Lemma #

            theorem exists_covering_row {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [DecidableEq C] [Nonempty C] (M : RCBool) (v : ) (hv : 0 < v) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (c₀ : C) :
            ∃ (r : R), M r c₀ = true

            If minimax value > 0, every column has a row with M(r,c) = true.

            Covering Minimax Theorem #

            theorem covering_minimax {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] [DecidableEq R] [DecidableEq C] (M : RCBool) (v : ) (hv : 0 < v) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) :
            ∃ (p : FinitePMF R), ∀ (c : C), 1 / (Fintype.card C) boolGamePayoff M p c

            Covering-based minimax: if the minimax value > 0, there exists a row distribution with payoff ≥ 1/|C| against every column.

            Proof: for each column c, pick a row r_c with M(r_c, c) = true (guaranteed by exists_covering_row). The empirical distribution of these rows gives payoff ≥ 1/|C| against every column, since each column c₀ is covered by at least one row (namely r_c₀).

            Approximate Minimax Theorem #

            theorem finite_approx_minimax {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] [Nonempty R] [DecidableEq R] [DecidableEq C] (M : RCBool) (v ε : ) ( : 0 < ε) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (hε_feasible : v - ε 1 / (Fintype.card C)) :
            ∃ (p : FinitePMF R), ∀ (c : C), v - ε boolGamePayoff M p c

            Approximate minimax for finite Boolean games.

            If for every column mixture q, the row player has a pure best response with expected payoff ≥ v, then there exists a row mixture p such that every pure column gets payoff ≥ v - ε.

            This version uses the covering argument (payoff ≥ 1/|C| for all columns) combined with the feasibility condition v - ε ≤ 1/|C|.

            MWU Infrastructure #

            Multiplicative Weights Update state and potential analysis. The potential bound is the core analytic result: after T rounds, Φ_T ≤ |C| · (1 - ηv)^T.

            structure MWUConfig (C : Type u_1) [Fintype C] :
            Type u_1

            MWU config: weight vector with positivity proof.

            • weights : C
            • weights_pos (c : C) : 0 < self.weights c
            Instances For
              def MWUConfig.potential {C : Type u_1} [Fintype C] (cfg : MWUConfig C) :

              Potential = sum of weights.

              Equations
              Instances For
                theorem MWUConfig.potential_pos {C : Type u_1} [Fintype C] [Nonempty C] (cfg : MWUConfig C) :
                0 < cfg.potential
                def mwuInit (C : Type u_1) [Fintype C] :

                Initial config: all weights = 1.

                Equations
                • mwuInit C = { weights := fun (x : C) => 1, weights_pos := }
                Instances For
                  noncomputable def MWUConfig.toPMF {C : Type u_1} [Fintype C] [Nonempty C] (cfg : MWUConfig C) :

                  Normalize config to PMF.

                  Equations
                  Instances For
                    def mwuUpdateWeights {C : Type u_1} [Fintype C] {R : Type u_2} (M : RCBool) (η : ) (hη1 : η < 1) (cfg : MWUConfig C) (r : R) :

                    One MWU update step on weights.

                    Equations
                    Instances For
                      theorem best_response_payoff_weights {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] (M : RCBool) (v : ) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (cfg : MWUConfig C) :
                      v * cfg.potential c : C, cfg.weights c * if M .choose c = true then 1 else 0

                      Best response payoff ≥ v · Φ in terms of weights.

                      theorem potential_one_step_bound {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] (M : RCBool) (η : ) ( : 0 η) (hη1 : η < 1) (v : ) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (cfg : MWUConfig C) :
                      (mwuUpdateWeights M η hη1 cfg .choose).potential cfg.potential * (1 - η * v)

                      Potential bound after one step: Φ' ≤ Φ · (1 - η·v).

                      def mwuRun {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] (M : RCBool) (η : ) (hη1 : η < 1) (v : ) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (T : ) :
                      MWUConfig C × (Fin TR)

                      MWU run: iterate T steps, returning final config and row sequence.

                      Equations
                      Instances For
                        @[reducible, inline]
                        noncomputable abbrev mwuConfig {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] (M : RCBool) (η : ) (hη1 : η < 1) (v : ) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (T : ) :

                        The MWU config after T steps.

                        Equations
                        Instances For
                          @[reducible, inline]
                          noncomputable abbrev mwuRows {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] (M : RCBool) (η : ) (hη1 : η < 1) (v : ) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (T : ) :
                          Fin TR

                          The MWU row sequence after T steps.

                          Equations
                          Instances For
                            theorem mwu_potential_T_bound {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty C] (M : RCBool) (η : ) ( : 0 η) (hη1 : η < 1) (v : ) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) (T : ) :
                            (mwuConfig M η hη1 v hrow T).potential (Fintype.card C) * (1 - η * v) ^ T

                            Potential bound after T steps: Φ_T ≤ |C| · (1 - ηv)^T.

                            This is the core MWU guarantee. Combined with individual weight lower bounds (w_T(c) = (1-η)^{losses(c)}), it yields the regret bound.

                            MWU Individual Weight Tracking + Regret Extraction #

                            theorem mwu_approx_minimax {R : Type u_1} {C : Type u_2} [Fintype R] [Fintype C] [Nonempty R] [Nonempty C] [DecidableEq R] [DecidableEq C] (M : RCBool) (v ε : ) ( : 0 < ε) (hrow : ∀ (q : FinitePMF C), ∃ (r : R), v c : C, q.prob c * if M r c = true then 1 else 0) :
                            ∃ (p : FinitePMF R), ∀ (c : C), v - ε boolGamePayoff M p c

                            Genuine approximate minimax via MWU regret extraction. If every column mixture admits a pure row with expected payoff ≥ v, then there is a row mixture with payoff ≥ v - ε against every column.