</p>
+ <RT·chapter>The computation theory Turing Machine</RT·chapter>
+
+ <p>This is the definition of the Turing Machine from Hopcroft and Ullman's book <RT·endnote>John E. Hopcroft and Jeffrey D. Ullman, <em>Introduction to Automata Theory, Languages, and Computation</em> (Reading: Addison Wesley, 1979).</RT·endnote>.
+ </p>
+
+ <RT·math>
+ M = (Q, \Sigma, \Gamma, \delta, q_0, □, F)
+ </RT·math>
+
+ <p>Where the components have the following meanings:</p>
+
+ <ul>
+ <li><RT·math>Q</RT·math>: The finite set of <em>states</em> of the programmed finite state machine controller.</li>
+ <li><RT·math>\Sigma</RT·math>: The finite set of <em>input symbols</em>.</li>
+ <li><RT·math>\Gamma</RT·math>: The complete set of <em>tape symbols</em>; <RT·math>\Sigma</RT·math> is always a subset of <RT·math>\Gamma</RT·math>.</li>
+ <li><RT·math>□</RT·math>: The <em>blank</em> symbol. This symbol is in <RT·math>\Gamma</RT·math> but not in <RT·math>\Sigma</RT·math>; i.e., it is not an input symbol. The blank appears initially in all but the finite number of initial cells that hold input symbols.</li>
+ <li><RT·math>\delta</RT·math>: The next state function. The arguments of <RT·math>\delta(q, X)</RT·math> are a state <RT·math>q</RT·math> and a tape symbol <RT·math>X</RT·math>. The value of <RT·math>\delta(q, X)</RT·math>, if it is defined, is a triple <RT·math>(p, Y, D)</RT·math>, where:
+ <ol>
+ <li><RT·math>p</RT·math> is the next state, in <RT·math>Q</RT·math>.</li>
+ <li><RT·math>Y</RT·math> is the symbol, in <RT·math>\Gamma</RT·math>, written in the cell being scanned, replacing whatever symbol was there.</li>
+ <li><RT·math>D</RT·math> is a <em>direction</em>, either <RT·math>L</RT·math> or <RT·math>R</RT·math>, standing for "left" or "right," respectively, and telling us the direction in which the head moves.</li>
+ </ol>
+ </li>
+ <li><RT·math>q_0</RT·math>: The <em>initial state</em>, a member of <RT·math>Q</RT·math>, in which the finite control is found initially.</li>
+
+ <li><RT·math>F</RT·math>: The set of <em>final</em> or <em>accepting</em> states, a subset of <RT·math>Q</RT·math>.</li>
+ </ul>
+
+ <p>I have introduced the qualifier <em>programmed</em> in front of the <em>finite state machine controller</em> because each Turing Machine that accomplishes a different task, has a different finite state machine controller. The rest of the Turing Machine remains fixed. Hence, when the mathematician defines a custom task controller, he is essentially programming the machine.</p>
+
+ <p>Here the <em>input</em> alphabet is said to be a subset of a larger alphabet. This allows some symbols to be set aside and only used by the machine. In the architecture description given below, those symbols in the larger set, but not in the input set are called <RT·term>control symbols</RT·term>. Hopcroft and Ullman have included the empty symbol as a control symbol. However, the empty symbol is found on tapes. This might make it challenging to write machines that are given descriptions of tape contents as input.</p>
+
+ <p>State transitions are gated by the read value from the tape. Each state transition function includes actions to be taken, hence their programmable controller is a Mealy style state controller. The step action is mandatory, though it can be in either direction. The write action must be specified, but the write could be the same symbol that is read, hence it is actually an optional action.</p>
+
+ <p>A goal of the computation theorist in defining a Turing Machine is to make the math elegant and simple. In contrast, the goal of the computer architect is to provide a clear path to implementation. Perhaps if a computer architect were to define the computational Turing Machine, it would look more like this:</p>
+
+
<RT·chapter>The Turing Machine architecture/organization</RT·chapter>
- <p>
- In this interpretation of the Turing Machine, the architecture utilizes a single ended tape, as done in Hopcroft and Ullman's book <RT·endnote>John E. Hopcroft and Jeffrey D. Ullman, <em>Introduction to Automata Theory, Languages, and Computation</em> (Reading: Addison Wesley, 1979).</RT·endnote>. If a computation requires a two way infinite tape, the single ended tape machine can emulate it by interleaving the addresses: assigning odd addressed cells to represent the right going half, and even addressed cells to represent the left going half. This emulation requires taking two steps instead of one to advance in a given logical direction. When analyzing the time complexity of an algorithm, this overhead merely doubles the constant on the linear term, leaving the asymptotic order of complexity entirely unchanged. The outcomes of decider programs are unaffected. Therefore, utilizing a single ended tape is an <RT·term>inconsequential</RT·term> variation of the two way tape machine.
+
+
+
+If a computation requires a two way infinite tape, the single ended tape machine can emulate it by interleaving the addresses: assigning odd addressed cells to represent the right going half, and even addressed cells to represent the left going half. This emulation requires taking two steps instead of one to advance in a given logical direction. When analyzing the time complexity of an algorithm, this overhead merely doubles the constant on the linear term, leaving the asymptotic order of complexity entirely unchanged. The outcomes of decider programs are unaffected. Therefore, utilizing a single ended tape is an <RT·term>inconsequential</RT·term> variation of the two way tape machine.
</p>
<figure>
Mathematically, a Turing Machine tape can be expressed as a path graph. However, a tape model and a path graph model imply different ontological contexts. The neighbor property of a Turing Machine tape cell specifically informs a clock driven atomic step function where to place the machine head next. The machine only has defined meaning at the state points on the programmed controller. In contrast, a path graph exists in the wider context of graph theory. A path graph has edges and each edge can be focused on, said to be traversed over, and given general properties. These are things we explicitly excluded in the tape definition. If we were to move the tape from the context of the machine and into the more abstract mathematical context by modeling the tape with a path graph, then we would do so for the purpose of analyzing the tape, which is a higher order and more abstract activity. However, in the current exercise we are not reaching towards the more abstract; rather, we are reaching in the other direction, towards machine architecture.
</p>
+ <h2>Tape transport unit, <RT·term>TTU</RT·term></h2>
+
+, from which tapes can be mounted and unmounted. Multiple TTUs can be plugged in. Each TTU contains:
+
+mount/unmount
+
+ <ol>
+ <li>a read/write <RT·term>head</RT·term></li>
+ <li>a single symbol FIFO <RT·term>read data buffer</RT·term>, written by the TTU, read by the programmable controller</li>
+ <li>a single symbol FIFO <RT·term>status buffer</RT·term>, written by the TTU,, read by the programmable controller</li>
+ <li>a single symbol FIFO <RT·term>command buffer</RT·term>, written by the programmed controller, acted upon immediately by the TTU.</li>
+ </ol>
+ </li>
+
+ <p>
+ The tape head consists of a reference to exactly one of the tape cells and a set of four functions: <RT·code>read</RT·code>, <RT·code>write</RT·code>, <RT·code>step-left</RT·code>, and <RT·code>step-right</RT·code>. In addition, the tape head can throw an error, <RT·code>left-of-leftmost</RT·code>, if the Turing Machine attempts to step left from the leftmost cell. When stepping, the cell reference in the head is updated based on the neighbor properties of the currently referenced cell. The cell referenced by the head is called <RT·term>the cell the head is on</RT·term>, or more simply, <RT·term>the head cell</RT·term>, or more generally as the <RT·term>indicated cell</RT·term>.
+ </p>
+
+ <p>
+ A person can also say that the head indexes the head cell. This utilizes the classical mechanical definition, where an index is a mark for aligning gears. This physical meaning contrasts with an index integer used for addressing an array. The architectural definition of the Turing Machine developed here relies strictly upon the topological properties of the tape, independent of the definition of Natural Numbers. Addresses, which do rely on Natural Numbers, are discussed further on in this volume. This represents a minor divergence from Alan Turing's original paper, as he took it as a given that numbers naturally paired with the squares. We explicitly establish that pairing only after deriving Natural Numbers using the Turing Machine itself.
+ </p>
+
+
+
<h2>The customer programmed components</h2>
<p>The customer programmed portion of the programmed control consists of:</p>
<h2>Machine</h2>
- <p>The customer programmable components:</p>
- <ol>
- <li>a custom predefined read only <RT·term>data alphabet</RT·term></li>
- <li>a custom predefined immutable <RT·term>programmed controller</RT·term> with states that can be referenced</li>
- <li>a custom predefined constant <RT·term>initial state</RT·term> reference</li>
- <li>a custom predefined constant <RT·term>halt state</RT·term> reference</li>
- </ol>
-
<p>The immutable structural components:</p>
<ol>
<li>a read only empty symbol that is distinct from any symbol in the data alphabet. The examples in this document use the symbol '<RT·code>□</RT·code>'</li>
<p>Each highlighted term is a short name for the associated item.</p>
- <h2>The TTU</h2>
-
- <p>
- The tape head consists of a reference to exactly one of the tape cells and a set of four functions: <RT·code>read</RT·code>, <RT·code>write</RT·code>, <RT·code>step-left</RT·code>, and <RT·code>step-right</RT·code>. In addition, the tape head can throw an error, <RT·code>left-of-leftmost</RT·code>, if the Turing Machine attempts to step left from the leftmost cell. When stepping, the cell reference in the head is updated based on the neighbor properties of the currently referenced cell. The cell referenced by the head is called <RT·term>the cell the head is on</RT·term>, or more simply, <RT·term>the head cell</RT·term>, or more generally as the <RT·term>indicated cell</RT·term>.
- </p>
-
- <p>
- A person can also say that the head indexes the head cell. This utilizes the classical mechanical definition, where an index is a mark for aligning gears. This physical meaning contrasts with an index integer used for addressing an array. The architectural definition of the Turing Machine developed here relies strictly upon the topological properties of the tape, independent of the definition of Natural Numbers. Addresses, which do rely on Natural Numbers, are discussed further on in this volume. This represents a minor divergence from Alan Turing's original paper, as he took it as a given that numbers naturally paired with the squares. We explicitly establish that pairing only after deriving Natural Numbers using the Turing Machine itself.
- </p>
<h3>Operation logic</h3>
in the original Turing machine Architecture, add three tapes, stdin, stdout, and stderr
-->
+
+<!-- LocalWords: Hopcroft Ullman endnote
+ -->