Skip to content

Committee monotonicity (2 of 2) — add a seat, and five rules drop the winner

Generated from abc_committee_monotonicity_2seats_c3_b10.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.

Method: Approval Voting · 2 seats · Expected winners: A, C

Scenario

The other half of a matched pair: the SAME ten ballots as abc_committee_monotonicity_1seat_c3_b10.yaml, counted for TWO seats instead of one.

Two voters approve only A, three approve A and C, three approve B and C, two approve only B. Approval counts: C 6, A 5, B 5.

With one seat, eleven of the thirteen rules in Lackner & Skowron's Table 3.1 elect the consensus candidate C (SAV and rev-seq-PAV pick A or B instead). Add a seat and the rules split:

  • Approval Voting (the count in this file) keeps C and adds a second - so the one-seat winner is still seated. AV is committee monotone.
  • Chamberlin-Courant, PAV, Monroe, leximax-Phragmen and MAV all elect {A,B} and DROP C. The candidate who won outright when there was one seat is not on the committee once a seat is added.

That is what committee monotonicity (Definition 3.2) forbids, and the reason it matters is practical rather than aesthetic: a body that expects to grow - a hiring round that may fund one more post, a purchase list that may afford one more item - cannot use a rule whose answer to "who else?" is "start over".

A and B tie at 5 for the second seat, so AV's own answer here is a tie the engine settles by priority order; both tied committees contain C, which is the only part the lesson rests on.

Reproduce it: python 06_Other/abcvoting_tabulation_engine/abc_axiom_check.py

Source: Lackner, M. & Skowron, P. (2023), "Multi-Winner Voting with Approval Preferences", SpringerBriefs, doi:10.1007/978-3-031-09016-5, Proposition A.2.

Ballots

Row 1 = candidate names; each later row is one voter's approvals (1 = approve, 0/blank = not approved).

A,B,C
1,0,0   # 2 voters — approve A only
1,0,0
1,0,1   # 3 voters — approve A and C
1,0,1
1,0,1
0,1,1   # 3 voters — approve B and C
0,1,1
0,1,1
0,1,0   # 2 voters — approve B only
0,1,0

What the engine says

Full report from the _tabulated mirror (regenerated on every run; every analysis forced on):

--- Approval Voting (2 winners) ---
 Tabulating 10 ballots (any non-zero score = approval).

Ballots:
   columns = A, B, C      (1 = approve; 0 = not approved)
     2 × 1,0,0
     3 × 1,0,1
     3 × 0,1,1
     2 × 0,1,0

   C -- 6 (60%) -- Elected
   A -- 5 (50%) -- Elected
   B -- 5 (50%)
  Note: A, B each have 5 approvals and tie for the last 1 seat.
        Candidate priority order (A > B) broke the tie: A elected, B not elected.

[Approval Distribution] (how many candidates each ballot approved)
   16 approvals across 10 ballots — average 1.6 of 3 (range 1–2).
     approved 1: 4 ballots
     approved 2: 6 ballots

[Co-Approval Matrix]
 Of the voters who approved the ROW candidate, the % who ALSO approved the COLUMN candidate.
      |   C    |   A    |   B    |
   -------------------------------
   C  |   --   |  50%   |  50%   |
   A  |  60%   |   --   |   0%   |
   B  |  60%   |   0%   |   --   |

Winners — Approval Voting (2 winners)
  C, A

Run it yourself:

python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 04_Approval/03_Criteria/cases/abc_committee_monotonicity_2seats_c3_b10.yaml

See also

More cases in this set: abc_committee_monotonicity_1seat_c3_b10 · cc_pareto_dominated_c4_b2 · monroe_pareto_dominated_c4_b24 · resign_av_holds_after_kai_c6_b5 · resign_av_holds_c7_b5 · resign_rrv_after_hana_c4_b5 · resign_rrv_seated_c5_b5 · resign_star_pr_after_bruno_c3_b5 · resign_star_pr_seated_c4_b5 · sav_strategy_bullet_vote_c5_b2