EconCSLib.MechanismDesign.Auction.Transfer #
Mechanisms with monetary transfers.
Design #
This file separates the roles that were previously collapsed into one scalar type:
T i— report/type space for agentiA— allocation spaceP— payment spaceV— valuation typeU— utility 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 #
MechanismWithTransfers— allocation rule + payment ruleMechanismWithTransfers.quasiLinearUtility— utility induced by a value extractor and payment embeddingSingleParameterMechanism— scalar reports, scalar-vector allocations, scalar paymentsMultipleParameterMechanism— valuation-function reports over an allocation spaceMechanismWithTransfers.toMechanism— forget the decompositionMechanismWithTransfers.toStrategicGame— induced strategic game under external utilityMechanismWithTransfers.isDSIC— DSIC specialized to the induced gameMechanismWithTransfers.isExPostIR— ex-post IR specialized to the induced game
References #
- [Nisan et al., Algorithmic Game Theory, Ch. 9]
- [Maschler, Solan, Zamir, Game Theory, Ch. 11–12]
A mechanism with monetary transfers.
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) → I → P
The payment rule: given reports, determine each agent's payment.
Instances For
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 = Uwith identity payment embedding- valuation codomains and payment codomains that differ but both map into
U.
Equations
- M.quasiLinearUtility val valueToUtility paymentToUtility r trueTypes i = valueToUtility (val (M.allocationRule r) trueTypes i) - paymentToUtility (M.paymentRule r i)
Instances For
Viewing MechanismWithTransfers as a general Mechanism.
The outcome type is A × (I → P) (allocation, payment vector).
Equations
- M.toMechanism = { outcome := fun (r : (i : I) → T i) => (M.allocationRule r, M.paymentRule r) }
Instances For
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
- M.toStrategicGame u trueTypes = { strategy := T, payoff := fun (r : (i : I) → T i) (i : I) => u (M.allocationRule r) (M.paymentRule r) trueTypes i }
Instances For
DSIC for a mechanism with transfers, relative to an externally supplied utility rule.
Equations
- M.isDSIC u = ∀ (trueTypes : (i : I) → T i) (i : I), IsWeaklyDominant (M.toStrategicGame u trueTypes) i (trueTypes i)
Instances For
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
The standard quasi-linear specialization of toStrategicGame.
Equations
- One or more equations did not get rendered due to their size.
Instances For
DSIC for quasi-linear utility, as a specialization of isDSIC.
Equations
- M.isQuasiLinearDSIC val valueToUtility paymentToUtility = M.isDSIC fun (a : A) (pay : I → P) (types : (i : I) → T i) (i : I) => valueToUtility (val a types i) - paymentToUtility (pay i)
Instances For
Ex-post IR for quasi-linear utility, as a specialization of isExPostIR.
Equations
- M.isQuasiLinearExPostIR val valueToUtility paymentToUtility = M.isExPostIR fun (a : A) (pay : I → P) (types : (i : I) → T i) (i : I) => valueToUtility (val a types i) - paymentToUtility (pay i)
Instances For
Standard transfer-mechanism specializations #
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.
- allocationRule : (I → R) → I → R
- paymentRule : (I → R) → I → R
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
- M.IsAllocFeasible = ∀ (b : I → R) (i : I), 0 ≤ M.allocationRule b i ∧ M.allocationRule b i ≤ 1
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
- M.IsMonotone = ∀ (i : I) (θ θ' : R), θ ≤ θ' → ∀ (b : I → R), M.allocationRule (Function.update b i θ) i ≤ M.allocationRule (Function.update b i θ') i
Instances For
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
- M.payment b = M.paymentRule b
Instances For
Quasi-linear value in the single-parameter setting:
agent i with true type θᵢ gets allocation xᵢ, worth θᵢ * xᵢ.
Equations
- SingleParameterMechanism.quasiLinearValue x θ i = θ i * x i
Instances For
Quasi-linear utility in the single-parameter setting:
uᵢ(θ, b) = θᵢ * xᵢ(b) - pᵢ(b).
Equations
- M.quasiLinearUtility b θ i = SingleParameterMechanism.quasiLinearValue (M.allocationRule b) θ i - M.payment b i
Instances For
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).
Instances For
An allocation rule is implementable if there exists some payment rule such that the resulting single-parameter mechanism is DSIC.
Equations
- SingleParameterMechanism.IsImplementable x = ∃ (p : (I → R) → I → R), { allocationRule := x, paymentRule := p }.IsDSIC
Instances For
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 A → V: 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.
- allocationRule : (I → A → V) → A
- paymentRule : (I → A → V) → I → P
Instances For
The valuation/type space of an agent in a multiple-parameter mechanism.
Equations
- MultipleParameterMechanism.Valuation A V = (A → V)
Instances For
The value extractor used by the generic quasi-linear transfer definitions:
agent i evaluates allocation a by applying their valuation function to a.
Equations
- MultipleParameterMechanism.valueOfAllocation a types i = types i a