Documentation

EconCSLib.SocialChoice.FairDivision.Indivisible.MMS

EconCSLib.SocialChoice.FairDivision.Indivisible.MMS #

Maximin share (MMS) value and α-MMS approximations for indivisible goods.

Valuations and approximation ratios are real-valued throughout this file.

The full-MMS predicate ("Is allocation A fair under MMS?") is IsMaxminShare, defined in Fairness.lean alongside EF, EF1, EFX, and PROP. This file adds:

Main definitions #

Key results #

Proved:

Fairness hierarchy #

For additive valuations with complete allocations:

EFEFXEF1PROPMMS → α-MMS  (0 ≤ α ≤ 1)

Unlike EF, EF1, and PROP, full MMS is not always achievable for n ≥ 3 agents [Procaccia-Wang 2014]. However, (3/4)-MMS is always achievable [Garg-Taki 2021].

References #

MMS value #

noncomputable def SocialChoice.FairDivision.Indivisible.mmsValue {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (v : Valuation N G) (allGoods : Finset G) (i : N) :

The maximin share (MMS) value of agent i with respect to valuation v and good set allGoods.

mmsValue v allGoods i = sup_{B : n-partition} inf_{j : N} v_i(B_j).

Intuitively: the best (highest) minimum-bundle value agent i can guarantee by proposing a complete n-partition of allGoods. The outer iSup ranges over all complete allocations {B // IsAllocation allGoods B}; the inner iInf ranges over all agent indices j : N (the bundle labels).

The corresponding predicate ("did agent i receive at least their MMS value?") is IsMaxminShare in Fairness.lean. See isMaxminShare_iff_isAlphaMMS_one for the connection.

If no complete allocation exists (e.g., N = ∅), iSup over the empty subtype yields sSup ∅ = 0 in ℝ. Use [Nonempty N] to ensure a complete allocation exists.

[Budish 2011; AGT Ch.11]

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

    IsAlphaMMS — approximate MMS allocation #

    def SocialChoice.FairDivision.Indivisible.IsAlphaMMS {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (α : ) (v : Valuation N G) (allGoods : Finset G) (A : Allocation N G) :

    An allocation A is α-MMS if every agent receives at least α times their MMS value.

    IsAlphaMMS α v allGoods A ↔ ∀ i, α * mmsValue v allGoods iv.val i (A i).

    The scalar α : quantifies approximation quality:

    [Budish 2011; Amanatidis et al. 2017; Garg-Taki 2021]

    Equations
    Instances For

      Properties of mmsValue #

      theorem SocialChoice.FairDivision.Indivisible.iInf_partition_le_mmsValue {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (v : Valuation N G) (allGoods : Finset G) (i : N) (B : Allocation N G) (hB : IsAllocation allGoods B) (hbdd : BddAbove (Set.range fun (X : { A : Allocation N G // IsAllocation allGoods A }) => ⨅ (j : N), v.val i (X j))) :
      ⨅ (j : N), v.val i (B j) mmsValue v allGoods i

      The min-bundle value of any complete allocation is at most the MMS value.

      For any complete allocation B: iInf_{j : N} v_i(B_j) ≤ mmsValue v allGoods i.

      Requires BddAbove of the range of all per-allocation minimums, which holds when [Fintype G] (finitely many partitions).

      [Budish 2011]

      theorem SocialChoice.FairDivision.Indivisible.mmsValue_le_of_forall {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (v : Valuation N G) (allGoods : Finset G) (i : N) (hne : Nonempty { A : Allocation N G // IsAllocation allGoods A }) (ub : ) (h : ∀ (B : Allocation N G), IsAllocation allGoods B⨅ (j : N), v.val i (B j) ub) :
      mmsValue v allGoods i ub

      The MMS value is at most any upper bound on all per-allocation minimum bundle values.

      If ub is an upper bound — for every complete allocation B, iInf_j v_i(B_j) ≤ ub — then mmsValue v allGoods iub.

      hne is needed because ciSup_le requires the index type to be nonempty.

      theorem SocialChoice.FairDivision.Indivisible.mmsValue_nonneg {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] [Fintype G] (v : Valuation N G) (allGoods : Finset G) (i : N) (hne : Nonempty { A : Allocation N G // IsAllocation allGoods A }) (hnonneg : ∀ (S : Finset G), 0 v.val i S) :
      0 mmsValue v allGoods i

      For nonneg valuations with at least one complete allocation, the MMS value is nonneg.

      hne ensures the iSup is nonempty. [Fintype G] makes the allocation subtype [Finite], enabling Finite.le_ciSup without a separate BddAbove hypothesis.

      theorem SocialChoice.FairDivision.Indivisible.mmsValue_le_proportional_share_additive {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (w : AdditiveValuation N G) (allGoods : Finset G) (i : N) (hne : Nonempty { A : Allocation N G // IsAllocation allGoods A }) :
      (Fintype.card N) * mmsValue w.toValuation allGoods i w.toValuation.val i allGoods

      For additive valuations, the MMS value is at most the proportional share: n * mmsValue ≤ v_i(allGoods).

      Proof: For any complete B, min_j v_i(B_j) ≤ avg_j v_i(B_j) = v_i(allGoods)/n (minimum ≤ average). Since this bound holds for every B, it holds for the supremum mmsValue = sup_B min_j v_i(B_j). Uses mmsValue_le_of_forall.

      i : N guarantees Fintype.card N1, so division by n is safe.

      [Budish 2011]

      Connection to IsMaxminShare and α-MMS #

      theorem SocialChoice.FairDivision.Indivisible.isMaxminShare_iff_isAlphaMMS_one {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] [Nonempty N] [Fintype G] (v : Valuation N G) (allGoods : Finset G) (A : Allocation N G) (hne : Nonempty { A' : Allocation N G // IsAllocation allGoods A' }) :
      IsMaxminShare v allGoods A IsAlphaMMS 1 v allGoods A

      IsMaxminShare from Fairness.lean coincides with IsAlphaMMS 1.

      → direction (IsMaxminShareIsAlphaMMS 1): for every complete B, there exists j with v_i(B_j) ≤ v_i(A_i), so iInf_j v_i(B_j) ≤ v_i(A_i). Then ciSup_le gives mmsValue ≤ v_i(A_i), and 1 * mmsValue = mmsValue by one_mul.

      ← direction (IsAlphaMMS 1IsMaxminShare): for any complete B, iInf_j v_i(B_j) ≤ mmsValue ≤ v_i(A_i). Since N is Nonempty and Fintype, the infimum is achieved at some j*, giving v_i(B_{j*}) ≤ v_i(A_i).

      [Nonempty N] ensures iInf is nonempty. [Fintype G] makes the allocation subtype [Finite], enabling Finite.le_ciSup in the ← direction. hne is required by the → direction (to call ciSup_le).

      Monotonicity and basic implications for α-MMS #

      theorem SocialChoice.FairDivision.Indivisible.isAlphaMMS_mono_alpha {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (v : Valuation N G) (allGoods : Finset G) (A : Allocation N G) (α β : ) (hβα : β α) (hmms_nn : ∀ (i : N), 0 mmsValue v allGoods i) ( : IsAlphaMMS α v allGoods A) :
      IsAlphaMMS β v allGoods A

      α-MMS is monotone decreasing in α: if A is α-MMS and βα, then A is β-MMS.

      Proof: β * mmsValueα * mmsValue ≤ v_i(A_i) since βα and mmsValue0.

      theorem SocialChoice.FairDivision.Indivisible.isAlphaMMS_zero {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (v : Valuation N G) (allGoods : Finset G) (A : Allocation N G) (hnonneg : ∀ (i : N) (S : Finset G), 0 v.val i S) :
      IsAlphaMMS 0 v allGoods A

      Every allocation trivially satisfies 0-MMS for nonneg valuations.

      0 * mmsValue = 0 ≤ v_i(A_i) by zero_mul and nonnegativity.

      theorem SocialChoice.FairDivision.Indivisible.IsMaxminShare.isAlphaMMS {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] [Nonempty N] [Fintype G] (v : Valuation N G) (allGoods : Finset G) (A : Allocation N G) (hne : Nonempty { A' : Allocation N G // IsAllocation allGoods A' }) (hMMS : IsMaxminShare v allGoods A) (α : ) (hα_le : α 1) (hmms_nn : ∀ (i : N), 0 mmsValue v allGoods i) :
      IsAlphaMMS α v allGoods A

      IsMaxminShare implies α-MMS for α1 and nonneg MMS values.

      Proportionality implies α-MMS #

      theorem SocialChoice.FairDivision.Indivisible.IsProportional.isAlphaMMS_additive {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] [Nonempty N] [Fintype G] (w : AdditiveValuation N G) {allGoods : Finset G} {A : Allocation N G} (hne : Nonempty { A' : Allocation N G // IsAllocation allGoods A' }) (hProp : IsProportional (Fintype.card N) w.toValuation allGoods A) (α : ) (hα_le : α 1) (hmms_nn : ∀ (i : N), 0 mmsValue w.toValuation allGoods i) :
      IsAlphaMMS α w.toValuation allGoods A

      PROP implies α-MMS for additive valuations and α1.

      Follows by chaining: IsProportional.isMaxminShareisMaxminShare_iff_isAlphaMMS_one.mpIsMaxminShare.isAlphaMMS.

      [Budish 2011]