EconCSLib.MechanismDesign.Auction.VCG #
Multiple-parameter mechanisms for VCG-style mechanism design.
This file builds the VCG mechanism as a specialization of the
multiple-parameter transfer-mechanism layer from MechanismDesign.Auction.Transfer.
The transfer layer keeps utility external to the mechanism. A mechanism stores
only an allocation rule and a payment rule; quasi-linear DSIC and ex-post IR are
then stated through MechanismWithTransfers.isQuasiLinearDSIC and
MechanismWithTransfers.isQuasiLinearExPostIR.
In the multiple-parameter VCG setting, agent i's type/report is a valuation
function A → ℝ on the allocation space. The VCG allocation maximizes reported
social welfare, and the Clarke-pivot payment charges each agent the externality
imposed on the other agents.
Structure hierarchy #
MechanismWithTransfers I (fun _ => A → ℝ) A ℝ -- valuation reports over A
└─ MultipleParameterMechanism I A ℝ ℝ -- named multiple-parameter layer
└─ VCGMechanism -- efficient allocation + Clarke payments
VCGTransferMechanism -- same rule viewed as MechanismWithTransfers
There exists an allocation maximizing reported social welfare.
Reported social welfare of all agents except i.
Equations
- MultipleParameterMechanism.welfareWithout v i a = ∑ j ∈ Finset.univ.erase i, v j a
Instances For
Social welfare decomposes into agent i's value plus the welfare of the
other agents.
If all valuations are nonnegative, then the welfare of agents other than
i is bounded by total social welfare.
If agent i's valuation is nonnegative, then the welfare of agents other
than i is bounded by total social welfare.
The maximum reported welfare of agents other than i.
Equations
Instances For
There exists an allocation maximizing the reported welfare of agents other
than i.
A welfare-maximizing allocation for agents other than i.
Equations
Instances For
The chosen allocation without agent i maximizes the reported welfare of
the other agents.
The Clarke-pivot VCG payment charged to agent i: the best welfare that
the other agents could get without i, minus the other agents' welfare at the
efficient allocation chosen from all reports.
Equations
Instances For
The finite-allocation VCG mechanism induced by welfare maximization and Clarke-pivot payments.
Equations
- MultipleParameterMechanism.VCGMechanism = { allocationRule := MultipleParameterMechanism.efficientAllocation, paymentRule := MultipleParameterMechanism.vcgPayment }
Instances For
The underlying transfer mechanism of VCGMechanism.
This is the object to which the generic definitions in Transfer.lean, such as
isQuasiLinearDSIC and isQuasiLinearExPostIR, are applied.
Equations
Instances For
VCG utility can be rewritten as total welfare under the profile that uses
agent i's true valuation and keeps all other reports fixed, minus the maximal
welfare achievable by the other agents alone.
If agent i reports truthfully in the VCG mechanism, then their
quasi-linear utility is nonnegative against arbitrary reports by the other
agents, assuming i's true valuation is nonnegative.
The same nonnegative-utility result for the fully truthful report profile.
VCG satisfies the MechanismWithTransfers.isExPostIR predicate under the
ambient assumption that every valuation in the unrestricted type space is
nonnegative. For concrete domains, this assumption is usually enforced by
choosing a nonnegative valuation subtype.
The finite-allocation VCG mechanism is dominant-strategy incentive compatible for quasi-linear utilities.
The final arguments id id instantiate the two conversion maps in
MechanismWithTransfers.isQuasiLinearDSIC:
valueToUtility : ℝ → ℝ, converting valuation values to utilities;paymentToUtility : ℝ → ℝ, converting payments to utilities.
For VCG, values, payments, and utilities all live in ℝ, so both conversions
are the identity map.