Documentation

EconCSLib.MechanismDesign.Auction.Transfer

EconCSLib.MechanismDesign.Auction.Transfer #

Mechanisms with monetary transfers.

Design #

This file separates the roles that were previously collapsed into one scalar type:

The transfer mechanism itself stores only an allocation rule and a payment rule. Utility construction is external: quasi-linearity is one important specialization, but it is not baked into the most general structure.

Structure hierarchy #

Mechanism I T O                                  -- outcome-only direct mechanism
  └─ MechanismWithTransfers I T A P              -- allocation + payment rules
       └─ SingleParameterMechanism I R           -- T i = R, A = I → R, P = R

MechanismWithTransfers I (fun _ => A → V) A P    -- valuation reports over A
  └─ MultipleParameterMechanism I A V P          -- named multiple-parameter layer

Main definitions #

References #

structure MechanismWithTransfers (I : Type u_1) (T : IType u_2) (A : Type u_3) (P : Type u_4) :
Type (max (max (max u_1 u_2) u_3) u_4)

A mechanism with monetary transfers.

  • I — agents
  • T — report/type space of each agent
  • A — allocation space
  • P — payment space

The mechanism stores only how reports determine allocations and payments. Utility is imposed later, for example by quasi-linear utility or some richer domain-specific construction.

  • allocationRule : ((i : I) → T i)A

    The allocation rule: given reports, choose an allocation.

  • paymentRule : ((i : I) → T i)IP

    The payment rule: given reports, determine each agent's payment.

Instances For
    def MechanismWithTransfers.quasiLinearUtility {I : Type u_1} {T : IType u_2} {A : Type u_3} {P : Type u_4} {V : Type u_5} {U : Type u_6} (M : MechanismWithTransfers I T A P) [Sub U] (val : A((i : I) → T i)IV) (valueToUtility : VU) (paymentToUtility : PU) (r trueTypes : (i : I) → T i) (i : I) :
    U

    Quasi-linear utility induced by:

    • a valuation function on allocations
    • an embedding of payments into utility space
    • subtraction in the utility space

    This permits, for example:

    • V = U with identity payment embedding
    • valuation codomains and payment codomains that differ but both map into U.
    Equations
    Instances For
      def MechanismWithTransfers.toMechanism {I : Type u_1} {T : IType u_2} {A : Type u_3} {P : Type u_4} (M : MechanismWithTransfers I T A P) :
      Mechanism I T (A × (IP))

      Viewing MechanismWithTransfers as a general Mechanism.

      The outcome type is A × (I → P) (allocation, payment vector).

      Equations
      Instances For
        def MechanismWithTransfers.toStrategicGame {I : Type u_1} {T : IType u_2} {A : Type u_3} {P : Type u_4} {U : Type u_6} (M : MechanismWithTransfers I T A P) (u : A(IP)((i : I) → T i)IU) (trueTypes : (i : I) → T i) :

        The strategic game induced by a transfer mechanism and an external utility rule.

        Utility is supplied as a function of:

        • allocation
        • payment vector
        • true type profile
        • agent index
        Equations
        Instances For
          def MechanismWithTransfers.isDSIC {I : Type u_1} [DecidableEq I] {T : IType u_2} {A : Type u_3} {P : Type u_4} {U : Type u_6} (M : MechanismWithTransfers I T A P) [Preorder U] (u : A(IP)((i : I) → T i)IU) :

          DSIC for a mechanism with transfers, relative to an externally supplied utility rule.

          Equations
          Instances For
            def MechanismWithTransfers.isExPostIR {I : Type u_1} [DecidableEq I] {T : IType u_2} {A : Type u_3} {P : Type u_4} {U : Type u_6} (M : MechanismWithTransfers I T A P) [Preorder U] [Zero U] (u : A(IP)((i : I) → T i)IU) :

            Ex-post individual rationality for a mechanism with transfers, relative to an externally supplied utility rule.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def MechanismWithTransfers.toQuasiLinearGame {I : Type u_1} {T : IType u_2} {A : Type u_3} {P : Type u_4} {V : Type u_5} {U : Type u_6} (M : MechanismWithTransfers I T A P) [Sub U] (val : A((i : I) → T i)IV) (valueToUtility : VU) (paymentToUtility : PU) (trueTypes : (i : I) → T i) :

              The standard quasi-linear specialization of toStrategicGame.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def MechanismWithTransfers.isQuasiLinearDSIC {I : Type u_1} [DecidableEq I] {T : IType u_2} {A : Type u_3} {P : Type u_4} {V : Type u_5} {U : Type u_6} (M : MechanismWithTransfers I T A P) [Sub U] [Preorder U] (val : A((i : I) → T i)IV) (valueToUtility : VU) (paymentToUtility : PU) :

                DSIC for quasi-linear utility, as a specialization of isDSIC.

                Equations
                • M.isQuasiLinearDSIC val valueToUtility paymentToUtility = M.isDSIC fun (a : A) (pay : IP) (types : (i : I) → T i) (i : I) => valueToUtility (val a types i) - paymentToUtility (pay i)
                Instances For
                  def MechanismWithTransfers.isQuasiLinearExPostIR {I : Type u_1} [DecidableEq I] {T : IType u_2} {A : Type u_3} {P : Type u_4} {V : Type u_5} {U : Type u_6} (M : MechanismWithTransfers I T A P) [Sub U] [Preorder U] [Zero U] (val : A((i : I) → T i)IV) (valueToUtility : VU) (paymentToUtility : PU) :

                  Ex-post IR for quasi-linear utility, as a specialization of isExPostIR.

                  Equations
                  • M.isQuasiLinearExPostIR val valueToUtility paymentToUtility = M.isExPostIR fun (a : A) (pay : IP) (types : (i : I) → T i) (i : I) => valueToUtility (val a types i) - paymentToUtility (pay i)
                  Instances For

                    Standard transfer-mechanism specializations #

                    structure SingleParameterMechanism (I : Type u_1) (R : Type u_2) extends MechanismWithTransfers I (fun (x : I) => R) (IR) R :
                    Type (max u_1 u_2)

                    A single-parameter mechanism.

                    Each agent i has a single private type θ_i : R (their "value per unit"). The allocation gives each agent a scalar x_i : R (typically in [0, 1], interpreted as probability of winning or fractional quantity received). Payments are of the same scalar type R; utility is quasi-linear: θ_i · x_i - p_i.

                    In practice R = . The structure is kept polymorphic for generality.

                    This is the canonical setting for Myerson's revenue-optimal auction theorem and for characterizing implementable (DSIC) allocation rules via monotonicity.

                    Instances For

                      Allocation feasibility: each agent's allocation lies in [0, 1].

                      Requires Zero R, One R, and LE R (e.g., any linearly ordered field).

                      Equations
                      Instances For

                        Monotonicity of the allocation rule.

                        Agent i's allocation is non-decreasing in i's reported type, holding all other reports fixed.

                        This is Myerson's necessary and sufficient condition for DSIC in the single-parameter setting (with quasi-linear utility and the appropriate payment formula). [Myerson 1981; AGT Thm 9.36]

                        Equations
                        Instances For
                          @[reducible, inline]
                          abbrev SingleParameterMechanism.payment {I : Type u_1} {R : Type u_2} (M : SingleParameterMechanism I R) (b : IR) :
                          IR

                          The payment vector induced by a bid profile in a single-parameter mechanism.

                          This is just the inherited MechanismWithTransfers.paymentRule, restated with single-parameter terminology.

                          Equations
                          Instances For
                            def SingleParameterMechanism.quasiLinearValue {I : Type u_1} {R : Type u_2} [Mul R] (x θ : IR) (i : I) :
                            R

                            Quasi-linear value in the single-parameter setting: agent i with true type θᵢ gets allocation xᵢ, worth θᵢ * xᵢ.

                            Equations
                            Instances For
                              def SingleParameterMechanism.quasiLinearUtility {I : Type u_1} {R : Type u_2} (M : SingleParameterMechanism I R) [Mul R] [Sub R] (b θ : IR) (i : I) :
                              R

                              Quasi-linear utility in the single-parameter setting: uᵢ(θ, b) = θᵢ * xᵢ(b) - pᵢ(b).

                              Equations
                              Instances For
                                theorem SingleParameterMechanism.quasiLinearUtility_eq_transferQuasiLinearUtility {I : Type u_1} {R : Type u_2} (M : SingleParameterMechanism I R) [Mul R] [Sub R] (b θ : IR) (i : I) :
                                M.quasiLinearUtility b θ i = M.quasiLinearUtility (fun (a : IR) (types : (i : I) → (fun (x : I) => R) i) (j : I) => types j * a j) id id b θ i

                                The single-parameter quasi-linear utility is the specialization of the generic transfer-mechanism quasi-linear utility to val a θ i = θᵢ * aᵢ and identity payment embedding.

                                Dominant-strategy incentive compatibility in the single-parameter, quasi-linear setting.

                                Truthful reporting θᵢ is weakly dominant for every agent under utility θᵢ * xᵢ(b) - pᵢ(b).

                                Equations
                                • M.IsDSIC = M.isDSIC fun (a pay types : IR) (i : I) => types i * a i - pay i
                                Instances For
                                  def SingleParameterMechanism.IsImplementable {I : Type u_1} [DecidableEq I] {R : Type u_2} [Mul R] [Sub R] [Preorder R] (x : (IR)IR) :

                                  An allocation rule is implementable if there exists some payment rule such that the resulting single-parameter mechanism is DSIC.

                                  Equations
                                  Instances For
                                    structure MultipleParameterMechanism (I : Type u_1) (A : Type u_2) (V : Type u_3) (P : Type u_4) extends MechanismWithTransfers I (fun (x : I) => AV) A P :
                                    Type (max (max (max u_1 u_2) u_3) u_4)

                                    A multiple-parameter mechanism with transfers.

                                    Here A is the type of feasible allocations and V is the codomain of valuations. Agent i's type/report space is AV: a valuation function assigning a value to every possible allocation. The mechanism then maps a profile of reported valuations to an allocation and a payment for each agent.

                                    Instances For
                                      @[reducible, inline]
                                      abbrev MultipleParameterMechanism.Valuation (A : Type u_4) (V : Type u_5) :
                                      Type (max u_4 u_5)

                                      The valuation/type space of an agent in a multiple-parameter mechanism.

                                      Equations
                                      Instances For
                                        def MultipleParameterMechanism.valueOfAllocation {I : Type u_1} {A : Type u_2} {V : Type u_3} (a : A) (types : IValuation A V) (i : I) :
                                        V

                                        The value extractor used by the generic quasi-linear transfer definitions: agent i evaluates allocation a by applying their valuation function to a.

                                        Equations
                                        Instances For