<p>There is a mechanical procedure for converting a Moore Machine into a Mealy Machine, and the reverse. Two such converted machines are equally expressive. Making the read operation an explicit action, instead of having it implied by a state transition, increases the number of states in a controller, and consequently the number of steps that must be taken. However, the new machine can do in two steps anything the former machine could do in one; consequently, this change affects the multiplier constant on the linear term of the step count formula but does not change the computation complexity class determined from such a step count. The layers of next-state functions can be collapsed into one layer, where the missing arguments are filled in with all possible unused values. This potentially increases the number of state transition arcs that must be specified, but the state transition logic and the number of states remain unchanged. Partitioning the machine definition by separation of concerns does not change the total specification. Hence, these modifications are computationally inconsequential.</p>
+ <h3>The TTCA Turing Machine fixed part</h3>
+
+ <div style="margin-left: 2em;">
+ <RT·math>
+ MF = (QF, ΣF, AF, δF_0)
+ </RT·math>
+ </div>
+
+ <p>In the following the middle dot acts as a namespace operator, <RT·math>N{·}x</RT·math>. By doing this we assure there will be no aliasing with the symbols provided by the programmer when he defines the programmed state controller.</p>
+
+ <p>The set of predefined <em>states</em>:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>QF = \{QF{·}\mathtt{initial}, QF{·}\mathtt{unspecified\_decision}\}</RT·math>
+ </div>
+
+ <p>The state controller always starts in the <RT·code>QF·initial</RT·code> state. This is a symbol representing the state, it is not a register that holds a state. The 'F' values are all fixed.</p>
+
+ <p>If a decision is attempted to be made on an <RT·code>ΣF·unspecified</RT·code> symbol, the machine transitions to the <RT·code>QF·unspecified_decision</RT·code> state, due to the global default transition defined in <RT·math>δF_0</RT·math>.</p>
+
+ <p>The set of available actions:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>
+ \begin{aligned}
+ AF = \{\\
+ & \mathtt{no\_op} \\
+ , & \mathtt{left} \\
+ , & \mathtt{right} \\
+ , & \mathtt{read\_d} \\
+ , & \mathtt{read\_g} \\
+ , & \mathtt{status} \\
+ , & \mathtt{write\_σ}(σ) \\
+ , & \mathtt{write\_d} \\
+ , & \mathtt{write\_g} \\
+ \}
+ \end{aligned}
+ </RT·math>
+ </div>
+ <p>where <RT·math>σ</RT·math> must be in <RT·math>Σ</RT·math>.</p>
+
+ <p>The set of predefined symbols:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>ΣF = \{ΣF{·}\mathtt{unspecified}, ΣF{·}\mathtt{on\_leftmost}\}</RT·math>
+ </div>
+
+ <p>The set <RT·math>δF_0</RT·math> holds one global default predefined transition of the form,
+ <div style="margin-left: 2em;">
+ <RT·math>
+ \{\langle \mathtt{g{.}ΣF{·}unspecified}, \mathtt{QF{·}unspecified\_decision} \rangle\}
+ </RT·math>
+ </div>
+
+ <p>In any state if the <RT·code>g</RT·code> register holds the symbol <RT·math>\mathtt{ΣF{·}unspecified}</RT·math>, then the next state will be <RT·math>\mathtt{QF{·}unspecified\_decision}</RT·math>, independent of all other defined next state transitions.</p>
+
+
+ <h3>The TTCA Turing Machine variables</h3>
+
+ <div style="margin-left: 2em;">
+ <RT·math>
+ MV = (q, d, g)
+ </RT·math>
+ </div>
+
+ <p><RT·math>q</RT·math>: is the current state of the machine.</p>
+
+ <p><RT·math>d</RT·math>: is the data register.</p>
+
+ <p><RT·math>g</RT·math>: is the gate register.</p>
+
+
+ <h3>The TTCA Turing Machine programmable part</h3>
+
+ <div style="margin-left: 2em;">
+ <RT·math>
+ MP = (QP, ΣP, λP, δ_1, δ_2, δ_3)
+ </RT·math>
+ </div>
+
+ <p>A set of programmed <em>state</em> symbols:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>QP</RT·math>
+ </div>
+
+ <p>A set of programmed data symbols:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>ΣP</RT·math>
+ </div>
+
+ <p>The programmed actions. A set of pairs of the form:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>λP = \{ \langle q_0, a \rangle, \dots \}</RT·math>
+ </div>
+ <p>where <RT·math>q_0</RT·math> is matched to the current state, and <RT·math>a</RT·math> is a member of <RT·math>AF</RT·math>.</p>
+
+ <p>A set of state transition triples; each triple is of the form:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>δ_1 = \{ \langle q_0, r{·}σ, q_1 \rangle, \dots \}</RT·math>
+ </div>
+ <p>where <RT·math>q_0</RT·math> is matched to the current state of the machine. <RT·math>r{·}σ</RT·math> is a symbol in register <RT·math>r</RT·math>, where <RT·math>r</RT·math> is either <RT·math>d</RT·math> or <RT·math>g</RT·math>. <RT·math>q_1</RT·math> is the next state. When <RT·math>q_0</RT·math> matches the current state, <RT·math>q_1</RT·math> becomes the next state. Both <RT·math>q_0</RT·math> and <RT·math>q_1</RT·math> come from the total set <RT·math>Q</RT·math>. <RT·math>σ</RT·math> comes from the total set <RT·math>Σ</RT·math>. </p>
+
+ <p>The default transition table. A set of state transition pairs; each pair is of the form:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>δ_2 = \{ \langle q_0, q_1 \rangle, \dots \}</RT·math>
+ </div>
+ <p>where <RT·math>q_0</RT·math> is matched to the current state, and upon a match <RT·math>q_1</RT·math> will be taken as the next state.</p>
+
+ <p>A default next state:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>δ_3 = q_1</RT·math>
+ </div>
+
+ <p>This is the transition of last resort. It is unconditional, the next state becomes <RT·math>q_1</RT·math>.</p>
+
+ <h3>The TTCA Turing Machine in total</h3>
+
+ <div style="margin-left: 2em;">
+ <RT·math>
+ M = (Q, Σ, AF, λP, δ)
+ </RT·math>
+ </div>
+
+ <p>The complete set of states, uniting the fixed predefined states and the programmed states:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>Q = QF \cup QP</RT·math>
+ </div>
+
+ <p>The complete set of symbols, uniting the fixed control symbols and the programmed data symbols:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>Σ = ΣF \cup ΣP</RT·math>
+ </div>
+
+ <p>The ordered sequence of next state transition rules:</p>
+ <div style="margin-left: 2em;">
+ <RT·math>δ = [δF_0 | δ_1 | δ_2 | δ_3]</RT·math>
+ </div>
+
+
+
<h2>TTCA computation theoretic TM executor directions</h2>
<ul>
<li>The current state <RT·math>q</RT·math> is set to <RT·math>QF{·}\mathtt{initial}</RT·math>.</li>
<li>The data register <RT·math>d</RT·math> is initialized to hold the <RT·math>ΣF{·}\mathtt{unspecified}</RT·math> symbol.</li>
- <li>The gate register <RT·math>g</RT·math> is initialized to the value under the head, which will be the leftmost cell.</li>
+ <li>The gate register <RT·math>g</RT·math> is initialized to the value under the head.</li>
</ul>
<h3>Phase 1: The action</h3>
<p>During the action phase, the executor looks up the operation mapped to the current state.</p>
<ol>
<li>Locate the current state <RT·math>q</RT·math> within the programmed actions set <RT·math>λP</RT·math>.</li>
- <li>Perform the associated action <RT·math>a \in AF</RT·math>. This will instruct the machine to move the head (<RT·code>left</RT·code>, <RT·code>right</RT·code>), read the symbol under the head into a designated register (<RT·code>read_d</RT·code>, <RT·code>read_g</RT·code>), write a symbol to the tape (<RT·code>write_σ</RT·code>, <RT·code>write_d</RT·code>, <RT·code>write_g</RT·code>), perform a <RT·code>status</RT·code> check, or execute a <RT·code>no_op</RT·code>.</li>
+ <li>Perform the associated action <RT·math>a \in AF</RT·math>.</li>
</ol>
<h3>Phase 2: The state transition</h3>