A voting proposal

I was thinking about an idea for voting; I don’t know if it’s been talked about before, or how feasible it is. The main purpose is to allow strategic voting in a way that makes a difference.

Basically, every vote should be not for a person, but for a short program. Every candidate is assigned a number. There is a system which maps any name to a number, so as to allow write ins. There is also another mapping from numbers to programs.

Each program gets as input all the other programs, and how many votes each of them got. Each program must output a number which corresponds to a candidate. To simplify, there will still be a standard slot for each candidate that qualifies (like today) that just runs the program “vote for candidate X no matter what”. Each program is limited in the amount of time it can run. Obviously, if your program is given the numbers of votes for the “standard” candidates, it won’t have a problem with running them in time, but there might be a problem with running other programs that try to run you. This may be solvable, similiar to the way Prisoner’s Dilemma problems with mutual cooperation can be solved when the programs can access each other’s source code.

The programs would be in a special language that is deterministic and “simple”. (In an intuitive sense, it should be a function from inputs to output that only depends on the inputs.)

One thing I should point out: this doesn’t take a lot of time to finish after the votes have been counted, as each program only has to be run once no matter how many votes it got. You could perhaps have a minimum number of votes each program needs to get before it is run at all, and put programs on the ballot that get a certain number of petition signers, or so on.

Any comments of refinements on this idea are welcome. I’d especially be interested if it turned out something like this has been talked about already.