Downward monotonicity (San Francisco D7 2020) — AFTER: rank the loser lower, he wins¶
Generated from sf_d7_downward_after.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.
Method: RCV-IRV (Instant Runoff) · 1 seat · Expected winner: Engardio
Scenario¶
The BEFORE file (sf_d7_downward_before) exactly, with ONE change: 800 ballots of the form Engardio>Nguyen>Melgar are shifted DOWN to Nguyen>Engardio>Melgar. Nothing else moves. This gives the previous LOSER Engardio LESS first-place support (14119 -> 13319) — yet he now WINS. Why: the shifted votes lift Nguyen's first-round count (10855 -> 11655) just past Melgar's 11652, so MELGAR is eliminated first instead of Nguyen; Melgar's ballots transfer, and Engardio beats Nguyen in the final, 15819-15155. Ranking the loser lower made the loser win — the downward monotonicity paradox (Graham-Squire & McCune, arXiv:2301.12075). As in the Alaska upward case, the paradox works by changing the ORDER of elimination. The Melgar/Nguyen Round-1 gap is just 3 votes — this is a genuine knife-edge, which is why the real, full-scale counts (not a reduced model) are used. Companion page: downward_monotonicity_sf.md.
Ballots¶
Each row is one voter's ranking, most-preferred first (N: prefix = N identical ballots).
13319:Engardio>Melgar>Nguyen
2500:Melgar>Engardio>Nguyen
3500:Melgar>Nguyen>Engardio
5652:Melgar
6909:Nguyen>Melgar>Engardio
3051:Nguyen>Engardio>Melgar
1695:Nguyen
What the engine says¶

Where the votes went. Band thickness is votes; a band leaving an eliminated candidate lands on whoever that ballot ranked next, or on inactive if it ranked nobody who was left.
The count, step by step — the rounds and how the winner is reached:
--- RCV / Instant-Runoff Voting (single winner) ---
Downward monotonicity (San Francisco D7 2020) — AFTER: rank the loser lower, he wins
Tabulating 36626 ballots (ranked ballots).
ROUND 1
Candidate Votes Status
----------- ------- --------
Engardio 13319 Hopeful
Nguyen 11655 Hopeful
Melgar 11652 Rejected
FINAL RESULT
Candidate Votes Status
----------- ------- --------
Engardio 15819 Elected
Nguyen 15155 Rejected
Melgar 0 Rejected
Blank Votes 5652 Rejected
Winner(s) — RCV / Instant-Runoff Voting (single winner)
Engardio
--- Transfers and inactive ballots (what the round tables leave out) ---
The tables above give each candidate's round total but not where a
transferred vote came FROM, nor how many ballots stopped counting.
Both are recomputed from the ballots, using the eliminations the
count above actually made.
ROUND 1 — 36626 of 36626 ballots still active; majority = 18314
Melgar eliminated with 11652:
→ (no continuing ranking) 5652 ← these ballots go inactive
→ Nguyen 3500
→ Engardio 2500
FINAL ROUND — 30974 of 36626 ballots still active (5652 inactive); majority = 15488
Engardio 15819 (51.1% of the still-active) ← elected
Nguyen 15155 (48.9% of the still-active)
Never exhausted, never transferred:
13460 ballots held by Nguyen carried a lower ranking that was never read
(the count stopped here, so those preferences did nothing).
Inactive ballots at the final round: 5652 of 36626 (15.4%).
Engardio's 15819 is a majority of the 30974 still active but only 43.2% of all 36626 cast —
the 'majority' here is of a shrunken denominator. See
06_Other/RCV_IRV/concepts/RCV_IRV_exhausted_ballots.md
Full audit — preference matrix, Condorcet, and score distribution¶
--- Smith Set (the generalized Condorcet winner) ---
The smallest group whose every member beats every candidate outside it —
the honest answer to "who is even in contention?".
Smith set (1 of 3): Melgar
Outside (2): Engardio, Nguyen
One member ⇒ Melgar is the Condorcet winner, beating every rival head-to-head.
RCV-IRV winner Engardio is OUTSIDE the Smith set. ✗
Every member of the set (Melgar) beats Engardio head-to-head, yet
RCV-IRV elected Engardio anyway. RCV-IRV is not Smith-efficient (nor
Condorcet-efficient) — this is the shape a center squeeze leaves behind.
More: 07_Concepts/topics/smith_set.md
Everything in one file: the _tabulated mirror (regenerated on every run; every analysis forced on).
Run it yourself:
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py method_comparisons/monotonicity/cases/sf_d7_downward_after.yaml
See also¶
More cases in this set: alaska_upward_after · alaska_upward_before · mono_raise_delete_after · mono_raise_delete_before · monotonicity_irv_after · monotonicity_irv_before · monotonicity_star_after · monotonicity_star_before · sf_d7_downward_before