Documentation

EconCSLib.SocialChoice.FairDivision.Indivisible.SocialWelfare

EconCSLib.SocialChoice.FairDivision.Indivisible.SocialWelfare #

Utilitarian and egalitarian social welfare for indivisible goods allocation.

Main definitions #

Design #

Social welfare functions are the natural objectives for optimization-based allocation rules.

utilitarianWelfare requires [Fintype N]. egalitarianWelfare requires [Fintype N] [Nonempty N] — the Nonempty N constraint ensures the minimum over agents is well-defined (avoids min over an empty set).

Both are noncomputable because they sum/minimize over abstract types using Finset.univ.

Egalitarian welfare and MMS: IsMaxmin (egalitarian optimality) is a social optimality notion (maximize the minimum across all agents simultaneously), whereas IsMaxminShare (in Fairness.lean) is a per-agent guarantee (each agent could guarantee themselves at least this much). These two notions are generally incomparable.

References #

Utilitarian social welfare #

@[reducible, inline]
noncomputable abbrev SocialChoice.FairDivision.Indivisible.utilitarianWelfare {N : Type u_1} {G : Type u_2} [Fintype N] (v : Valuation N G) (A : Allocation N G) :

Utilitarian social welfare: the sum of all agents' bundle values.

sw_U(A) = ∑_{i ∈ N} v_i(A_i).

Maximizing utilitarian welfare produces utilitarian optimal allocations — generally not fair, since all value may concentrate on one agent. The ratio between utilitarian optimal welfare and the welfare of the best fair allocation is the price of fairness.

Requires [Fintype N] to sum over all agents. [BCM Ch.12]

Equations
Instances For

    Egalitarian (maximin) social welfare #

    @[reducible, inline]
    noncomputable abbrev SocialChoice.FairDivision.Indivisible.egalitarianWelfare {N : Type u_1} {G : Type u_2} [Fintype N] [Nonempty N] (v : Valuation N G) (A : Allocation N G) :

    Egalitarian social welfare: the minimum of all agents' bundle values.

    sw_E(A) = min_{i ∈ N} v_i(A_i).

    Maximizing egalitarian welfare yields the maximin allocation: it makes the worst-off agent as well off as possible. For this to be meaningful, agent valuations should be comparable (e.g., all normalized to total value 1 over all goods).

    Requires [Fintype N] [Nonempty N] so the minimum is taken over a nonempty set. [BCM Ch.12, Def 12.6]

    Equations
    Instances For

      Optimality notions #

      @[reducible, inline]
      abbrev SocialChoice.FairDivision.Indivisible.IsUtilitarianOptimal {N : Type u_1} {G : Type u_2} [Fintype N] [DecidableEq G] (v : Valuation N G) (allGoods : Finset G) (A : Allocation N G) :

      Utilitarian optimal: no complete allocation of allGoods achieves strictly higher utilitarian (sum) social welfare.

      [Fintype N] [DecidableEq G] are required by IsAllocation.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[reducible, inline]
        abbrev SocialChoice.FairDivision.Indivisible.IsMaxmin {N : Type u_1} {G : Type u_2} [Fintype N] [Nonempty N] [DecidableEq G] (v : Valuation N G) (allGoods : Finset G) (A : Allocation N G) :

        Maximin (egalitarian) optimal: no complete allocation of allGoods achieves higher egalitarian (minimum-agent) welfare.

        A maximin allocation makes the worst-off agent as well off as possible. This is the egalitarian counterpart to utilitarian optimality, and is distinct from the per-agent maximin share guarantee (IsMaxminShare in Fairness.lean):

        • IsMaxmin is a global property: it is the best possible for the social minimum.
        • IsMaxminShare is per-agent: each agent individually gets at least their MMS value.

        [Nonempty N] ensures egalitarianWelfare is well-defined. [BCM Ch.12, Def 12.6]

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

          Basic lemmas #

          theorem SocialChoice.FairDivision.Indivisible.utilitarianWelfare_mono {N : Type u_1} {G : Type u_2} [Fintype N] (v : Valuation N G) (A B : Allocation N G) (h : ∀ (i : N), v.val i (A i) v.val i (B i)) :

          Utilitarian welfare is monotone: pointwise improvement implies welfare improvement.

          The valuation codomain is fixed to , so no ordered-algebra assumptions are needed.

          @[simp]

          The utilitarian welfare of an allocation with a unique agent equals that agent's value.

          theorem SocialChoice.FairDivision.Indivisible.egalitarianWelfare_le {N : Type u_1} {G : Type u_2} [Fintype N] [Nonempty N] (v : Valuation N G) (A : Allocation N G) (i : N) :
          egalitarianWelfare v A v.val i (A i)

          Egalitarian welfare is bounded above by any agent's bundle value.

          Egalitarian welfare is bounded above by utilitarian welfare divided by n, informally. Formally (without division): negalitarianWelfare v AutilitarianWelfare v A for nonneg-valued additive allocations.

          The valuation codomain is fixed to , so no ordered-algebra assumptions are needed.