<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bbchallenge.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Savask</id>
	<title>BusyBeaverWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bbchallenge.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Savask"/>
	<link rel="alternate" type="text/html" href="https://wiki.bbchallenge.org/wiki/Special:Contributions/Savask"/>
	<updated>2026-04-30T19:03:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bbchallenge.org/w/index.php?title=Shift_rule&amp;diff=206</id>
		<title>Shift rule</title>
		<link rel="alternate" type="text/html" href="https://wiki.bbchallenge.org/w/index.php?title=Shift_rule&amp;diff=206"/>
		<updated>2024-06-15T11:30:24Z</updated>

		<summary type="html">&lt;p&gt;Savask: Added the definition of a shift rule, tried to correct some vertical spaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;shift rule&#039;&#039;&#039; (also called a &#039;&#039;&#039;chain rule&#039;&#039;&#039;) is a finite sequence of transitions which may be repeated an arbitrary number of times to &amp;quot;jump&amp;quot; over an entire repeated block of symbols on a compressed tape.&lt;br /&gt;
&lt;br /&gt;
A simple canonical example is that if we have a TM with transition &amp;lt;math&amp;gt;(S, 1) \to (0, R, S)&amp;lt;/math&amp;gt; then using [[directed head notation]]:&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
  \vphantom{\int}\textrm{S&amp;gt;} \; 1^n \xrightarrow{n} 0^n \; \textrm{S&amp;gt;}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
In other words, if the TM is in state S reading the leftmost of a sequence of n ones, then n steps later it will have moved to the right of this entire sequence of ones, converting them all to zeros.&lt;br /&gt;
&lt;br /&gt;
To give a precise definition, suppose that there are words &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r&#039;&amp;lt;/math&amp;gt; in the alphabet of the Turing machine in question,&lt;br /&gt;
and assume that for some state S the machine transitions from &amp;lt;math&amp;gt;t \; \textrm{S&amp;gt;} \; r&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;r&#039; t \; \textrm{S&amp;gt;}&amp;lt;/math&amp;gt;. Then we have a &#039;&#039;right&#039;&#039; shift rule&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
  \vphantom{\int} t \; \textrm{S&amp;gt;} \; r \to r&#039; t \; \textrm{S&amp;gt;}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Similarly, if the machine transitions from &amp;lt;math&amp;gt; r \; \textrm{&amp;lt;S} \; t&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;\textrm{&amp;lt;S} \; t r&#039;&amp;lt;/math&amp;gt;, then we have a &#039;&#039;left&#039;&#039; shift rule&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
  \vphantom{\int} r \; \textrm{&amp;lt;S} \; t \to \textrm{&amp;lt;S} \; r&#039; t.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General Shift Rules ==&lt;br /&gt;
Shift rules can jump over larger blocks. For example [[Skelet 1|Skelet #1]] (&amp;lt;code&amp;gt;1RB1RD_1LC0RC_1RA1LD_0RE0LB_---1RC&amp;lt;/code&amp;gt;) exhibits the following transitions:&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
\begin{array}{c}&lt;br /&gt;
  \\&lt;br /&gt;
  011 \; \textrm{&amp;lt;C}       &amp;amp; \xrightarrow{3} &amp;amp; \textrm{&amp;lt;C} \; 101 \\&lt;br /&gt;
  \textrm{A&amp;gt;} \; 110 110 &amp;amp; \xrightarrow{10} &amp;amp; 011 011 \; A&amp;gt;&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
and so each of these can be repeated an arbitrary number of times as&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
\begin{array}{c}&lt;br /&gt;
  \\&lt;br /&gt;
  011^n \; \textrm{&amp;lt;C}       &amp;amp; \xrightarrow{3n} &amp;amp; \textrm{&amp;lt;C} \; 101^n \\&lt;br /&gt;
  \textrm{A&amp;gt;} \; {110 110}^n &amp;amp; \xrightarrow{10n} &amp;amp; {011 011}^n \; A&amp;gt; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Shift rules can also depend upon additional &amp;quot;local context&amp;quot;. For example Skelet #1 also exhibits transition:&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
  \vphantom{\int} 01 \; \textrm{&amp;lt;C} \, 1 \xrightarrow{6} \textrm{&amp;lt;C} \, 1 \; 01&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
and since the resulting config has the same &amp;quot;context&amp;quot; (a 1 behind the TM head), this can be repeated as well to produce the shift rule:&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
\vphantom{\int} 01^n \; \textrm{&amp;lt;C} \, 1 \xrightarrow{6n} \textrm{&amp;lt;C} \, 1 \; 01^n.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inductive Rules ==&lt;br /&gt;
Shift rules can be seen as the simplest example of [[Inductive rule|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).&lt;br /&gt;
&lt;br /&gt;
== Simulation Acceleration ==&lt;br /&gt;
One of the main uses of shift rules is to accelerate simulation of TMs. For example, consider the simple [[Bouncer]]: [https://bbchallenge.org/1RB1LA_1LA1RB &amp;lt;code&amp;gt;1RB1LA_1LA1RB&amp;lt;/code&amp;gt;] using the shift rules:&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\begin{array}{c}&lt;br /&gt;
  \\&lt;br /&gt;
  \textrm{A&amp;gt;} \; 1^n &amp;amp; \xrightarrow{n} &amp;amp; 1^n \; A&amp;gt; \\&lt;br /&gt;
  1^n \; \textrm{&amp;lt;B}       &amp;amp; \xrightarrow{n} &amp;amp; \textrm{&amp;lt;B} \; 1^n \\&lt;br /&gt;
\end{array}&amp;lt;/math&amp;gt;We can accelerate the simulation like this:&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\begin{array}{c}&lt;br /&gt;
  0^\infty \; \textrm{A&amp;gt;} \; 0^\infty \\&lt;br /&gt;
  0^\infty \; \textrm{&amp;lt;B} \; 1 \; 0^\infty \\&lt;br /&gt;
  0^\infty \; 1 \; \textrm{A&amp;gt;} \; 1 \; 0^\infty \\&lt;br /&gt;
  0^\infty \; 1^2 \; \textrm{A&amp;gt;} \; 0^\infty \\&lt;br /&gt;
  \vdots \\&lt;br /&gt;
  0^\infty \; 1^{2n} \; \textrm{A&amp;gt;} \; 0^\infty \\&lt;br /&gt;
  0^\infty \; 1^{2n} \; \textrm{&amp;lt;B} \; 1 \; 0^\infty \\&lt;br /&gt;
  0^\infty \; \textrm{&amp;lt;B} \; 1^{2n+1} \; 0^\infty \\&lt;br /&gt;
  0^\infty \; 1 \; \textrm{A&amp;gt;} \; 1^{2n+1} \; 0^\infty \\&lt;br /&gt;
  0^\infty \; 1^{2n+2} \; \textrm{A&amp;gt;} \; 0^\infty \\&lt;br /&gt;
  \vdots \\&lt;br /&gt;
\end{array}&amp;lt;/math&amp;gt;In this case, this allows simulating &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; base TM steps using only &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; 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]].&lt;br /&gt;
&lt;br /&gt;
== Prove Non-halting ==&lt;br /&gt;
Shift rules can be used to prove non-halting. For example, if you have a shift rule &amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\textrm{S&amp;gt;} \; 0^n \to 1^n \; \textrm{S&amp;gt;}&amp;lt;/math&amp;gt;and the TM reaches configuration&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\textrm{S&amp;gt;} \; 0^\infty&amp;lt;/math&amp;gt;then it is guaranteed to never halt, because this rule will repeat forever. This is an example of a [[Translated Cycler]].&lt;/div&gt;</summary>
		<author><name>Savask</name></author>
	</entry>
</feed>