Cardinal-Instance Fairness and Welfare Wrappers
The cardinal-instance API ([[social_choice.fair_division.cardinal_instance]]) re-exports the shared fairness and welfare predicates so they take an instance as input directly, sparing call sites from unpacking the utility field.
For an instance $I : \mathrm{CardinalInstance}\ N\ R\ S$ and an allocation $A$:
I.IsEnvyFree A⇔ envy-freeness w.r.t. $I.\mathrm{utility}$ ([[social_choice.fair_division.envy_free]]).I.IsProportional n whole A⇔ proportional with whole sharewhole([[social_choice.fair_division.proportional]]).I.IsEquitable A⇔ equitable ([[social_choice.fair_division.equitable]]).I.IsParetoOptimal A⇔ Pareto optimal under $I.\mathrm{feasible}$ ([[social_choice.fair_division.pareto_optimal]]).I.utilitarianWelfare A,I.egalitarianWelfare A⇔ welfare aggregations ([[social_choice.fair_division.utilitarian_welfare]], [[social_choice.fair_division.egalitarian_welfare]]).I.IsUtilitarianOptimal A,I.IsMaxmin A⇔ welfare-optimality under $I.\mathrm{feasible}$.
Each wrapper is a definitional pass-through to the underlying generic
predicate; no extra invariants are introduced. The point is purely
ergonomic: at the instance layer one writes I.IsEnvyFree A instead of
spelling out IsEnvyFree I.utility A.
The divisible-instance and indivisible-instance wrappers ([[social_choice.fair_division.divisible.cardinal_instance]], [[social_choice.fair_division.indivisible.cardinal_instance]]) compose this layer with the structured allocation types.
References
- [AGT Chapter 11] Nisan, Roughgarden, Tardos, and Vazirani, Algorithmic Game Theory. Cardinal fair-division wrappers.