Documentation

EconCSLib.MechanismDesign.Auction.VCG

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
def MultipleParameterMechanism.socialWelfare {I : Type u_1} {A : Type u_2} [Fintype I] (v : IValuation A ) (a : A) :

Reported social welfare of allocation a under a profile of valuations.

Equations
Instances For
    noncomputable def MultipleParameterMechanism.maxSocialWelfare {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] (v : IValuation A ) :

    The maximum reported social welfare over all allocations.

    Equations
    Instances For
      theorem MultipleParameterMechanism.exists_efficientAllocation {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] (v : IValuation A ) :
      ∃ (a : A), ∀ (b : A), socialWelfare v b socialWelfare v a

      There exists an allocation maximizing reported social welfare.

      noncomputable def MultipleParameterMechanism.efficientAllocation {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] (v : IValuation A ) :
      A

      A welfare-maximizing allocation, chosen noncomputably from finite A.

      Equations
      Instances For

        The chosen VCG allocation maximizes reported social welfare.

        def MultipleParameterMechanism.welfareWithout {I : Type u_1} {A : Type u_2} [Fintype I] [DecidableEq I] (v : IValuation A ) (i : I) (a : A) :

        Reported social welfare of all agents except i.

        Equations
        Instances For
          theorem MultipleParameterMechanism.socialWelfare_eq_value_add_welfareWithout {I : Type u_1} {A : Type u_2} [Fintype I] [DecidableEq I] (v : IValuation A ) (i : I) (a : A) :

          Social welfare decomposes into agent i's value plus the welfare of the other agents.

          theorem MultipleParameterMechanism.welfareWithout_le_socialWelfare {I : Type u_1} {A : Type u_2} [Fintype I] [DecidableEq I] (v : IValuation A ) (hnonneg : ∀ (i : I) (a : A), 0 v i a) (i : I) (a : A) :

          If all valuations are nonnegative, then the welfare of agents other than i is bounded by total social welfare.

          theorem MultipleParameterMechanism.welfareWithout_le_socialWelfare_of_nonneg_i {I : Type u_1} {A : Type u_2} [Fintype I] [DecidableEq I] (v : IValuation A ) (i : I) (hi_nonneg : ∀ (a : A), 0 v i a) (a : A) :

          If agent i's valuation is nonnegative, then the welfare of agents other than i is bounded by total social welfare.

          theorem MultipleParameterMechanism.welfareWithout_update_self {I : Type u_1} {A : Type u_2} [Fintype I] [DecidableEq I] (v : IValuation A ) (i : I) (report : Valuation A ) (a : A) :

          Changing agent i's report does not change the welfare of agents other than i.

          noncomputable def MultipleParameterMechanism.maxWelfareWithout {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] [DecidableEq I] (v : IValuation A ) (i : I) :

          The maximum reported welfare of agents other than i.

          Equations
          Instances For

            Changing agent i's report does not change the maximum welfare achievable by the other agents.

            theorem MultipleParameterMechanism.exists_withoutAllocation {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] [DecidableEq I] (v : IValuation A ) (i : I) :
            ∃ (a : A), ∀ (b : A), welfareWithout v i b welfareWithout v i a

            There exists an allocation maximizing the reported welfare of agents other than i.

            noncomputable def MultipleParameterMechanism.withoutAllocation {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] [DecidableEq I] (v : IValuation A ) (i : I) :
            A

            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.

              noncomputable def MultipleParameterMechanism.vcgPayment {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] [DecidableEq I] (v : IValuation A ) (i : I) :

              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
                Instances For
                  noncomputable def MultipleParameterMechanism.VCGTransferMechanism {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] [DecidableEq I] :
                  MechanismWithTransfers I (fun (x : I) => Valuation A ) A

                  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.

                    theorem MultipleParameterMechanism.VCGMechanism_truthful_quasiLinearUtility_nonneg {I : Type u_1} {A : Type u_2} [Fintype I] [Fintype A] [Nonempty A] [DecidableEq I] (v : IValuation A ) (hnonneg : ∀ (i : I) (a : A), 0 v i a) (i : I) (r : IValuation A ) :

                    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:

                    For VCG, values, payments, and utilities all live in , so both conversions are the identity map.