Efficiency.lean
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
Power 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) 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
- Auction.lean — defines score, trueVal, reportedVal, winner
- Strategyproof.lean — uses
winner_maximizes_reportedValfor the DSIC proof - IntegralEfficiency.lean — lifts
winner_maximizes_welfareto integrals