25 Lines of Ruby That Show Free Will is Likely Impossible

I have an argument against free will called The Two-lever Argument. There are many definitions of free will, so we should start with one before proceeding:

free will
The ability to have chosen otherwise for any previous conscious decision.

The Two-lever Argument says that there are only two ways to influence future events (and thus have free will): 1) by controlling a previous state of the universe, or 2) by controlling how that state transitions to the next.

To illustrate this stepping through time instant by instant, here are 25 lines of code that start one instant after the big bang and then check the two requirements for free will for each one:

two lever code abridged 25 Lines of Ruby That Show Free Will is Likely Impossible

Here’s what it looks like when executed:

two lever argument ruby 25 Lines of Ruby That Show Free Will is Likely Impossible

All the universe’s instants work this way, including the one that just passed…and the one about to come…

To debate the argument rather than the code, please refer to the argument itself.


  1. Here’s the code without comments.
  2. The laws of the universe include randomness, but randomness merely prevents things from being completely predictable. Randomness grants no measure of control to humans.
  3. It’s possible to this using a far more compact program. It was lengthened on purpose in order to transparently illustrate the free-will-granting possibilities for each instant.
  4. Here’s an evolutionary explanation for why we *experience* free will.
  5. Here’s an essay on why free will matters, and why it’s not depressing that we don’t have it.

Sign Up For Email Updates

If you’d like discuss this content, please reply on Twitter, email me, or comment below.

blog comments powered by Disqus