Documentation

EconCSLib.SocialChoice.Voting.VotingRules

EconCSLib.SocialChoice.Voting.VotingRules #

Concrete voting-rule vocabulary over strict finite profiles.

The main rules in this file are set-valued: ties are represented by multiple winners in the returned Finset.

Main definitions #

Main result #

Rank and position #

noncomputable def SocialChoice.Voting.rank {A : Type u_2} [Fintype A] (r : LinearOrder A) (a : A) :

rank r a is the number of alternatives strictly above a in ballot r.

Equations
Instances For
    noncomputable def SocialChoice.Voting.position {A : Type u_2} [Fintype A] (r : LinearOrder A) (a : A) :

    The 1-based position of a in ballot r.

    Equations
    Instances For
      theorem SocialChoice.Voting.position_eq_rank_succ {A : Type u_2} [Fintype A] (r : LinearOrder A) (a : A) :
      position r a = rank r a + 1
      theorem SocialChoice.Voting.rank_lt_of_lt {A : Type u_2} [Fintype A] (r : LinearOrder A) {a b : A} (hab : BallotPrefers r a b) :
      rank r a < rank r b
      theorem SocialChoice.Voting.rank_lt_iff {A : Type u_2} [Fintype A] (r : LinearOrder A) {a b : A} :
      rank r a < rank r b BallotPrefers r a b

      Pairwise majority and margins #

      noncomputable def SocialChoice.Voting.votersPreferring {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a b : A) :

      Voters who strictly prefer a to b.

      Equations
      Instances For
        noncomputable def SocialChoice.Voting.margin {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a b : A) :

        Pairwise majority margin: voters preferring a to b minus voters preferring b to a.

        Equations
        Instances For
          def SocialChoice.Voting.margin_pos {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a b : A) :

          Positive pairwise majority margin.

          Equations
          Instances For
            theorem SocialChoice.Voting.margin_self {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a : A) :
            margin P a a = 0
            theorem SocialChoice.Voting.margin_skew {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a b : A) :
            margin P a b = -margin P b a
            def SocialChoice.Voting.MajorityPrefers {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a b : A) :

            Pairwise majority comparison.

            Equations
            Instances For
              def SocialChoice.Voting.CondorcetWinner {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a : A) :

              a is a Condorcet winner if it beats every other alternative by strict pairwise majority.

              Equations
              Instances For
                def SocialChoice.Voting.HasCondorcetWinner {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) :

                A profile has at least one Condorcet winner.

                Equations
                Instances For

                  A rule is Condorcet-consistent if every Condorcet winner is the unique winner.

                  Equations
                  Instances For

                    Scoring rules #

                    noncomputable def SocialChoice.Voting.scoreCandidate {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (score : ) (a : A) :

                    Total score for a candidate under a positional score vector.

                    Equations
                    Instances For
                      noncomputable def SocialChoice.Voting.scoringWinners {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (score : ) :

                      Winners with maximal score.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        noncomputable def SocialChoice.Voting.scoringRule {N : Type u_1} {A : Type u_2} (score : ) [Fintype N] [Fintype A] :

                        Generic positional scoring rule. The first argument is the number of alternatives, and the second is the zero-based rank.

                        Equations
                        Instances For
                          theorem SocialChoice.Voting.scoringWinners_nonempty {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] [Nonempty A] (P : Profile N A) (score : ) :
                          theorem SocialChoice.Voting.scoringRule_isTotal {N : Type u_1} {A : Type u_2} (score : ) [Fintype N] [Fintype A] [Nonempty A] :

                          Plurality score vector.

                          Equations
                          Instances For

                            Borda score vector, with top rank receiving m - 1 points.

                            Equations
                            Instances For

                              Veto score vector: every non-last rank receives one point.

                              Equations
                              Instances For

                                Copeland rule #

                                noncomputable def SocialChoice.Voting.copelandScore {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] (P : Profile N A) (a : A) :

                                Copeland score: pairwise majority wins minus pairwise majority losses.

                                Equations
                                Instances For
                                  noncomputable def SocialChoice.Voting.copeland {N : Type u_1} {A : Type u_2} [Fintype N] [Fintype A] :

                                  Copeland winners.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    Condorcet paradox #

                                    Condorcet paradox: with 3 voters and 3 alternatives, pairwise majority can cycle, so a Condorcet winner need not exist.