Social-choice simulator
The Voting Paradox
Same ballots, different winners. Feed one set of 6 ballots to three "fair" voting
methods and they crown different candidates - a live Condorcet cycle from
PoliticalScience.Governance. The winner is not a
fact about the voters; it is an artifact of the counting rule.
| Matchup | Result | Winner |
|---|---|---|
| Amy vs Beto | 4-2 | Amy beats Beto |
| Amy vs Cruz | 2-4 | Cruz beats Amy |
| Beto vs Cruz | 4-2 | Beto beats Cruz |
Every candidate beats exactly one rival and loses to exactly one, by the same margin - a closed loop. Condorcet.FindWinner -> null: no Condorcet winner exists.
The methods DISAGREE - 2 different winners from identical ballots. The "winner" is not a fact about the voters; it is an artifact of which counting rule was chosen. Even where Schulze and Borda agree on Amy, the head-to-head table is a perfect symmetric tie - so that agreement is itself a tie-break artifact, not a deeper shared preference.
KullGames.VotingParadox -- same ballots, different winners ============================================================ 6 ballots over 3 candidates, a perfect rock-paper-scissors cycle: 2x Amy > Beto > Cruz 2x Beto > Cruz > Amy 2x Cruz > Amy > Beto Head-to-head majorities (computed from the ballots above): Amy vs Beto: 4-2 -> Amy beats Beto Amy vs Cruz: 2-4 -> Cruz beats Amy Beto vs Cruz: 4-2 -> Beto beats Cruz Condorcet.FindWinner (does anyone beat BOTH rivals head-to-head?) -> null -- NO Condorcet winner exists (cycle confirmed) Schulze (beatpath) -> Amy IRV (instant runoff) -> Beto (2 elimination round(s)) Borda count -> Amy IRV round 1: Amy=2, Beto=2, Cruz=2 -> eliminate Amy IRV round 2: Amy=0, Beto=4, Cruz=2 -> majority reached, done VERDICT: the methods DISAGREE -- 2 different winners from IDENTICAL ballots.