Skip to content

Latest commit

 

History

History
45 lines (34 loc) · 1.61 KB

README.md

File metadata and controls

45 lines (34 loc) · 1.61 KB

Palpatine: STV Vote Counter

Chancellor Palpatine

The Senate will decide your fate.
I am the senate.
-(Mace Windu and Chancellor Palpatine, 19BBY).

During elections, ballots for the Australian senate are currently counted by proprietary, unverified software. This pressing issue is what is driving me to write Palpatine, a vote counter for the STV system written in Edwin Brady's Idris. The next steps will be to see how a dependently-typed language can give us better guarantees of program-correctness.

Palpatine is part of my senior thesis at Haverford College, which I am undertaking under the advisement of Professor Richard Eisenberg.

Running Palpatine:

You should have Idris installed. This is usually as easy as:
cabal install idris

Palpatine is set up as an Idrin project. You should follow the steps on the Idrin Github to install Idrin. After which, you should be able to do:

idrin build
idrin run <FILENAME>

File format: Palpatine parses files in the following format:

[comma-separated list of candidates]:seats
[comma-separated candidate preferences]
[comma-separated candidate preferences]
etc. 

A sample small_election file is provided below for your reference.

[A,B,C]:2
[A,C]
[A,B,C]
[A,C,B]
[B,A]
[C,B,A]

This elects 2 candidates out of a pool 3 candidates, A B and C.