Documentation

EconCSLib.MechanismDesign.Auction.AuctionBasic

EconCSLib.MechanismDesign.Auction.AuctionBasic #

Basic auction and mechanism definitions used across the library.

This is the base layer for EconCSLib/MechanismDesign/Auction. It provides:

Myerson-specific payment formulas and proofs are in EconCSLib/MechanismDesign/Auction/Myerson.lean.

Auction format hierarchy #

Different auction formats arise by specializing the report/type space, allocation space, and payment space:

MechanismWithTransfers I T A P                     -- general transfer mechanism
  ├─ SingleItemAuction I V P                        -- T i = V, A = Option I
  └─ SingleParameterMechanism I R                   -- T i = R, A = I → R, P = R

MultipleParameterMechanism I A V P                  -- T i = AV
  └─ CombinatorialAuction I k V P                   -- A = CombinatorialAllocation I k

Main definitions #

Auction formats #

Predicates on auction formats #

Bid-profile support predicates (Auction.BidProfile) #

Ordered-bid utilities #

The following are mathematical tools for auction rules that rank bids. They do not define any specific auction's winner — each concrete auction specifies its own allocation rule, which may or may not select the highest bidder.

References #

Abstract auction formats #

structure SingleItemAuction (I : Type u_1) (V : Type u_2) (P : Type u_3) extends MechanismWithTransfers I (fun (x : I) => V) (Option I) P :
Type (max (max u_1 u_2) u_3)

A single-item auction.

One indivisible item is for sale. Each agent reports a scalar bid of type V. The allocation is Option I:

  • some i — bidder i receives the item
  • none — the item is withheld (reserve price not met, etc.)

Which bidder wins, or whether anyone wins, is determined by the allocation rule of the specific mechanism. This structure imposes no winner-selection policy.

Instances For

    A multi-item auction with k distinct items.

    An agent bundle is a finite subset of the k items, represented as Finset (Fin k). A full allocation assigns one bundle to each agent. Agents report valuation functions over full allocation profiles, so this is the specialization of MultipleParameterMechanism to bundle allocations.

    Feasibility (no item sold twice) is a separate predicate; see IsFeasible.

    Equations
    Instances For

      View a named multi-item bundle as the underlying finite set of item indices.

      Equations
      Instances For
        def CombinatorialAllocation (I : Type u_1) (k : ) :
        Type u_1

        A multi-item allocation assigns each agent a bundle of items.

        Equations
        Instances For
          structure CombinatorialAuction (I : Type u_1) (k : ) (V : Type u_2) (P : Type u_3) extends MultipleParameterMechanism I (CombinatorialAllocation I k) V P :
          Type (max (max u_1 u_2) u_3)

          A combinatorial auction with k distinct items.

          This is a multiple-parameter mechanism whose allocation space is the type of bundle-allocation profiles IFinset (Fin k). Each agent reports a valuation over those allocation profiles.

          Instances For
            def CombinatorialAuction.IsFeasible {I : Type u_1} {k : } {V : Type u_2} {P : Type u_3} (M : CombinatorialAuction I k V P) :

            Feasibility: each item is allocated to at most one agent.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Bid-profile support predicates #

              Side conditions on bid profiles that constrain the admissible bid space without modifying the underlying auction format. Useful for bounded-support equilibrium arguments and strategy-set restrictions in Bayesian auction theory.

              [Krishna, Ch. 2-3]; [AGT, Ch. 9, §9.3-9.5]

              def Auction.BidProfile.Nonnegative {I : Type u_1} {V : Type u_2} [Zero V] [LE V] (b : IV) :

              Every bid is nonnegative.

              $\forall i.\; b_i \ge 0$. Captures the standard private-value convention that bids represent willingness-to-pay.

              Equations
              Instances For
                def Auction.BidProfile.InSet {I : Type u_1} {V : Type u_2} (b : IV) (S : ISet V) :

                Each bid lies in the per-agent admissible set.

                For a family of strategy sets $S_i \subseteq V$, asserts $\forall i.\; b_i \in S_i$. Captures heterogeneous strategy spaces.

                Equations
                Instances For
                  def Auction.BidProfile.InBox {I : Type u_1} {V : Type u_2} [LE V] (b u : IV) :

                  Each bid lies in the per-agent box $[\ell_i, u_i]$.

                  $\forall i.\; \ell_i \le b_i \le u_i$.

                  Equations
                  Instances For
                    def Auction.BidProfile.StrategyMapsBoxToBox {V : Type u_2} [LE V] (σ : VV) (u ℓ' u' : V) :

                    A scalar strategy maps the input bid interval $[\ell, u]$ into $[\ell', u']$.

                    Captures Lipschitz/contraction conditions for best-response dynamics in bounded auctions.

                    Equations
                    Instances For
                      theorem Auction.BidProfile.inBox_iff_inSet_Icc {I : Type u_1} {V : Type u_2} [Preorder V] (b u : IV) :
                      InBox b u InSet b fun (i : I) => Set.Icc ( i) (u i)

                      InBox b u is equivalent to InSet b (fun i => Set.Icc (ℓ i) (u i)).

                      Makes box-constrained bid spaces interoperable with the Mathlib Set.Icc API (continuity, compactness, integration).

                      Ordered-bid utilities #

                      The following definitions apply when bids are linearly ordered (e.g., scalar bids in ). They are mathematical tools for computing bid maxima and argmaxes — they do not define any particular auction's winner or allocation rule.

                      Each concrete auction explicitly states whether it uses these utilities and how.

                      def Auction.maxBid {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) :
                      V

                      The highest bid in a profile.

                      Equations
                      Instances For
                        theorem Auction.exists_maxBid {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) :
                        ∃ (i : I), b i = maxBid b

                        There exists a bidder whose bid equals the highest bid.

                        noncomputable def Auction.argmaxBid {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) :
                        I

                        The bidder whose bid achieves the maximum.

                        This is a mathematical argmax, not a declaration that any auction's winner is the highest bidder. Concrete auctions define their own allocation/winner rules.

                        Equations
                        Instances For
                          theorem Auction.argmaxBid_eq_maxBid {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) :

                          The argmax bidder's bid equals the highest bid.

                          theorem Auction.bid_le_maxBid {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) (j : I) :
                          b j b (argmaxBid b)

                          Every bid is at most the argmax bidder's bid.

                          theorem Auction.eq_argmaxBid_of_strict_max {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) (i : I) (h : ∀ (j : I), j ib j < b i) :

                          If i strictly outbids all others, then i is the argmax bidder.

                          noncomputable def Auction.maxBidExcluding {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) [DecidableEq I] (i : I) :
                          V

                          The highest bid excluding bidder i.

                          Equations
                          Instances For
                            theorem Auction.maxBidExcluding_le_maxBid {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) [DecidableEq I] (i : I) :

                            Excluding any bidder can only decrease the highest bid.

                            theorem Auction.maxBidExcluding_eq_maxBid_of_not_argmax {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) [DecidableEq I] {i : I} (h : i argmaxBid b) :

                            If i is not the argmax bidder, excluding i does not change the highest bid.

                            The argmax bidder's bid is at least the highest bid among all others.

                            theorem Auction.maxBidExcluding_update_self {I : Type u_1} [Fintype I] [Nontrivial I] {V : Type u_2} [LinearOrder V] (b : IV) [DecidableEq I] (i : I) (bi : V) :

                            Changing i's bid does not affect the highest bid among the others.