← back to vector space proof

Strategyproof.lean

ghView source on GitHub

The DSIC proof: no advertiser can improve their utility by misreporting their bid, center, or sigma — regardless of what others report. Only player i needs to be truthful. The proof is a four-case exhaustion over who wins under truth vs. deviation.

The four cases

The proof splits on two binary questions: does player i win when truthful? Does player i win when deviating? That gives four cases:

Case 1: both win

Utility = trueVal_i - C in both cases, where C = welfareOthersWithout. By welfareOthersWithout_invariant, C doesn't depend on i's report. So utility is identical.

Case 2: truth wins, deviation loses

Truthful utility = trueVal_i - C ≥ 0 by welfareOthersWithout_le_trueVal_of_win: winning truthfully means your value exceeds the externality. Deviated utility = 0 by playerUtility_eq_zero_of_loser. Truth wins.

Case 3: truth loses, deviation wins

Truthful utility = 0. Deviated utility = trueVal_i - C ≤ 0 by trueVal_le_welfareOthersWithout_of_loss: losing truthfully means the externality exceeds your value, and C is invariant. Truth wins again.

Case 4: both lose

Both utilities are 0 by playerUtility_eq_zero_of_loser.

welfareOthersWithout_invariant (payment invariance)

Changing player i's report does not change welfareOthersWithout. The counterfactual welfare with i removed depends only on other players' reports. This is the structural property that makes VCG wpdominant-strategy rather than just wpNash.

theorem welfareOthersWithout_invariant
    (auc : Auction ι E) (i : ι) (r' : Report E) (x : E) :
    welfareOthersWithout (auc.withReport i r') i x =
      welfareOthersWithout auc i x

vcg_dsic

The main result. For any deviation r' that player i might submit, truthful utility ≥ deviated utility. The hypothesis is isTruthful (auc.report i) (auc.valuation i) — only player i needs to be truthful. Others can report anything.

theorem vcg_dsic
    (auc : Auction ι E) (i : ι) (x : E) (r' : Report E)
    (hi : isTruthful (auc.report i) (auc.valuation i)) :
    playerUtility auc i x ≥
      playerUtility (auc.withReport i r') i x

Vickrey (1961) Thm 1, Clarke (1971) §3, Groves (1973) Thm 2. This is the machine-checked version of the DSIC claim in jkVector Space.

Scheme

Corollaries

vcg_strategyproof: when all players are truthful, no single player benefits from deviating. (DSIC implies Nash.)

vcg_is_nash_equilibrium: truthful reporting satisfies the open-game Nash equilibrium condition from OpenGame.lean.

truthful_sigma_is_best_response: even if a player only deviates in sigma (keeping center and bid fixed), truthful sigma is still optimal.

Connections