Code for simulating Turing machines, especially the 5-state 2-symbol Turing machine known as Skelet 1.
The behavior of Skelet 1 is complicated and involves four levels of abstraction. Eventually, it enters into an infinite loop where each cycle occurs shifted over on the tape -- therefore, Skelet 1 is a translated cycler. Shawn Ligocki has some blog posts describing Skelet 1 in more detail.
Here, I have implemented a series of simulators for increasingly accelerated simulations of Skelet 1:
- The basic Turing machine simulation - operates on ones and zeros
- Run length encoding simulation - run length enconding of the 1s
- Counter simulation
- Counter simulation with the stride rule
- Counter simulation with the stride rule and uni-cycles
Previously, it was not known when exactly Skelet 1 enters into the infinite loop, as it is kind of tedious to figure out how many base steps it takes to complete one stride or one set of uni-cycles. This is what I worked on: if my math is not wrong, then Skelet 1 enters into the infinite cycle at around
give or take one or two cycle periods.
The main method is currently set to run an accelerated simulator all the way to the translated cycle.
The folder turing_machine_traces/
contains some other simulation traces for Skelet 1.
While writing this code, I referred to @uni's Skelet 1 simulator.