Basic #
We define basic notions related to apportionment methods, such as elections, apportionments, apportionment rules, and properties of apportionment rules. We also prove the Balinski-Young impossibility theorem.
All definitions follow those given in a textbook by F. Pukelsheim [Puk17]. Distinction between weak and strong exactness is added, following [PPR16].
Main definitions #
PartyElectionApportionmentRuleIsAnonymousIsBalancedIsConcordantIsDecentIsExactIsQuotaRuleIsPopulationMonotone
Main statements #
if_IsPopulationMonotone_then_IsConcordant: anonymity and population monotonicity imply concordance.balinski_young: Balinski-Young impossibility theorem.
Implementation details #
Formally, we should use p ∈ election.parties everywhere, in addition to simply writing
p : Party, in the definitions of IsAnonymous, IsPopulationMonotone, etc. We omit this for
simplicity, as for now, since it has not been needed in any proof so far. This is not surprising, as
we define Election.votes with | _ => 0, so parties outside election.parties have no votes.
References #
Equations
- election.total_voters = ∑ p ∈ election.parties, election.votes p
Instances For
An apportionment is a function from parties to the number of seats allocated to each party.
Equations
- Apportionment = (Party → ℕ)
Instances For
An apportionment rule is a function that, given an election, returns a set of apportionments satisfying three properties:
- Non-emptiness: there is at least one apportionment returned;
- Inheritance of zeros: parties with zero votes are allocated zero seats;
- House size feasibility: the total number of seats allocated is equal to the house size.
- res : Election → Finset Apportionment
- house_size_feasibility (election : Election) (App : Apportionment) : App ∈ self.res election → ∑ p ∈ election.parties, App p = election.house_size
Instances For
A rule is anonymous if permuting the votes of the parties permutes the allocation of seats in the same way. Informally, the names of the parties do not matter.
Instances
A rule is balanced if whenever two parties p and q have the same number of votes, then
the difference in the number of seats allocated to them is at most one.
Instances
A rules is decent if scaling the number of votes for each party by the same positive integer does not change the apportionment.
Instances
A rule is weakly exact if every Apportionment, when viewed as an input vote distribution
Election.votes, is reproduced as the unique solution.
Instances
A rule is a quota rule if the number of seats allocated to each party p is either the floor
or the ceiling of its Hare-quota.
Instances
A rule is population monotone (or vote ratio monotone) if population paradoxes do not occur.
A population paradox occurs when the support for party p increases at a faster rate than that for
party q, but p loses seats while q gains seats.
- population_monotonone (election₁ election₂ : Election) (p q : Party) : election₁.parties = election₂.parties ∧ election₁.house_size = election₂.house_size → election₂.votes p * election₁.votes q > election₂.votes q * election₁.votes p → ∀ App₁ ∈ rule.res election₁, ∀ App₂ ∈ rule.res election₂, ¬(App₁ p > App₂ p ∧ App₁ q < App₂ q)
Instances
If an anonymous rule is population monotone, then it is concordant.
Balinski-Young impossibility theorem: If an anonymous rule is a quota rule, then it is not population monotone. Thus, no apportionment method can satisfy both properties simultaneously.