← back to vector space proof

Efficiency.lean

ghView source on GitHub

Two algebraic bridges connect the scoring rule to welfare maximization. The first needs truthfulness; the second doesn't. That asymmetry is the engine of the entire proof — and the formal version of the argument in jkPower Diagrams for Ad Auctions.

isTruthful / allTruthful

A report is truthful when it matches the player's private valuation: same center, same sigma, bid equals true value. allTruthful extends this to every player.

def isTruthful (r : Report E) (v : Valuation E) : Prop :=
  r.center = v.center ∧ r.sigma = v.trueSigma ∧ r.bid = v.trueValue

score_eq_log_trueVal (Bridge 1: truthful)

Under truthful reporting, score_i(x) = log(trueVal_i(x)). The scoring function is the log of the value function when reports are honest. Since log is monotone, maximizing score is the same as maximizing value.

theorem score_eq_log_trueVal (r : Report E) (v : Valuation E) (x : E)
    (h : isTruthful r v) :
    score r x = Real.log (trueVal v x)

The proof: substitute the truthful equalities into the score definition, use log(a · exp(b)) = log(a) + b from Mathlib. Pure algebra.

score_eq_log_reportedVal (Bridge 2: unconditional)

score = log(reportedVal) always — no truthfulness needed. The mechanism always maximizes reported welfare. Only the truthful player aligns reported with true welfare. This is the key to DSIC.

theorem score_eq_log_reportedVal (r : Report E) (x : E) :
    score r x = Real.log (reportedVal r x)
Scheme

winner_maximizes_reportedVal

For any player j, the winner's reported value is at least j's reported value. Follows from Bridge 2 plus the argmax definition of winner. No truthfulness required.

theorem winner_maximizes_reportedVal (auc : Auction ι E) (x : E) (j : ι) :
    reportedVal (auc.report (winner auc x)) x ≥
      reportedVal (auc.report j) x

winner_maximizes_welfare

Under truthful reporting, the winner at each query point achieves the highest true value among all players. This is the pointwise welfare-maximization result. The proof chain: argmax of score → argmax of log(trueVal) via Bridge 1 → argmax of trueVal by monotonicity of log.

theorem winner_maximizes_welfare (auc : Auction ι E) (x : E)
    (htruth : allTruthful auc) (j : ι) :
    trueVal (auc.valuation (winner auc x)) x ≥
      trueVal (auc.valuation j) x

This is the result that lifts to integrated welfare in IntegralEfficiency.lean.

Connections