Documentation

EconCSLib.MechanismDesign.Auction.MechBasic

EconCSLib.MechanismDesign.Auction.MechBasic #

General mechanism design framework, following the Bourbaki principle: define the most general structure first, then specialize.

Abstraction hierarchy #

Mechanism I T O                                  -- general direct mechanism
  └─ MechanismWithTransfers I T A P              -- allocation + payment rules
       ├─ SingleItemAuction I V P                -- one-item auctions
       ├─ SingleParameterMechanism I R           -- scalar reports and allocations
       └─ BayesianMechanismWithTransfers ...     -- incomplete-information layer

MultipleParameterMechanism I A V P               -- valuation reports `A → V`
  ├─ VCGMechanism                                -- welfare-maximizing VCG rule
  └─ CombinatorialAuction I k V P                -- bundle allocations over `Fin k`

Typeclass design #

Main definitions #

References #

structure Mechanism (I : Type u_1) (T : IType u_2) (O : Type u_3) :
Type (max (max u_1 u_2) u_3)

A (direct revelation) mechanism.

  • I — the set of agents (indices)
  • T — the type space of each agent
  • O — the outcome space

A mechanism maps a profile of reported types to an outcome. In a direct mechanism, the message/preference space equals the type space, so agent i reports elements of T i.

This is the most general definition. Specializations (auctions, voting rules, matching mechanisms) arise by choosing appropriate T, O, and utility functions.

  • outcome : ((i : I) → T i)O

    The outcome function: given all agents' reports, choose an outcome.

Instances For
    def Mechanism.toStrategicGame {I : Type u_1} {T : IType u_2} {O : Type u_3} {U : Type u_4} (M : Mechanism I T O) (u : O((i : I) → T i)IU) (v : (i : I) → T i) :

    The strategic game induced by a mechanism and a utility function.

    Each agent's strategy space is their type space T i (they choose what to report). Agent i's payoff from report profile r under true type tᵢ is utility (M.outcome r) tᵢ i.

    The utility function u : O → (∀ i, T i) → IU takes:

    • the outcome chosen by the mechanism
    • the true type profile (for computing each agent's value)
    • the agent index

    This captures the standard setup: agents have private types, the mechanism chooses an outcome based on reports, and each agent evaluates the outcome according to their true type.

    Equations
    Instances For
      def Mechanism.IsDSIC {I : Type u_1} [DecidableEq I] {T : IType u_2} {O : Type u_3} {U : Type u_4} (M : Mechanism I T O) (u : O((i : I) → T i)IU) [Preorder U] :

      Dominant-strategy incentive compatibility (DSIC).

      A mechanism is DSIC with respect to a utility function if for every true type profile v, truthful reporting v i is a weakly dominant strategy for every agent i in the induced strategic game.

      This reuses IsWeaklyDominant from StrategicGame.Dominance — no redundant definition.

      Equations
      Instances For
        def Mechanism.IsExPostIR {I : Type u_1} [DecidableEq I] {T : IType u_2} {O : Type u_3} {U : Type u_4} (M : Mechanism I T O) (u : O((i : I) → T i)IU) [Preorder U] [Zero U] :

        A mechanism is (Ex-Post) Individually Rational if every agent gets nonneg utility from truthful reporting, regardless of others' reports.

        Equations
        Instances For
          theorem Mechanism.IsDSIC.truthful_isNash {I : Type u_1} [DecidableEq I] {T : IType u_2} {O : Type u_3} {U : Type u_4} (M : Mechanism I T O) (u : O((i : I) → T i)IU) [Preorder U] (hdsic : M.IsDSIC u) (v : (i : I) → T i) :

          If a mechanism is DSIC, then truthful reporting is a Nash equilibrium.