Library board by Combined Approval Voting — the newcomer nobody dislikes¶
Generated from cav_library_board_c3_b12.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.
Method: Combined Approval Voting (CAV) · 1 seat · Expected winner: Cleo
Scenario¶
Twelve neighbours elect one seat on a town library board.
Alma and Byron are the known quantities, and both are polarising: four voters vote For each of them, and roughly as many vote Against. Cleo is a newcomer. Only three voters have met her — all three vote For — and the other nine have no opinion and abstain. Nobody votes Against her.
Under CAV an abstention is genuinely free: it adds nothing and subtracts nothing. So Cleo's nine blanks cost her nothing, her three approvals stand unopposed, and she wins on net score (+3) ahead of Byron (+1) and Alma (−1).
The companion file cav_library_board_blank_is_zero_c3_b12.yaml gives these
twelve voters the SAME marks on an ordinary score ballot, where an unmarked
candidate scores 0 — the bottom of the scale rather than the middle. That one
change reverses the field completely: Byron 10, Alma 8, Cleo 6. Read the pair
together; the difference is entirely in what a blank is taken to mean.
Ballots¶
Row 1 = candidate names; each later row is one voter's 0–5 scores (a N × prefix = N identical ballots).
Alma,Byron,Cleo
2,0,1 # 1 Alma's camp — For Alma, Against Byron, no opinion on Cleo
2,0,1 # 2 Alma's camp
2,0,1 # 3 Alma's camp
2,0,1 # 4 Alma's camp
0,2,1 # 5 Byron's camp — mirror image
0,2,1 # 6 Byron's camp
0,2,1 # 7 Byron's camp
0,2,1 # 8 Byron's camp
1,1,2 # 9 knows only Cleo, and likes her
0,1,2 # 10 Against Alma, no opinion on Byron, For Cleo
1,1,2 # 11 knows only Cleo, and likes her
1,2,1 # 12 For Byron, no opinion on the other two
What the engine says¶
Full report from the _tabulated mirror (regenerated on every run; every analysis forced on):
--- Combined Approval Voting (CAV, single winner) ---
Library board by Combined Approval Voting — the newcomer nobody dislikes
Tabulating 12 ballots on the three-level For / abstain / Against
ballot. Highest NET score (approvals − disapprovals) wins.
[Scenario]
Twelve neighbours elect one seat on a town library board.
Alma and Byron are the known quantities, and both are polarising: four voters
vote For each of them, and roughly as many vote Against. Cleo is a newcomer.
Only three voters have met her — all three vote For — and the other nine have
no opinion and abstain. Nobody votes Against her.
Under CAV an abstention is genuinely free: it adds nothing and subtracts
nothing. So Cleo's nine blanks cost her nothing, her three approvals stand
unopposed, and she wins on net score (+3) ahead of Byron (+1) and Alma (−1).
The companion file `cav_library_board_blank_is_zero_c3_b12.yaml` gives these
twelve voters the SAME marks on an ordinary score ballot, where an unmarked
candidate scores 0 — the bottom of the scale rather than the middle. That one
change reverses the field completely: Byron 10, Alma 8, Cleo 6. Read the pair
together; the difference is entirely in what a blank is taken to mean.
Ballots (2 = For, 1 = abstain, 0 = Against):
Alma, Byron, Cleo
2, 0, 1
2, 0, 1
2, 0, 1
2, 0, 1
0, 2, 1
0, 2, 1
0, 2, 1
0, 2, 1
1, 1, 2
0, 1, 2
1, 1, 2
1, 2, 1
Vote tally:
For Abstain Against Net
Cleo 3 9 0 +3 ← winner
Byron 5 3 4 +1
Alma 4 3 5 -1
Verification 1 — affine invariance (the (0,1,2) reading):
The same marks summed as 0/1/2 must exceed the net total by exactly
the ballot count (12) for every candidate, and must rank the field
the same way. That is what makes CAV 'three-level score voting'.
Cleo net +3 +12 = 15 (0/1/2 sum 15)
Byron net +1 +12 = 13 (0/1/2 sum 13)
Alma net -1 +12 = 11 (0/1/2 sum 11)
✓ holds — the (−1,0,+1) and (0,1,2) scales agree.
Verification 2 — pref_voting score_voting on the (0,1,2) profile: Cleo
(✓ agrees with the CAV count)
Winner — Combined Approval Voting (single winner)
Cleo
Run it yourself:
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 06_Other/Combined_Approval/cases/cav_library_board_c3_b12.yaml
See also¶
More cases in this set: cav_library_board_blank_is_zero_c3_b12