Skip to content

Palpatine is an STV Vote Counter implemented in Idris.

Notifications You must be signed in to change notification settings

kevinjcliao/palpatine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Palpatine is an STV Vote Counter implemented in Idris.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published