Shift rule: Difference between revisions
m (fix typo) |
(→Simulation Acceleration: Fix TM example (it was flipped)) |
||
Line 47: | Line 47: | ||
== Simulation Acceleration == | == Simulation Acceleration == | ||
One of the main uses of shift rules is to [[Accelerated Simulator|accelerate simulation]] of TMs. For example, consider the simple [[Bouncer]]: | One of the main uses of shift rules is to [[Accelerated Simulator|accelerate simulation]] of TMs. For example, consider the simple [[Bouncer]]: {{TM|1RB1LA_1LA1RB}} using the shift rules: | ||
<math display="block">\begin{array}{c} | |||
\\ | \\ | ||
\textrm{A | 1^n \; \textrm{<A} & \xrightarrow{n} & \textrm{<A} \; 1^n \\ | ||
\textrm{B>} \; 1^n & \xrightarrow{n} & 1^n \; B> \\ | |||
\end{array}</math>We can accelerate the simulation like this:<math display="block">\begin{array}{c} | \end{array}</math> | ||
0^\infty \; \textrm{A | |||
0^\infty \; \textrm{ | We can accelerate the simulation like this: | ||
0^\infty \; 1 \; \textrm{A | <math display="block">\begin{array}{c} | ||
0^\infty | 0^\infty \; \textrm{<A} \; 0^\infty \\ | ||
0^\infty \; 1 \; \textrm{B>} \; 0^\infty \\ | |||
0^\infty \; 1 \; \textrm{<A} \; 1 \; 0^\infty \\ | |||
0^\infty \; \textrm{<A} \; 1^2 \; 0^\infty \\ | |||
\vdots \\ | \vdots \\ | ||
0^\infty \; | 0^\infty \; \textrm{<A} \; 1^{2n} \; 0^\infty \\ | ||
0^\infty \; 1 | 0^\infty \; 1 \; \textrm{B>} \; 1^{2n} \; 0^\infty \\ | ||
0^\infty | 0^\infty \; 1^{2n+1} \; \textrm{B>} \; 0^\infty \\ | ||
0^\infty \; 1 \; \textrm{A | 0^\infty \; 1^{2n+1} \; \textrm{<A} \; 1 \; 0^\infty \\ | ||
0^\infty \; 1^{2n+2 | 0^\infty \; \textrm{<A} \; 1^{2n+2} \; 0^\infty \\ | ||
\vdots \\ | \vdots \\ | ||
\end{array}</math>In this case, this allows simulating <math>O(n^2)</math> base TM steps using only <math>n</math> simulator steps which is the best-case speedup using only shift rules. But further acceleration can also be built on top of this by using more general [[Inductive Proof System|inductive rules]]. | \end{array}</math> | ||
In this case, this allows simulating <math>O(n^2)</math> base TM steps using only <math>n</math> simulator steps which is the best-case speedup using only shift rules. But further acceleration can also be built on top of this by using more general [[Inductive Proof System|inductive rules]]. | |||
== Prove Non-halting == | == Prove Non-halting == | ||
Shift rules can be used to prove non-halting. For example, if you have a shift rule <math display="block">\textrm{S>} \; 0^n \to 1^n \; \textrm{S>}</math>and the TM reaches configuration<math display="block">\textrm{S>} \; 0^\infty</math>then it is guaranteed to never halt, because this rule will repeat forever. This is an example of a [[Translated Cycler]]. | Shift rules can be used to prove non-halting. For example, if you have a shift rule <math display="block">\textrm{S>} \; 0^n \to 1^n \; \textrm{S>}</math>and the TM reaches configuration<math display="block">\textrm{S>} \; 0^\infty</math>then it is guaranteed to never halt, because this rule will repeat forever. This is an example of a [[Translated Cycler]]. |
Revision as of 14:42, 12 April 2025
A shift rule (also called a chain rule) is a finite sequence of transitions which may be repeated an arbitrary number of times to "jump" over an entire repeated block of symbols on a compressed tape.
A simple canonical example is that if we have a TM with transition then using directed head notation:
To give a precise definition, suppose that there are words , and in the alphabet of the Turing machine in question, and assume that for some state S the machine transitions from to . Then we have a right shift rule
General Shift Rules
Shift rules can jump over larger blocks. For example Skelet #1 (1RB1RD_1LC0RC_1RA1LD_0RE0LB_---1RC
) exhibits the following transitions:
Inductive Rules
Shift rules can be seen as the simplest example of Inductive rules. Specifically, they are Level 0 Inductive rules which only use the inductive hypothesis once: Tape rewrite rules that can be proven using induction, where each step in the proof is either a basic TM transition or an inductive application of the rule being proven (but do not use any other previously proven rules).
Simulation Acceleration
One of the main uses of shift rules is to accelerate simulation of TMs. For example, consider the simple Bouncer: 1RB1LA_1LA1RB
(bbch) using the shift rules:
We can accelerate the simulation like this:
In this case, this allows simulating base TM steps using only simulator steps which is the best-case speedup using only shift rules. But further acceleration can also be built on top of this by using more general inductive rules.
Prove Non-halting
Shift rules can be used to prove non-halting. For example, if you have a shift rule