Skip to content

When compression moves the Condorcet winner — Black Curtain #1, read three ways

Five voters, one set of opinions, three ways of writing them down. On the full score ballot Cal is the Condorcet winner — he beats everyone head-to-head. Compress those same opinions into approve / don't-approve and the Condorcet winner becomes Bob — legitimately, on the ballots as recorded. Neither count is wrong. The difference is the compression, and you can watch exactly where it happens: in the Equal Support column of the pairwise matrix.

→ The set: The Black Curtain · the theory this is the limit of: Approval in the theory literature · Approval's honest limits · scores vs ranks. Cases: 01 full scores · 01a the approval count · 01b the compressed ballot.


The five voters

Three voters love Cal and can't stand Ann; two are the mirror image. Every one of the five rates Bob a 4 — nobody's favorite, everybody's strong second.

voter Ann Bob Cal
1 0 4 5
2 0 4 5
3 0 4 5
4 5 4 0
5 5 4 0

That is the whole election. Everything below is the same five rows, written down with less resolution each time.

Reading 1 — the full score ballot

Every voter has a strict opinion about every pair, so the pairwise matrix has no Equal Support anywhere, and Cal wins all three of his matchups:

[Divergence from STAR]
  STAR     = Cal
  Approval = Bob   (differs from STAR)

[Runoff Reversal]
 - Score Round Winner(s) = (Bob)
 - Runoff Round Winner   = (Cal)
  Candidate Bob earned the highest total score, but
  Candidate Cal won the automatic runoff — not a malfunction,
  STAR working as designed: the runoff elects the finalist preferred
  by the majority (of voters with a preference).

--- STAR Voting Method (single winner) ---

[STAR Voting]
 Tabulating 5 ballots.
Count × Ann,Bob,Cal
    3 ×   0,  4,  5
    2 ×   5,  4,  0

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   Bob           -- 20 -- First place
   Cal           -- 15 -- Second place
   Ann           -- 10
 Bob and Cal advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Cal           -- 3 -- First place
   Bob           -- 2
   Equal Support -- 0
 Cal wins.
   Runoff math:
     5  ballots cast
   − 0  Equal Support (no preference between the two finalists)
     ─
     5  voters with a preference  (majority = 3)
           Cal 3 (60%)  ·  Bob 2 (40%)

[STAR Voting: Winner — STAR Voting Method (single winner)]
 Cal

Cal is the Condorcet winner and the STAR winner — the 3-voter majority's favorite, and their preference for Cal over Bob (5 vs 4) is what the runoff reads. Full report: Black Curtain #1.

Reading 2 — the approval count

Now the same voters mark an approval ballot. Following the source video's threshold, a 3 or better is an approval — so voters 1–3 approve {Bob, Cal} and voters 4–5 approve {Ann, Bob}:

--- Approval Voting (single winner) ---
 Tabulating 5 ballots (any non-zero score = approval).

   Bob -- 5 (100%) -- Elected
   Cal -- 3 (60%)
   Ann -- 2 (40%)

Bob wins, unanimously approved. This is the headline result of the Black Curtain set: same voters, different method, different winner. Full report: 01a.

Reading 3 — the approval marks, read pairwise

Here is the step that makes the lesson precise. Take those approval marks and read them as a ballot — approved above not-approved, nothing said within either group — then ask the head-to-head questions again (case 01b):

--- STAR Voting Method (single winner) ---

[STAR Voting]
 Tabulating 5 ballots.
Count × Ann,Bob,Cal
    3 ×   0,  5,  5
    2 ×   5,  5,  0

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   Bob           -- 25 -- First place
   Cal           -- 15 -- Second place
   Ann           -- 10
 Bob and Cal advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Bob           -- 2 -- First place
   Cal           -- 0
   Equal Support -- 3
 Bob wins.
   Runoff math:
     5  ballots cast
   − 3  Equal Support (no preference between the two finalists)
     ─
     2  voters with a preference  (majority = 2)
           Bob 2 (100%)  ·  Cal 0 (0%)

[STAR Voting: Winner — STAR Voting Method (single winner)]
 Bob

Bob is now the Condorcet winner, and honestly so: he beats Cal 2–0 and Ann 3–0 on these ballots. Nobody prefers Cal to Bob any more — not because anyone changed their mind, but because the three voters who prefer Cal approved both of them, and an approval ballot has no way to say which one they like better.

Where the information went

Compare the two matrices in one place. The Equal Support column was zero everywhere on the score ballot; on the compressed ballot it holds every preference the count needs:

Pair Full scores Compressed to approve / don't-approve
Cal vs Bob Cal 3–2 (voters 1–3 rate Cal 5, Bob 4) Bob 2–0, with 3 Equal Support — the Cal-over-Bob preference is gone
Ann vs Bob Bob 3–2 (voters 4–5 rate Ann 5, Bob 4) Bob 3–0, with 2 Equal Support — the Ann-over-Bob preference is gone
Cal vs Ann Cal 3–2 Cal 3–2 — unchanged; nobody approved both
Condorcet winner Cal Bob

Read the pattern: the compression didn't blur things at random. It erased, for every single voter, the distinction between their favorite and their acceptable compromise — and preserved perfectly the distinction between the candidates they love and the one they loathe. That is what a one-bit ballot is for, and it is also exactly the distinction STAR's automatic runoff uses to decide the election. Take it away and the runoff has nothing left to read.

This is not an indictment of Approval

The tempting conclusion — "Approval got it wrong" — doesn't survive the third reading. Run STAR on the compressed ballots and it also elects Bob (scoring round Bob 25, Cal 15; runoff Bob 2, Cal 0, Equal Support 3). So does any Condorcet method, since Bob beats everyone. Every method here elects Bob once the ballot is dichotomous, because the preference that favored Cal is no longer on the ballot for any of them to count. The counting rule isn't what changed the winner; the ballot is. That distinction is the whole point of the Black Curtain: what your ballot can record bounds what any method can know.

It also isn't an argument that Cal is the "right" answer. Bob is unanimously approved and everyone's strong second; Cal is the passionate favorite of a 3–2 majority and rated zero by the other two. Which one should win is the values question the source video is asking — this page is only about which questions each ballot leaves it possible to ask.

What it says about "Approval = Borda = Condorcet"

There's a clean theory result behind this: on the domain of dichotomous preferences — weak rankings with exactly two indifference classes, which is precisely what an approval ballot is — approval voting coincides with Borda and with every Condorcet method, and a Condorcet winner is guaranteed to exist. No cycles are possible there.

Reading 3 satisfies that theorem exactly: the compressed profile has a Condorcet winner (Bob), and the approval count picks him. So the theorem is not in question — this case is an instance of it.

What the case shows is the size of the domain restriction. Approval ballots in a real election are not drawn from a dichotomous electorate; they are produced by voters compressing richer opinions on the spot, and the Condorcet winner of what they compressed can differ from the Condorcet winner of what they wrote. The equivalence describes the ballots, not the voters. That's the difference between "Approval elects the Condorcet winner" (overclaim) and "Approval elects the Condorcet winner of the approval ballots" (true, and much weaker than it sounds). Background and sources: Approval in the theory literature.

Run it yourself

python STARVote_LH_tabulation_engine/starvote_larry_hastings.py method_comparisons/black_curtain/cases/Black_Curtain_01b_c3_b5_dichotomous.yaml

An engine note, in the spirit of this folder's "verify, don't trust" lesson. Case 01b encodes an approval as a 5 and a non-approval as a 0. The magnitudes don't matter — the pairwise counts depend only on the two-class order, so a 1/0 ballot produces an identical matrix. But if you rewrite it as 1/0, the engine's [Divergence from STAR] cross-check prints a wrong Approval winner: that comparator hard-codes "a score of 3, 4 or 5 is an approval," so on a 1/0 ballot it sees nobody approving anybody and reports whichever candidate wins the resulting all-zero tiebreak. (The real Approval tabulator uses a different rule — any non-zero score is an approval — which is why 01a counts correctly.) The two disagree on any ballot using scores of 1 or 2; the same misprint is visible today in star_ala_approval.

See also

file: condorcet_compression.md