EconCSLib.SocialChoice.Voting.Basic #
Voting-specific social-choice infrastructure: finite strict preference profiles, set-valued voting rules, social welfare functions, and the core voting axioms.
The foundation-level Pref bundle is the library-wide weak-preference
interface. The voting layer specializes to the standard
ranked-ballot model: each voter submits a linear order over a finite set of
alternatives, and a voting rule returns a finite set of winners.
Strict finite voting profiles #
A voting profile assigns each voter a strict linear order over alternatives.
- pref : N → LinearOrder A
The ballot submitted by each voter. Smaller means more preferred.
Instances For
Constant profile where every voter submits the same ballot.
Equations
- SocialChoice.Voting.constantProfile r = { pref := fun (x : N) => r }
Instances For
Ballot r's strict-order instance, exposed explicitly to avoid ambient
typeclass search.
Equations
Instances For
Pull a linear order back along an injective map, using the supplied codomain
order explicitly rather than relying on ambient typeclass search. This is the
safe constructor for ballots on types such as Fin n, which already carry a
default order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Candidate a is top-ranked by voter i.
Equations
- SocialChoice.Voting.TopRank P i a = ∀ (b : A), b ≠ a → SocialChoice.Voting.Prefers P i a b
Instances For
Candidate a is bottom-ranked by voter i.
Equations
- SocialChoice.Voting.BottomRank P i a = ∀ (b : A), b ≠ a → SocialChoice.Voting.Prefers P i b a
Instances For
A linear-order ballot ranks a first.
Equations
- SocialChoice.Voting.BallotTop r a = ∀ (b : A), b ≠ a → SocialChoice.Voting.BallotPrefers r a b
Instances For
A linear-order ballot ranks a last.
Equations
- SocialChoice.Voting.BallotBottom r a = ∀ (b : A), b ≠ a → SocialChoice.Voting.BallotPrefers r b a
Instances For
Profile transformations #
Replace one voter's ballot.
Equations
Instances For
Relabel voters by a permutation of the electorate.
Equations
- SocialChoice.Voting.permuteVoters P σ = { pref := fun (i : N) => P.pref (σ i) }
Instances For
Relabel a linear order along a permutation of alternatives.
Equations
Instances For
Relabel a linear order along an equivalence of alternative types.
Equations
Instances For
Relabel candidates by applying the inverse permutation to each ballot.
Equations
- SocialChoice.Voting.permuteCandidates P σ = { pref := fun (i : N) => SocialChoice.Voting.relabelBallot (P.pref i) (Equiv.symm σ) }
Instances For
Relabel a profile along an equivalence of alternative types.
Equations
- SocialChoice.Voting.relabelProfile P e = { pref := fun (i : N) => SocialChoice.Voting.relabelBallotEquiv (P.pref i) e }
Instances For
Voting rules and social welfare functions #
A set-valued voting rule on fixed finite voter and candidate types.
Equations
- SocialChoice.Voting.VotingRule N A = (SocialChoice.Voting.Profile N A → Finset A)
Instances For
A voting rule is total if it always returns at least one winner.
Equations
- SocialChoice.Voting.IsTotal f = ∀ (P : SocialChoice.Voting.Profile N A), (f P).Nonempty
Instances For
A voting rule is resolute if it always returns exactly one winner.
Equations
- SocialChoice.Voting.Resolute f = ∀ (P : SocialChoice.Voting.Profile N A), (f P).card = 1
Instances For
A social welfare function maps strict profiles to a weak social preference.
Equations
- SocialChoice.Voting.SWF N A = (SocialChoice.Voting.Profile N A → Pref A)
Instances For
Unanimity/Pareto for SWFs: unanimous strict preference forces social strict preference.
Equations
- F.Unanimity = ∀ (P : SocialChoice.Voting.Profile N A) (a b : A), (∀ (i : N), SocialChoice.Voting.Prefers P i a b) → strict (F P).rel a b
Instances For
Independence of irrelevant alternatives for SWFs.
Equations
- F.IIA = ∀ (P Q : SocialChoice.Voting.Profile N A) (a b : A), (∀ (i : N), SocialChoice.Voting.Prefers P i a b ↔ SocialChoice.Voting.Prefers Q i a b) → ((F P).rel a b ↔ (F Q).rel a b)
Instances For
A SWF is dictatorial if one voter always determines every strict social comparison.
Equations
- F.Dictatorial = ∃ (i : N), ∀ (P : SocialChoice.Voting.Profile N A) (a b : A), SocialChoice.Voting.Prefers P i a b → strict (F P).rel a b
Instances For
Voting-rule axioms #
Unanimity/Pareto for set-valued voting rules: no unanimously dominated alternative is selected.
Equations
- SocialChoice.Voting.Unanimity f = ∀ (P : SocialChoice.Voting.Profile N A) (a b : A), (∀ (i : N), SocialChoice.Voting.Prefers P i a b) → b ∉ f P
Instances For
Alias for voting-rule unanimity in its weak-Pareto form.
Instances For
Top unanimity follows from weak-Pareto unanimity plus totality: if every
voter ranks a first, then a is the unique winner.
Anonymity: relabeling voters does not change the winner set.
Equations
- SocialChoice.Voting.Anonymity f = ∀ (P : SocialChoice.Voting.Profile N A) (σ : Equiv.Perm N), f (SocialChoice.Voting.permuteVoters P σ) = f P
Instances For
Candidate renaming on winner sets.
Equations
Instances For
Neutrality: relabeling candidates relabels the winner set.
Equations
- SocialChoice.Voting.Neutrality f = ∀ (P : SocialChoice.Voting.Profile N A) (σ : Equiv.Perm A), SocialChoice.Voting.permuteWinners σ (f P) = f (SocialChoice.Voting.permuteCandidates P σ)
Instances For
Q is obtained from P by weakly raising a: anything below a in P
remains below a in Q, and anything above a in Q was already above a
in P.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Monotonicity: raising a selected alternative cannot make it unselected.
Equations
- SocialChoice.Voting.Monotonicity f = ∀ (P Q : SocialChoice.Voting.Profile N A), ∀ a ∈ f P, SocialChoice.Voting.SimpleLift Q P a → a ∈ f Q
Instances For
Strategyproofness for resolute rules: changing one ballot cannot produce a strictly better unique winner for the deviating voter.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Optimist strategyproofness for set-valued rules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pessimist strategyproofness for set-valued rules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A rule is dictatorial if one voter always gets their top-ranked alternative as the unique winner.
Equations
- SocialChoice.Voting.Dictatorial f = ∃ (i : N), ∀ (P : SocialChoice.Voting.Profile N A), f P = {SocialChoice.Voting.topChoice P i}