From 89a6308401650160d04199fa8289717e0253039d Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Tue, 14 Jul 2026 17:10:35 +0000 Subject: [PATCH] . --- document/{ => book}/Boolos.txt | 0 document/{ => book}/D_10.png | Bin document/book/HU_reverse_machine.png | Bin 0 -> 149757 bytes document/book/HU_reverse_machine.yaml | 43 + document/{ => book}/RT-Manuscript_locator.js | 0 document/{ => book}/TM-2026.html | 114 +- document/book/Turingmachine_io_style.js | 7 + document/{ => book}/diagonal_Q.txt | 0 document/{ => book}/divide_0_0_example.png | Bin document/{ => book}/example_list_symbol.c | 0 document/{ => book}/h_of_t_D_table.png | Bin document/{ => book}/machine fig.png | Bin document/{ => book}/singularity_plot.png | Bin document/{ => book}/with_x_variable.png | Bin document/temp.html | 1255 ------------------ document/temp2.html | 457 ------- document/temp3.html | 257 ---- 17 files changed, 136 insertions(+), 1997 deletions(-) rename document/{ => book}/Boolos.txt (100%) rename document/{ => book}/D_10.png (100%) create mode 100644 document/book/HU_reverse_machine.png create mode 100644 document/book/HU_reverse_machine.yaml rename document/{ => book}/RT-Manuscript_locator.js (100%) rename document/{ => book}/TM-2026.html (96%) create mode 100644 document/book/Turingmachine_io_style.js rename document/{ => book}/diagonal_Q.txt (100%) rename document/{ => book}/divide_0_0_example.png (100%) rename document/{ => book}/example_list_symbol.c (100%) rename document/{ => book}/h_of_t_D_table.png (100%) rename document/{ => book}/machine fig.png (100%) rename document/{ => book}/singularity_plot.png (100%) rename document/{ => book}/with_x_variable.png (100%) delete mode 100644 document/temp.html delete mode 100644 document/temp2.html delete mode 100644 document/temp3.html diff --git a/document/Boolos.txt b/document/book/Boolos.txt similarity index 100% rename from document/Boolos.txt rename to document/book/Boolos.txt diff --git a/document/D_10.png b/document/book/D_10.png similarity index 100% rename from document/D_10.png rename to document/book/D_10.png diff --git a/document/book/HU_reverse_machine.png b/document/book/HU_reverse_machine.png new file mode 100644 index 0000000000000000000000000000000000000000..9771cfb2b938347c09a6451ef855200fbf8ac43a GIT binary patch literal 149757 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

qr?GGdpAN^H^Lm_d-Ak2c+U;0&jn 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ຮ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 ly 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 literal 0 HcmV?d00001 diff --git a/document/book/HU_reverse_machine.yaml b/document/book/HU_reverse_machine.yaml new file mode 100644 index 0000000..ae67be8 --- /dev/null +++ b/document/book/HU_reverse_machine.yaml @@ -0,0 +1,43 @@ +# enter this at https://TuringMachine.io/ +# Reverses a binary string +input: '11001' +blank: ' ' +start state: q0 +table: + # scan to the rightmost digit and place the EOM terminator 'E' + q0: + [0, 1]: R + ' ' : {write: 'E', L: q1} + + # process the rightmost unmarked digit, writing the uniform marker '*' + q1: + 0 : {write: '*', R: q2} + 1 : {write: '*', R: q3} + ' ': {R: q6} # all digits processed, begin cleanup + + # carry '0' to the right end + q2: + ['*', 'E', 0, 1]: R + ' ' : {write: 0, L: q4} + + # carry '1' to the right end + q3: + ['*', 'E', 0, 1]: R + ' ' : {write: 1, L: q4} + + # return all the way to the left blank space + q4: + ['*', 'E', 0, 1]: L + ' ' : {R: q5} + + # step right to find the next unmarked digit + q5: + [0, 1] : R + ['*', 'E']: {L: q1} + + # erase the markers and EOM terminator, leaving only the reversed string + q6: + ['*', 'E'] : {write: ' ', R: q6} + [0, 1, ' ']: {L: done} + + done: diff --git a/document/RT-Manuscript_locator.js b/document/book/RT-Manuscript_locator.js similarity index 100% rename from document/RT-Manuscript_locator.js rename to document/book/RT-Manuscript_locator.js diff --git a/document/TM-2026.html b/document/book/TM-2026.html similarity index 96% rename from document/TM-2026.html rename to document/book/TM-2026.html index 44c3ad0..ffc7ab9 100644 --- a/document/TM-2026.html +++ b/document/book/TM-2026.html @@ -326,11 +326,11 @@

- The computation theory Turing Machine +The computation theory Turing Machine

The Hopcroft and Ullman Turing Machine

-

This definition comes from Hopcroft and Ullman's book with some terminology only changes to make it flow into the text here John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation (Reading: Addison Wesley, 1979).. +

This definition comes from Hopcroft and Ullman's book with some terminology only changes to make it flow into the text here John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation (Reading: Addison Wesley, 1979)..

@@ -343,73 +343,129 @@
  • Q: The finite set of states of the programmed finite state machine controller.
  • \Sigma: The finite set of input symbols.
  • \Gamma: The complete set of tape symbols; \Sigma is always a subset of \Gamma.
  • -
  • □: The blank symbol. This symbol is in \Gamma but not in \Sigma; 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.
  • +
  • □: The empty symbol. This symbol belongs exclusively to \Gamma, serving as a distinct tape marker rather than an input symbol. The empty symbol initially populates all cells except the finite number containing the input symbols.
  • \delta: The next state function. The arguments of \delta(q, X) are a state q and a tape symbol X. The value of \delta(q, X), if it is defined, is a triple (p, Y, D), where:
      -
    1. p is the next state, in Q.
    2. -
    3. Y is the symbol, in \Gamma, written in the cell being scanned, replacing whatever symbol was there.
    4. -
    5. D is a direction, either L or R, standing for "left" or "right," respectively, and telling us the direction in which the head moves.
    6. +
    7. p is the next state in Q.
    8. +
    9. Y is the symbol in \Gamma written in the scanned cell, replacing the previous symbol.
    10. +
    11. D is a direction, either L or R, standing for "left" or "right," respectively, directing the head to move either left or right.
  • -
  • q_0: The initial state, a member of Q, in which the finite control is found initially.
  • +
  • q_0: The initial state, a member of Q, in which the finite control is found.
  • F: The set of final or accepting states, a subset of Q.
  • -

    I have introduced the qualifier programmed in front of the finite state machine controller 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.

    +

    I have introduced the qualifier programmed in front of the finite state machine controller 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.

    -

    Here the input 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 control symbols. Hopcroft and Ullman have included the empty symbol as a control symbol. However, they have simultaneously listed it as a separate component.

    +

    Here the input 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 exclusive to the larger set are called control symbols. Hopcroft and Ullman have included the empty symbol as a control symbol. However, they have simultaneously listed it as a separate component.

    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 machine. 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.

    -

    Hopcroft and Ullman explain a step of the machine by showing the state variable melded in with a representation of the tape to the left of the symbol the head is indicating. Suppose \delta(q, X_i) = (p, Y, L); i.e., the next move is leftward. Then, +

    Hopcroft and Ullman explain a step of the machine by showing a representation of the tape with the state variable melded in to the left of the currently scanned symbol. Suppose \delta(q, X_i) = (p, Y, L); i.e., the next move is leftward. Then,

    X_1 X_2 \cdots X_{i-1} q X_i X_{i+1} \cdots X_n \underset{M}{\vdash} X_1 X_2 \cdots X_{i-2} p X_{i-1} Y X_{i+1} \cdots X_n -

    So first the tape is, X_1 X_2 \cdots X_{i-1} X_i X_{i+1} \cdots X_n, with the head immediately before X_i, and in state q. Then after a step of the machine, the tape is X_1 X_2 \cdots X_{i-1} Y X_{i+1} \cdots X_n, with the head immediately before X_{i-1}, and in state p. Thus X_i was overwritten with Y, and the head stepped left. +

    So first the tape is X_1 X_2 \cdots X_{i-1} X_i X_{i+1} \cdots X_n, with the head over X_i, and in state q. Then after a step of the machine, the tape is X_1 X_2 \cdots X_{i-1} Y X_{i+1} \cdots X_n, with the head over X_{i-1}, and in state p. Thus X_i was overwritten with Y, and the head stepped left.

    -

    A goal of the computation theorist in defining a Turing Machine is to make the math concise and elegant as they can make it. This notation qualifies. However, the goal of the computer architect is to make an intuitive to design and test machine that performs well. Perhaps if a computer architect were to define the computational Turing Machine, this change in emphasis would favor a different definition.

    +

    Here is the programmed controller for a Turing Machine that reverses a binary string.

    + + HU reverse machine + +

    Provided the site is still alive, the following YAML can be entered at TuringMachine.io to watch the machine run.

    + + ```yaml + # Reverses a binary string using a single marker and an EOM terminator. + input: '11001' + blank: ' ' + start state: q0 + table: + # scan to the rightmost digit and place the EOM terminator 'E' + q0: + [0, 1]: R + ' ' : {write: 'E', L: q1} + + # process the rightmost unmarked digit, writing the uniform marker '*' + q1: + 0 : {write: '*', R: q2} + 1 : {write: '*', R: q3} + ' ': {R: q6} # all digits processed, begin cleanup + + # carry '0' to the right end + q2: + ['*', 'E', 0, 1]: R + ' ' : {write: 0, L: q4} + + # carry '1' to the right end + q3: + ['*', 'E', 0, 1]: R + ' ' : {write: 1, L: q4} + + # return all the way to the left blank space + q4: + ['*', 'E', 0, 1]: L + ' ' : {R: q5} -

    The empty symbol

    + # step right to find the next unmarked digit + q5: + [0, 1] : R + ['*', 'E']: {L: q1} -

    The initial tape is often said to be empty, where an empty tape is one where every square has an empty symbol written to it.

    + # erase the markers and EOM terminator, leaving only the reversed string + q6: + ['*', 'E'] : {write: ' ', R: q6} + [0, 1, ' ']: {L: done} -

    Also, there comes a time in some proofs when an empty symbol is written over a data symbol on the tape. This is said to erase the data symbol. Thus a machine allows that the replacement symbol specified in a state transition can be the empty symbol.

    + done: + ``` -

    Computational theorists often describe a two step process. First that of having a Turing machine write an input string on to a tape, where the tape was initially filled with all empty symbols, and then secondly using another Turing Machine that is to recognize if said input string fits a particular pattern. In this manner a tape is used as a communication medium, and it follows that communication theory can be applied to this messaging scenario. Messages sent on a channel must be structured in a manner that they can be placed on the channel, and then later recovered. Such a structure is called a communication protocol. The protocol implies a higher authority as both the sender and the receiver must have knowledge of the same protocol designed in. In a sense, a protocol is the meta-message that is sent before the message is sent.

    +

    This machine starts with the head on the leftmost symbol of the input string, requiring an empty symbol on both sides to operate. The machine begins by sweeping right to place an end of message marker, E, immediately after the string. It then enters a repetitive process: it walks left to locate the next unprocessed input symbol, overwrites it with an asterisk to mark it as read, and then carries that remembered value rightward to deposit it at the new end of the sequence. By executing this back-and-forth shuttle, the machine systematically builds the reversed string to the right of the E, finishing by sweeping through to erase its temporary markers.

    +

    Reversing a string does not in general require knowing the constituent symbols; however, a Turing Machine is incapable of ignoring their actual values. The 1 and 0 here are explicitly stated in the state transitions, and specific states are reserved to keep track of which symbol is being transferred. Had the input alphabet been large, this controller would have required proportionally more states.

    -

    The intention of placing the empty symbol in \Gamma but not in \Sigma appears to be that of reserving the empty symbol as a structural component in a communications protocol. This protocol was designed by mathematicians with the intention of making it impossible for programmers to create input tape messages that can not be recovered by a receiving recognizer Turing Machine. In short, the empty symbol is being used as an in band EOT, end of transmission, symbol.

    +

    Although by definition each state transition matches one value under the head, as a practical matter, disjunctive selection is allowed via a comma list. A conjunctive phrasing for the state transition proposition would require stringing intermediate states in series.

    -

    If so, this protocol fails to prevent programmers from making Turing Machines that make messages that can not be recovered by a receiving Turing Machine, because the Turing Machines were bestowed with the ability to erase characters. An input machine could, for example, happily make an array of strings while using the empty symbol to separate the elements of the array. Nothing in the Turing Machine definition prevents this.

    +

    The empty symbol

    + +

    An initial tape is often said to be empty when every square holds an empty symbol.

    + +

    In some proofs, an empty symbol is written over a data symbol on the tape to erase it. Thus, a machine allows the replacement symbol specified in a state transition to be the empty symbol.

    + +

    Computational theorists often describe a two-step process. First, a Turing Machine writes an input string onto a tape that was initially filled with all empty symbols, and second, another Turing Machine recognizes if said input string fits a particular pattern. In this manner, a tape is used as a communication medium, and it follows that communication theory can be applied to this messaging scenario. Messages sent on a channel must be formatted so they can be placed on the channel and later recovered. Such an organization is called a communication protocol. The protocol implies a higher authority, as both the sender and the receiver must have knowledge of the same designed-in protocol. In a sense, a protocol is the meta-message sent before the message itself.

    + +

    The intention of placing the empty symbol in \Gamma but not in \Sigma appears to be that of reserving the empty symbol as a control component in a communications protocol. This protocol was designed by mathematicians with the intention of making it impossible for programmers to define input tape messages that cannot be recovered by a receiving recognizer Turing Machine. In short, the empty symbol is used as an in-band EOT (end of transmission) symbol.

    + +

    If so, this protocol fails to prevent programmers from defining Turing Machines that output messages that cannot be recovered by a receiving Turing Machine, because the Turing Machines were bestowed with the ability to erase characters. An input machine could, for example, happily output an array of strings while using the empty symbol to separate the elements of the array. Nothing in the Turing Machine definition prevents this.

    -

    Furthermore, the Universal Turing machine can be the aforementioned higher authority. In which case, Turing Machine their tapes, are written to a Universal Turing machine's tape. Hence, it is not only possible to want to terminate strings, as mentioned in the prior paragraph, the very problem is embedded in proofs such as the Halting problem proof.

    +

    Furthermore, the Universal Turing Machine can act as the aforementioned higher authority. In this case, Turing Machines, and sometimes their tapes, are written to a Universal Turing Machine's tape. Hence, it is not only possible to want to terminate strings, as mentioned in the prior paragraph; the termination issue itself is embedded in proofs such as the Halting Problem.

    -

    A common technique programmers use for embedding strings with terminators within other strings is to embed escape characters. This is another in band protocol, and it is not a every efficient one. The escape sequences grow exponentially with nesting levels. Also such strings with embedded escape sequences can not be interpreted without knowledge of the intended nesting level of the string author, which thus requires the interpreter of the string to know the author's intentions.

    +

    A common technique programmers use for embedding strings with terminators within other strings is to embed escape characters. This is another in-band protocol, and it is inefficient. The escape sequences grow exponentially with nesting levels. Also, such strings with embedded escape sequences cannot be interpreted without knowledge of the intended nesting level of the string author, which requires the interpreter of the string to know the author's intentions.

    -

    If we are to design communication protocols, there are better ways to do it. Out of band control, for example, packet communication, or run length encoding, has much better characteristics.

    +

    If we are to design communication protocols, there are better ways to do it. Out-of-band control, such as packet communication or run-length encoding, has superior characteristics.

    -

    But if the empty symbol is merely an EOT encoding, then why call it empty?

    +

    But if the empty symbol is merely an EOT encoding, then why call it empty?

    -

    A bookshelf is said to be empty when there is no obstacle to enshelving a book or other object on it. This is not to say there is nothing there in first place. Air gets displaced, if the bookshelf is under water, it can still be empty, because a book can be placed on it. The air, or the water, does not present an obstacle. If the bookshelf is limited to only hold books, then an shelf is empty when no book is available, and not empty otherwise. Attempting to pull a book from an empty shelf does not yield a book who's title is 'Meditations upon Emptiness', rather the attempt fails.

    +

    A bookshelf is said to be empty when there is no obstacle to enshelving a book or other object on it. This is not to say there is nothing there in the first place. Air gets displaced; if the bookshelf is underwater, it can still be empty because a book can be placed on it. The air, or the water, does not present an obstacle. If the bookshelf is limited to only hold books, then a shelf is empty when no book is available, and not empty otherwise. Attempting to pull a book from an empty shelf simply fails, rather than yielding a volume titled Meditations upon Emptiness.

    In this sense then, a Turing Machine is always empty, as no symbol on the tape presents an obstacle to writing a new symbol.

    -

    There are some concepts that can not be represented as a symbol. The concept of tape obstacle symbol is not representable with the current Turing Machine design; however, with a small modification, we could set aside a control symbol, that once written, the machine would refuse to overwrite it.

    +

    There are some concepts that cannot be represented as a symbol. For example, the concept of a symbol that remains on the tape as an obstacle to further writes to the same tape cell is not representable with the current Turing Machine design. It is not beyond our imagination to modify the Turing Machine to facilitate such a feature; a person could set aside a control symbol that, once written, the machine would refuse to overwrite. However, the Turing Machine as defined does not support such a symbol.

    + +

    Another concept that cannot be represented with a symbol on a Turing Machine is that of the unknown. The very workings of the Turing Machine depend upon state transitions based on matching a symbol. A person could modify a Turing Machine to non-deterministically explore all possible branches upon seeing such a symbol, but that is mathematically flawed; a cell with an unknown value actually holds only one specific value, the problem being that the value remains unrevealed. There is no general concept built into the Turing Machine of taking multiple branches and then, through some means, testing to see which was the correct branch. Any attempt to do this will have to incorporate a testing concept. The unknown is not merely a theoretical curiosity, because this is how real computer memories are initialized.

    -

    Another concept that can not be represented with a symbol on a Turing Machine is that of the unknown. The very workings of the Turing machine depend upon state transitions based on matching a symbol. A person could to modify a Turing Machine to non-deterministically explore all possible branches upon seeing such a symbol, but that might not be the correct things to do, as a cell with an unknown value only has one value in it, the problem being that one value is not known. There is no general concept built into the Turing Machine of taking multiple branches and then through some means testing to see which was the correct branch. Any attempt to do this will have to incorporate a testing concept. The unknown is not merely a theoretical curiosity, because this is how real computer memories are initialized.

    +

    Emptiness is another concept which a Turing Machine symbol cannot represent. As mentioned above, all symbols can be written with equal ease to the tape. A state machine could have an arc where, upon reading an empty symbol, the machine goes to the error state, indicating that the read failed, but this is not the definition given for the computational Turing Machine.

    -

    Emptiness is another concept which a Turing Machine symbol can not represent. As mentioned above, all symbols can be written with equal ease to tape. A state machine could have an arc whereupon reading an empty symbol, the machine goes to the error state, indicating that the read failed, but this is not the definition given for the computational Turing Machine.

    +

    For reasons of supporting recursion, the computation theoretic Turing Machine given in the next section will have a set of predefined symbols that are included with the alphabet of symbols, rather than being excluded. Where a communication protocol is required, the Turing Machine programmer must define it. It might be that surrounding an input string with empty symbols is a well-suited protocol; however, while the formal definition initializes the tape this way, treating those symbols as a structural boundary is a programmed behavior, not something built into the machine's definition.

    -

    For reasons of supporting recursion, the computation theoretic Turing Machine given in the next section will have a set of predefined symbols that are included with the alphabet of symbols. Where a communication protocol is required, the Turing Machine programmer must define it.

    +

    For reasons of supporting recursion, the computation theoretic Turing Machine given in the next section will have a set of predefined symbols that are included with the alphabet of symbols. Where a communication protocol is required, the Turing Machine programmer must define it. It might be that surrounding an input string with empty symbols, is a well suited protocol, but this is not built into the machine definition.

    The singular-unknown

    -

    In the first edition of this book, I introduced a "no read until after write" rule so as to side step the blank symbol issue. This did not displace the need for a communication protocol when tapes were sent as messages.

    +

    In the first edition of this book, I introduced a "no read until after write" rule so as to side step the empty symbol issue. This did not displace the need for a communication protocol when tapes were sent as messages, but it did make it possible to remove the empty symbol from programmed controller definitions.

    The standard 9 track tape introduced by IBM in 1964 came from the factory unformatted, the format operation would then write a header and an EOF marker, to mark the end of the device file. Then when an standard library call, such as open(), followed by write(), would writer over the EOF marker, and continue to write the data, then would write a new EOF marker, essentially pushing back the EOF marker. EOF could be pushed back until the physical EOT marker was struck. This is similar in some ways to the how the empty symbol is being used on the computation theoretic Turing Machine as we see in the Hopcroft and Ullman book if we consider the blank to be an EOF marker. However, there is a difference in that the real machine would never use an EOF to erase data characters. Note then while using the standard library, the blank part of the tape could not be read until after it was written, so early tapes indeed enforced the "no read until after a write" rule.

    @@ -423,6 +479,8 @@

    The TTCA computation theoretic Turing Machhine

    +

    A goal of the computation theorist in defining a Turing Machine is to make the math concise and elegant as they can make it. This notation qualifies. However, the goal of the computer architect is to make an intuitive to design and test machine that performs well. Perhaps if a computer architect were to define the computational Turing Machine, this change in emphasis would favor a different definition.

    + M = (Q, \Sigma, κ, A, \lambda, \delta, q_0, q_h, q_e) diff --git a/document/book/Turingmachine_io_style.js b/document/book/Turingmachine_io_style.js new file mode 100644 index 0000000..880c132 --- /dev/null +++ b/document/book/Turingmachine_io_style.js @@ -0,0 +1,7 @@ +// put this on the F12 console + +{ + const s = document.createElement('style'); + s.innerHTML = 'path:not(marker path), line { stroke: #000000 !important; stroke-width: 1.5px !important; opacity: 1 !important; } marker path { stroke: none !important; fill: #000000 !important; opacity: 1 !important; } text { fill: #000000 !important; font-weight: bold !important; opacity: 1 !important; }'; + document.head.appendChild(s); +} diff --git a/document/diagonal_Q.txt b/document/book/diagonal_Q.txt similarity index 100% rename from document/diagonal_Q.txt rename to document/book/diagonal_Q.txt diff --git a/document/divide_0_0_example.png b/document/book/divide_0_0_example.png similarity index 100% rename from document/divide_0_0_example.png rename to document/book/divide_0_0_example.png diff --git a/document/example_list_symbol.c b/document/book/example_list_symbol.c similarity index 100% rename from document/example_list_symbol.c rename to document/book/example_list_symbol.c diff --git a/document/h_of_t_D_table.png b/document/book/h_of_t_D_table.png similarity index 100% rename from document/h_of_t_D_table.png rename to document/book/h_of_t_D_table.png diff --git a/document/machine fig.png b/document/book/machine fig.png similarity index 100% rename from document/machine fig.png rename to document/book/machine fig.png diff --git a/document/singularity_plot.png b/document/book/singularity_plot.png similarity index 100% rename from document/singularity_plot.png rename to document/book/singularity_plot.png diff --git a/document/with_x_variable.png b/document/book/with_x_variable.png similarity index 100% rename from document/with_x_variable.png rename to document/book/with_x_variable.png diff --git a/document/temp.html b/document/temp.html deleted file mode 100644 index 6dba5bc..0000000 --- a/document/temp.html +++ /dev/null @@ -1,1255 +0,0 @@ - - -

    In band and out of band control

    - -

    - Because of the impossibility of recognizing certain tape features, when a tape is written by one Turing Machine, then used by another, there must be some sort of system for messaging control. There are two approaches for mixing data and control together: one is in band signaling, while the other is out of band signaling. -

    - -

    - In band control occurs when control signals or structural metadata are mixed directly into the same channel and alphabet as the data payload. In band signaling leads to ambiguities between what is control and what is data. As we saw, there are cases where a recognizer, i.e., merely examining the data, is completely incapable of resolving even the simplest of control questions. A conventional approach for resolving these ambiguities makes use of escape sequence schemes that grow in length as the levels of communication grow. This has always been an afterthought, a sort of hack. -

    - -

    - In contrast, out of band control communicates structural information through a strictly separate channel or by utilizing symbols definitively excluded from the programmer visible data alphabet. The rightmost tape marker is an out of band mechanism because it utilizes an expanded hardware tape alphabet strictly reserved for machine management, guaranteeing it can never be conflated with the user's data. Modern architectures often lack the luxury of inventing new symbols to serve as control rather than data. Another out of band signaling technique is to structure the data into channels; such structure is called formatting. We find formatting on hard drives, in frame based and packet based communication channels, and in data structures. -

    - -

    Abstract areas and partitions

    - -

    - A tape area and partitioning can be an abstraction defined by a function rather than merely by a leftmost and rightmost cell. Such areas can have different topologies than those of the base tape. A familiar example for most computer scientists is utilizing software to create the appearance of a two dimensional array over a linear memory. -

    - -

    - Accordingly, suppose there is a three tape Universal Turing Machine gasket machine that holds the definition of a base machine on a first tape. It calls the base machine as a subroutine to access the base machine's tape (the second tape), and it uses its own tape to organize the tape abstraction. Then this outer machine can present to its user a variety of transforms of the base machine's tape. -

    - -

    - As an example, a gasket machine could partition the base machine's tape into two areas, one consisting of the odd addressed cells, and the other of the even addressed cells. Though these two areas consist of noncontiguous cells on the base tape, when viewed through the gasket machine, they appear perfectly contiguous. In this case, each area will have a leftmost cell and remain open on the right. -

    - -

    - When the base machine tape cells behind an abstract area are physically contiguous, we say that the abstract area is compact. In the odd even tape partition example, the abstract areas lack compactness. -

    - - - -------------------- - - - - - - TM-2026 - - - - - - - - - - - - - - - - - - - - - - Introduction - -

    - In 1893 Gottlob Frege published an axiomatic construction of mathematics from set theory. Frege's grand objective was something he called Logicism, the philosophical thesis that all of mathematics can be derived entirely from pure logic. To bridge set theory and logic, Frege defined sets using a method known as set comprehension. Under this approach, a mathematician states a logical rule or property, and any object satisfying that logical statement automatically becomes a member of the set. Because the membership of a set is determined entirely by logical rules, the resulting sets, and the mathematics built upon them, are derived directly from logic. To implement this, his specific machinery relied upon unrestricted set comprehension, formalized as Basic Law V Gottlob Frege, Grundgesetze der Arithmetik, Vol. 2 (Jena: Hermann Pohle, 1903), Appendix (Nachwort), 253.. -

    - -

    - At a conference in Paris in 1900, David Hilbert presented a list of pressing unsolved problems in mathematics. - Second on his list was "The Compatibility of the Arithmetical Axioms." Hilbert challenged mathematicians to find a means to demonstrate that "a finite number of logical steps based upon them [axioms] can never lead to contradictory results" F. N. Cole et al., eds., Bulletin of the American Mathematical Society, Vol. 8 (New York: Macmillan, 1902). This can be found at https://www.gutenberg.org/cache/epub/71655/pg71655 images.html. The MathWorld article on this subject, https://mathworld.wolfram.com/HilbertsProblems.html, explains that Hilbert presented 10 problems at the conference, though the publication shows 23 problems, and shortly later a 24th problem was added. Based on the notes of this citation, it appears the second problem is the same on all of these lists. Also note, Hilbert discusses completeness specifically as an axiom for bounding on the sets, which appears to be distinct from the question of logical completeness for an axiomatic system.. -

    - -

    - In 1901 Bertrand Russell found a well formed set formulation using Frege's set theory that did not correspond to a set. As Frege's work was based on this set theory, this called into question his entire work. Russell pointed out that it was possible to define a set of all sets that do not contain themselves. However this was a paradox, because if said set contained itself, it shouldn't, and if it didn't it should. Thus the formulation failed to define a set because the logical condition cannot be satisfied Bertrand Russell, The Principles of Mathematics (Cambridge: Cambridge University Press, 1903), Chapter X, 'The Contradiction'.. Russell communicated this to Frege in a letter dated 1902 06 16, shortly before his second volume was going to print Bertrand Russell to Gottlob Frege, June 16, 1902, reprinted in Jean van Heijenoort, From Frege to Gödel: A Source Book in Mathematical Logic (Cambridge: Harvard University Press, 1967), 124 125. Gottlob Frege, Grundgesetze der Arithmetik, Vol. 2 (Jena: Hermann Pohle, 1903), Appendix (Nachwort), 253. Frege writes: 'Hardly anything more unfortunate can befall a scientific writer than to have one of the foundations of his edifice shaken after the work is finished.'. Frege hurriedly authored an appendix (the Nachwort) admitting his system was compromised Frege was a quiet, rigid man who had spent decades building his logical fortress in almost total academic obscurity. Frege was personally devastated by Russell's letter. Shortly after, he suffered the loss of his wife, fell into severe depression, and his academic output almost entirely ceased. In 1924, a year before his death, he wrote unpublished diaries explicitly surrendering his life's work, declaring that logicism was a mistake and that mathematics must actually be derived from geometry. Note I. Grattan Guinness, The Search for Mathematical Roots, 1870 1940 (Princeton: Princeton University Press, 2000). For an analysis of Frege's intellectual decline, personal tragedies, and his unpublished 1924 1925 diaries where he formally surrenders the logicist program, see Chapter 7.. -

    - -

    - In 1903 Russell proposed a hierarchy of types to repair this foundational vulnerability. At the base were sets of individuals, then sets based on individuals or sets of individuals, etc. This looks a lot like how types work in modern software Bertrand Russell, The Principles of Mathematics (Cambridge: Cambridge University Press, 1903), Appendix B: The Doctrine of Types.. In this manner, it is not possible to write a paradoxical set definition. Russell and Alfred North Whitehead then engineered an entirely new, massive scaffolding utilizing this type system to pursue Frege's original objective of deriving mathematics from logic, publishing their results in three volumes between 1910 and 1913 Alfred North Whitehead and Bertrand Russell, Principia Mathematica (Cambridge: Cambridge University Press, 1910 1913).. Russell's system can be cumbersome due to requiring a large construction to be assembled in place of what otherwise might have been a simple rule. -

    - -

    - In 1908 Ernst Zermelo published an alternative system designed to avoid the known paradoxical statements of the time, even though absolute consistency remained unproven. In Zermelo's set theory, a mathematician first starts with an existing set, and then applies the Axiom of Separation using definite properties to partition out subsets Ernst Zermelo, "Untersuchungen über die Grundlagen der Mengenlehre I," Mathematische Annalen 65 (1908): 261 281.. To see how this works, consider the expression \{x \mid P(x)\}. Under unrestricted comprehension, a logician is permitted to define the predicate P(x) as x \notin x. This produces Russell's Paradox, so the set fails to be defined. In contrast, consider the same predicate, though restricted by Zermelo's Axiom of Separation over a predefined set S, written as \dot{R} = \{x \mid x \in S \wedge x \notin x\}. The only thing a person needs to know about S here is that it has already been successfully defined. So let us ask, is \dot{R} in \dot{R}? If we assume \dot{R} is a member of S, evaluating the second term forces the familiar fatal loop: if \dot{R} is in \dot{R}, it shouldn't be, and if it isn't, it should be. Thus if we assume that \dot{R} is in S, then \dot{R} can not be defined, but by definition, S is defined, and thus its members are defined. As we arrived at a contradiction, the original assumption must be false, i.e. it is wrong to assume that \dot{R} is in S. As \dot{R} is definitively not a member of \dot{R}, the first term of the set comprehension rule, x \in S is false, and the paradox vanishes. -

    - -

    - A person might suggest defining S as the set of all definable mathematical objects, forming a universal set. However, if such a universal set S existed, the Axiom of Separation could be applied using the previous predicate to isolate \dot{R}. Because \dot{R} is a valid, definable set, it must reside within S by the very definition of a universal set. But notice that the logic evaluated earlier proved definitively that \dot{R} cannot be a member of S. Yet the existence of a definable set \dot{R} that sits strictly outside of S contradicts the premise that S contains everything. Therefore, within any system governed by the Axiom of Separation, a universal set cannot exist. -

    - -

    - The authority to remove the Russell's Paradox set formulation comes from the set S. If we know its definition, then the authority comes through that definition. However, if we merely stipulate that S must be defined, then we are expressing our authority through S by declaring, "Undefined sets are not allowed." In the explanation above, it is only after discovering a set is undefined that we conclude it is not a member of S. I sometimes wonder how mathematics might have evolved had Frege simply taken that approach. We take this question up again in the chapter Computational Naturalism, and discover there is a deeper issue. -

    - -

    - Stepping back from the mechanics of set definition, a person can observe two competing approaches to establishing mathematical foundations. The first approach is constructive, building complex systems by assembling them upward from fundamental primitives. The second approach relies on islands of meaning, carving out valid spaces from the abstract void using precise rules and axioms, exactly as Zermelo did. Because both methodologies rely entirely upon a rigorous framework of deduction to function, logic itself serves as the essential substrate. Consequently, a complete foundational study requires the examination of three distinct subjects: the primitives used for construction, the rules that bound the theoretical islands, and the underlying logic that evaluates them both. -

    - -

    - In 1928 David Hilbert and Wilhelm Ackermann published a textbook on mathematical logic, Grundzüge der theoretischen Logik David Hilbert and Wilhelm Ackermann, Grundzüge der theoretischen Logik (Berlin: Springer, 1928). This first edition has not been translated into English.. A feature of this book is its attention to procedures to follow for mechanically determining truth of statements. They called the problem solved by such a procedure the Entscheidungsproblem. In the first chapter they review the procedure for solving the Entscheidungsproblem in the propositional logic. For the first order predicate calculus they define the problem as, "Universal validity concerns the following question: How can one determine, for any given logical expression that contains no individual signs [constants], whether the expression represents a true assertion for arbitrary substitutions for the occurring variables, or not?" Ibid., 72 73.. They review some special cases with solutions, including one published earlier by Ackermann, but then throw down the gauntlet by saying, - "A general solution to the Entscheidungsproblem, regardless of whether a person considers the first or the second formulation, is not yet available." Ibid., 81. "Eine allgemeine Lösung des Entscheidungsproblems, mag man nun die erste oder die zweite Fassung nehmen, liegt bis jetzt noch nicht vor." The term Entscheidungsproblem literally translates to 'decision problem'. However, there are many types of decision problems, and later we will meet a class of Turing Machine programs called deciders, so it appears to be best to keep the original German. As we will see later Alan Turing also did this.. -

    - -

    - In 1931 Kurt Gödel published his incompleteness theorems Kurt Gödel, "Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I," Monatshefte für Mathematik und Physik 38 (1931): 173 198.. By mapping formal logic into arithmetic, he demonstrated that any consistent formal system sufficiently powerful to perform basic arithmetic, let us call it system S, will inevitably contain well formed formulas that are mathematically true yet cannot be proven within the system itself For the definitive English translation, see Jean van Heijenoort, From Frege to Gödel: A Source Book in Mathematical Logic, 1879 1931 (Cambridge: Harvard University Press, 1967), 596 616.. Gödel achieved this by engineering a specific formula that evaluates to the claim: "G: There exists no sequence of valid logical steps within system S that proves G." If system S is consistent, it cannot output a proof for G; thus, the claim G makes is factually accurate, rendering it true but mechanically unprovable. Furthermore, Gödel demonstrated that system S cannot output a proof of its own consistency. This result fractured David Hilbert's 1900 vision of utilizing a weaker, strictly "finitistic" logical subsystem to definitively prove that the axioms of arithmetic are entirely free of contradictions David Hilbert, "Mathematical Problems," Bulletin of the American Mathematical Society 8 (1902): 437 479.. If the full, powerful system S physically lacks the mechanical capacity to verify its own consistency, Hilbert's weaker finitistic subsystem is definitively incapable of accomplishing the task. Gödel's work established a hard mechanical boundary, asserting that truth and provability are distinct concepts in classical mathematics. -

    - -

    - In April 1936, Alonzo Church leveraged Gödel's foundational papers to directly answer the Entscheidungsproblem Alonzo Church, "An Unsolvable Problem of Elementary Number Theory," American Journal of Mathematics 58, no. 2 (April 1936): 345 363.. Working independently, Alan Turing had arrived at his own mechanical solution, and upon seeing Church's April publication, Turing rushed to submit his manuscript on 28 May 1936, appending a proof that his mechanical architecture was mathematically equivalent to Church's lambda calculus Alan M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem," Proceedings of the London Mathematical Society s2 42, no. 1 (1936): 230 265. Received May 28, 1936, published November 30, 1936.. As Hilbert and Ackermann concede in the 1938 second edition of their textbook, Church's results demonstrated that "the quest for a general solution of the decision problem must be regarded as hopeless" David Hilbert and Wilhelm Ackermann, Principles of Mathematical Logic, 2nd ed. (New York: Chelsea Publishing Company, 1950), 124.. By giving the "somewhat vague intuitive concept of recursion a certain precise formalization," Church proved the "non existence of such a recursive procedure" that could mechanically yield a value of truth or falsehood for every individual formula Ibid., 124.. -

    - - -

    - Alan Turing used an abstraction of a computing machine, also described as a clerk working at a desk with pen and squares on paper while following a procedure, to prove that no primary 'analyzer' program can universally decide whether a second 'studied' program will halt when it is run Alan M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem," Proceedings of the London Mathematical Society s2 42, no. 1 (1936): 230 265.. An answer to this halting problem (specifically asserting "The studied machine halts" or "The studied machine does not halt") would indeed be a statement in first order logic. Thus, by showing no analyzer can universally make such a determination, Turing proved that no decider could exist for the Entscheidungsproblem. -

    - - -

    - Turing employed an enumerative diagonal argument to establish this result. A simpler proof by contradiction that is commonly used today was first published by Christopher Strachey in 1965 Christopher Strachey, "An Impossible Program," The Computer Journal 7, no. 4 (January 1965): 313. In his letter, Strachey explicitly attributed the distilled logic to an existing "well known piece of folklore among programmers.". To begin the proof, assume a person builds a perfect decider program, H(p, i), that evaluates any given program p executing with input i, then outputs 'Y' if p(i) halts, and 'N' if it does not halt. Next, a person writes a malicious program, M(x), that incorporates H as a subroutine. When M receives an input program x, it evaluates H(x, x) to determine how program x behaves when given itself as input. If H(x, x) outputs 'Y', M enters an infinite loop; if H(x, x) outputs 'N', M immediately halts. -

    - - - M(x){ - if(H(x ,x) == 'Y') while(true); - else if(H(x ,x) == 'N') return; - } - - -

    - The evil part occurs when we give program M(x) itself as input, M(M). Program M calls its subroutine and asks H(M, M) what M will do. If H outputs 'Y', it is wrong, because M loops infinitely. If H outputs 'N', then it is wrong, because M halts. The decider H is forced into an inescapable failure, proving that no universal decider can exist. -

    - -

    - While Gödel, Church, and Turing established the primary boundaries of computation, they did not work in a vacuum. During this period, the broader academic community worked to synthesize the definitive mechanics of effective calculability. Jacques Herbrand and Gödel formalized general recursive functions between 1931 and 1934 Kurt Gödel, "On Undecidable Propositions of Formal Mathematical Systems," mimeographed lecture notes, Institute for Advanced Study, Princeton, 1934.. Emil Post independently defined "Finite Combinatory Processes" in 1936, outlining a theoretical architecture functionally identical to Turing's model Emil L. Post, "Finite Combinatory Processes Formulation 1," The Journal of Symbolic Logic 1, no. 3 (September 1936): 103 105.. Stephen Kleene subsequently unified these disparate threads, proving the strict mathematical equivalence of Church's lambda calculus, Herbrand Gödel recursive functions, and Turing's mechanical architectures Stephen C. Kleene, "General Recursive Functions of Natural Numbers," Mathematische Annalen 112 (1936): 727 742.. -

    - -

    - The academic community was thus equipped with three mathematically equivalent foundations for computation theory: recursive functions, the lambda calculus, and the Turing Machine. While all three frameworks remain active subjects of study, Turing's model is unique in providing practical intuition through the abstraction of physical machines and programs. This made it the foundation of choice for computation theory textbooks by Stephen Kleene Stephen C. Kleene, Introduction to Metamathematics (Amsterdam: North Holland, 1952)., Martin Davis Martin Davis, Computability and Unsolvability (New York: McGraw Hill, 1958)., and Marvin Minsky Marvin L. Minsky, Computation: Finite and Infinite Machines (Englewood Cliffs: Prentice Hall, 1967)., leading to the modern standard presentations by authors such as John Hopcroft and Jeffrey Ullman John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation (Reading: Addison Wesley, 1979)., as well as Harry Lewis and Christos Papadimitriou Harry R. Lewis and Christos H. Papadimitriou, Elements of the Theory of Computation (Englewood Cliffs: Prentice Hall, 1981).. -

    - -

    - To definitively apply his proof to the Entscheidungsproblem, Turing carried the additional burden of establishing that Hilbert and Ackermann's intuitive concept of an effective procedure was functionally equivalent to a Turing Machine program. Turing addressed this issue directly in his 1936 paper. Over the following decades, the academic community evaluated and accepted his argument, cementing what is now known as the Church Turing Thesis. This consensus supplied the necessary bridge between mathematics and modern computer science by formally equating the vague, historical notion of a human procedure with the rigorous, mechanical definition of an algorithm. -

    - -

    - For Turing's purposes working on the Entscheidungsproblem, establishing functional equivalence between algorithms and Turing Machine programs was sufficient. However, when the Turing Machine serves as a foundational model for computation theory, we are led to ask another question: whether the Turing Machine is representative of modern architectures, and to the extent it differs, how this would affect the applicability of computation theoretic results. -

    - -

    - In reading Alan Turing's 1936 paper, it is striking how modern the text feels, specifically because he discusses algorithms, stored programs, and the mechanical limits of computation. - While his contemporaries largely built purely mathematical and logical frameworks, Turing uniquely tied computation theory directly to the abstraction of machines executing stored programs. Because physical hardware capable of executing stored memory programs had not yet been invented, this explicit architectural grounding makes Turing's work remarkably prescient. Still, Turing could not formally connect the Turing Machine to modern architectures, simply because those architectures did not yet exist. Here, by modern, I refer to architectures utilizing random access system memory, dedicated instruction fetch streams with dynamic branching, and discrete processing units. Though Charles Babbage's 1842 Analytical Engine touched on these concepts, they would wait until the 1940s to reemerge. The practical engineering context of 1936 was limited to calculating machines programmed via patch panels. Hence, for example, there is no explanation in his paper as to why a von Neumann architecture machine (1945) running a program would exhibit the computation theoretic results derived from a computation theory based on the Turing Machine (1936). -

    - -

    - To establish the missing connection to modern architecture, the volumes of the TTCA, starting in the following chapters, transform the Turing Machine into a modern architecture in a stepwise fashion, while ensuring that at each step the modifications are inconsequential to computation theoretic existence proofs and complexity class results. We do run into some problems, so the architecture we derive will be a little different from those we currently build. -

    - -

    - The infinite tape is not as large of a hurdle as it might seem at first. For computational problems, the Turing Machine halts in a finite number of steps. Because the Turing Machine is limited to stepping the read/write head over one cell per machine execution step, in a finite number of steps, only a finite amount of tape is ever used. But for a given computation, how much tape is that? Resolving this by assuming more tape is simply attached when needed is analogous to cheating in a 'guess the bigger number' game by declaring, "My number is always one bigger than the given number, so I will tell you my guess after you state your number." Some mathematicians suggest that what is meant by infinity is precisely a rule of this sort. For engineers building physical hardware, however, to state that a resource starts finite and expands incrementally over time is a very different proposition than being asked to install infinite memory on a machine in the first place. -

    - -

    - In 1967, Marvin Minsky addressed this very topic in saying: "We need not think of the machine's tape as infinite. We imagine instead that the machine begins with a finite tape, but that, whenever an end is encountered, another unit of tape is attached." Marvin L. Minsky, Computation: Finite and Infinite Machines (Englewood Cliffs: Prentice Hall, 1967), 167. In 1967, this was a perfectly natural thing to suggest, as computers utilized magnetic tape memory on manually mounted reels, and it was entirely possible for a computation to stop and request a new reel of tape to be mounted. Contemporary computer architectures do, in fact, achieve a similar effect through virtual memory. When physical RAM is depleted, the operating system pauses the active process and autonomously provisions apparent capacity by swapping memory pages out to auxiliary storage. However, this illusion of infinite tape remains bound by the physical limits of the secondary storage and the boundaries of the processor's address space. Once the available swap space is exhausted or the address space is saturated, the operating system abruptly terminates the process. -

    - -

    - Like a Turing Machine, a computer architecture is an abstraction. The box sitting on a person's desk is a realization of some computer architecture. To say a Turing Machine does something is to say that the Turing Machine was analyzed and the result of the analysis is that 'something'. A computer architecture can also be analyzed. A computer architecture is said to be Turing Complete when through analysis it is determined that it can do anything that a Turing Machine can do. The practical implications for a realization of a computer architecture is that a running program will only throw an error because a) the program logic told it to, b) the program has a flaw, or c) there is a mathematical fact standing in the way of execution. It is tolerable to call a computer architecture Turing Complete if it has the built in ability to pause a program until a 'more memory' request is fulfilled. If there can be any other errors from a realization running a program, such as running out of address space or integer overflow, then the architecture is not Turing Complete. -

    - -

    - Turing's a machine from his 1936 paper utilizes binary. George Boole's work (1847, 1854) was well established by then, so from a theoretical standpoint, it was a sensible simplification. However, utilizing binary within the context of a machine description effectively bridged the gap to the more practically minded engineers of the time. Alan Turing's paper arrived at the same time that switched telephone networks had reached a scale that made them difficult to maintain without systematic approaches. These networks were built upon electromechanical relays, which were decisively binary devices. At least seven men in addition to Alan Turing appear to have independently contemplated the intersection of Boolean algebra, logic, and physical computing: Victor Shestakov (1935, proposed mapping Boolean algebra to electromechanical relay circuits), Konrad Zuse (1936, adopted base 2 architecture to bypass the physical complexity of decimal mechanical gears), Akira Nakashima (1936, published the mathematical equivalence of Boolean algebra and two terminal switching networks), Louis Couffignal (1936, proved calculating machines must shift to binary linkages to reduce physical friction), Claude Shannon (1937, published the definitive mathematical proof mapping Boolean algebra to electrical relays), George Stibitz (1937, constructed the first electromechanical binary adder), and John Vincent Atanasoff (1937, adopted binary to keep the vacuum tube count of electronic circuits physically viable). -

    - - The computer design abstraction stack - -

    The six levels

    - -

    - There are a number of discernible levels to the computer design abstraction stack: -

    - -
      -
    1. mathematical logic
    2. -
    3. computation theory
    4. -
    5. architecture
    6. -
    7. organization
    8. -
    9. implementation
    10. -
    11. realization
    12. -
    - -

    - Mathematical logic underpins the computation theory layer. Computation theory speaks of the time and space complexity of algorithms and the existence of solutions to decider problems, which in turn guides the goals of the architecture and organization layers. -

    - -

    - An architecture provides programmers with information that is valuable when designing the logic of programs. This includes programmers across the entire software stack, such as firmware engineers, driver developers, systems programmers, compiler writers, and application developers. Although applications programs might only be exposed to the virtual architecture presented by various standards, various libraries, and the programming language used. In addition to specifying the instructions (instruction set architecture), architecture includes describing the memory and hardware virtualization features, specifying the behavior of the interrupt subsystem, the method of doing I/O, DMA, the special registers and their effects, any architectural busses, and the standards to be followed for each if any. More recently, this also includes specifying how programs can make use of secure areas. The architecture is specified by an architect. -

    - -

    - The classic text by Hamacher, Vranesic, and Zaky carefully defines the organizational level as sitting between architecture and implementation V. Carl Hamacher, Zvonko G. Vranesic, and Safwat G. Zaky, Computer Organization, 5th ed. (New York: McGraw Hill, 2002).. - Organization is the register transfer level description of the machine, which includes internal buses, external buses and the state machines that implement the protocols used, control units, interrupt structures, and ALU layout. Crucially, it is at this level that decisions regarding instruction level parallelism are made, such as whether the processor will employ a scalar, superscalar, or VLIW design, the depth of its execution pipelines, the use of out of order execution, branch prediction strategies, and the specific hierarchy of hardware caches. It dictates the logical arrangement of hardware and the procedures that force the data to flow to satisfy the architectural constraints. Organization is sometimes called micro architecture, and it is made by a design architect. -

    - -

    - It is not a requirement of a computer organization, nor an architecture, that it be capable of physical realization. The abstract Turing Machine organization developed in a later section serves as an example. Instead, an abstract organization can serve other purposes, in this case as a stepping stone to another organization that can be realized. -

    - -

    - The implementation instructs the manufacturing teams very specifically on what is to be built. For a microprocessor chip, this consists of the full wiring of the logic gates and transistors, instructions for cutting the lithography masks, the package to be used, and the production test programs to be run. The instructions for cutting the masks consist of the sizes and placement of doping wells and gates, the placement of contacts, and where to run wires. The implementation is designed by design engineers, with the assistance of design synthesis tools and CAD tools. -

    - -

    - A realization is a physical box full of plastic, metal, fiberglass, and silicon, along with a smattering of exotic materials. A realization is made by manufacturing engineers, technicians, and product line workers, with the assistance of some of the most sophisticated machines ever built by humankind. -

    - -

    - If a computer manufacturer keeps the architecture as a constant, all other levels can change, and a customer will be able to run the same software. The same organization can be used with different implementations. Minor changes in manufacturing process can sometimes be used with an older implementation, for example a simple transistor shrink. -

    - -

    The levels are not independent

    - -

    - The layers are merely idealizations. In both practice and theory it is not possible to completely disentangle them. On a new machine of the same architecture, it is common that some software will require updates to run, and almost certainly specific operating system support will be required. -

    - -

    - An architect almost always has a reference organization in mind, and design architects work with design engineers to know what is practical, and design engineers work with manufacturing engineers to know what can be built. -

    - -

    - The common understanding of the word 'architecture' is what Hamacher and Zaky call an organization. For example, even the most experienced of architects will say things like a microprocessor has a "superscalar architecture", though whether a processor is a scalar, superscalar, or VLIW machine is clearly a question of computer organization. -

    - -

    - In fact, architecture instructs organization. When an architect designs an instruction set that has load instructions, it implies that there will be an instruction fetch, and thus an instruction bus. Furthermore the load data has to come from somewhere, so there will be data fetch and a data bus. Could both be the same bus? If not, then we have a "Harvard Architecture". The fact is, almost no one involved in computer design completely divorces architecture from organization. -

    - -

    - This cascades down the stack, as organization instructs implementation, etc. For example, if the architecture has an instruction that names one of N registers as an operand, then the organization has a register file that data flows to and from, and busses to carry that data, the design will specify a register file and layout the busses, and the manufacturing people will build them. -

    - -

    Where the Turing Machine fits in

    - -

    - The Turing Machine is a computation theory object that is suggestive of a simple architecture, and a computer organization. A person who has had to do homework problems centered on Turing Machines will have tracked the flow of data through the machine, i.e. worked at the register transfer level. However, a little work is needed to complete the architecture analog. The fundamentals are present, the read/write head, the tape, the procedure for using the tape, but other components are missing. The manipulation of symbols remains ungrounded. The tape is not well defined. The use of emptiness is non architectural like. The tape transport is not articulated, though it is implied. The read buffer that is required, so the programmed controller can do a write without clobbering the read data needed for the next transition, is not identified as a component. As we proceed, we will likely discover other missing components. -

    - -

    Computation theoretic consequentiality

    - -

    - The Turing Machine is an abstraction, as are architectures, organizations, and implementations. Only a computer realization is concrete, but even then we can make observations that are analogous to properties of an abstraction. Hence, we can use the language of mathematics to talk about machines at all of the levels. -

    - -

    - When a transform applied to machine m_i produces machine m_{i.1}, and this latter machine gets the same results for the same computational inputs, and furthermore, if any computation theory analysis applied to m_{i.1} yields the same answer as it would when applied to m_i — we say that the transform is computation theoretic inconsequential. Otherwise, the transformation is said to be computation theoretic consequential. The remainder of this section defines these terms more precisely. -

    - -

    Definition of the same results transform property

    - -

    - Suppose we are interested in a given Turing Machine m_i where the machine will potentially be run after being given any one of a number of input tapes x_{i,j}, and for each of those inputs the same tape with the results written will be r_{i,j}, then we notate this as: -

    - - - m_i(x_{i,j}) = r_{i,j} - - -

    - Here the subscripts of the same name set up a correspondence. x_{i,j} is the jth input to the machine m_i, etc. The free variable j runs over all the interesting distinct input tapes to be given to machine m_i. So for example, if we had a machine, say m_8, and we had a set of three inputs to be given to m_8, then: -

    - - - \begin{aligned} - m_8(x_{8,0}) &= r_{8,0} \\ - m_8(x_{8,1}) &= r_{8,1} \\ - m_8(x_{8,2}) &= r_{8,2} - \end{aligned} - - -

    - Another machine, perhaps machine m_7, would have its own distinct inputs x_{7,j}, etc. -

    - -

    - Now suppose that a machine m_{i.1} is the result of a transformation, T, applied to machine m_i. -

    - - - m_i \xrightarrow{T} m_{i.1} - - -

    - We can then assign a property to transform T called its doesn't change results property, as follows. If and only if: -

    - - - \forall j \colon r_{i,j} = r_{i.1,j} - - -

    - then T doesn't change m_i results. Here we note that we are evaluating a specific machine m_i, so we must add the qualifier 'm_i results'. It might be that for another machine with another corresponding set of interesting inputs, the transform would lead to a new machine that produces different results. -

    - -

    - If, and only if, it is the case that -

    - - - \forall i, \forall j \colon r_{i,j} = r_{i.1,j} - - -

    - then we can say without qualification that T is a same results transform. Though still implied are the sets of machines, tapes, and questions. -

    - -

    Definition of the computation theoretic consequential/inconsequential transform property

    - -

    - Suppose we still have the given machines, and their corresponding inputs, that were used when determining transform T is a same results transform. -

    - -

    - Suppose we also have a computation theory C that allows us to analyze some machines so as to answer some questions we find interesting. Suppose furthermore that among these questions are questions of time and space complexity, along with zero or more questions about decidability. Furthermore, we are given a machine, say m_i, for which these questions have answers. We represent this as: -

    - - - a_{i,k} = q_{i,k}(m_i, \{x_{i,j}\}) - - -

    - Here, \{x_{i,j}\} represents the entire domain of j tapes being passed as arguments to the question q_{i,k}. From this, we can observe that if there are n_k questions, then we will have n_k answers. Also, for a specific machine m_i, where there are n_j j values, the domain over which m_i will be analyzed will have n_j tapes in it. -

    - -

    - As we had already discovered when determining T is a same results transform, T transforms machine m_i into machine m_{i.1}. -

    - - - m_i \xrightarrow{T} m_{i.1} - - -

    - For our specific machine m_i, if and only if: -

    - - - \forall k \colon a_{i,k} = a_{i.1,k} - - -

    - then T is computation theoretic inconsequential for m_i. -

    - -

    - If, and only if, it is the case that: -

    - - - \forall i, \forall k \colon a_{i,k} = a_{i.1,k} - - -

    - then we can say without qualification that T is computation theoretic inconsequential. Though still implied are the sets of machines and tapes. -

    - - - - - Symbol - -

    - A symbol is a distinct mathematical object capable of being instantiated. Within a given context, any instance of a specific symbol evaluates as equal to any other instance of that identical symbol, and evaluates as not equal to any instance of a different symbol. -

    - -

    - Put more formally, given a set of instantiable objects and a collection of instances made from them, for these objects to be symbols, two structural conditions must be met. First, it must be possible to define an instance comparison operation, denoted =, that acts as an equivalence relation to partition the collection into discrete equivalence classes. There must be a one to one correspondence between the resulting equivalence classes and the original instantiable objects from which the member instances were derived. -

    - -

    - It follows from this definition that the distinct equivalence classes can be used as a proxy for the instantiable objects themselves. That is, a person can name either the instantiable object or the equivalence class, and then through this correspondence, find the other. -

    - -

    The factory interpretation

    - -

    - In the context of real machines, the symbol itself can be defined as a factory that produces symbol instances. A new symbol instance of the given symbol is then made, say, by calling the factory's make function. All of the symbol instances made by the factory constitute the members of the corresponding equivalence class. -

    - -

    - A symbol instance newly minted by the factory is said to come direct from the factory. A symbol instance direct from the factory is also called an original. -

    - -

    Required properties of symbol factories

    - -

    - Any two symbol instances returned directly from two distinct factories will always evaluate to False during an equality comparison. In other words, two distinct originals will always be not equal. -

    - -

    - Given an original, all copies stemming from it will be equal to each other and to the original. By stemming from, this definition includes all direct copies and copies of copies. -

    - -

    - Given any two originals, say A and B, it is established that A is not equal to B, as discussed above. Note also that A is not equal to any copy stemming from B, and B is not equal to any copy stemming from A. -

    - -

    - Though symbol instances are integer like in that copy and equality comparison operations can be used with them, symbol instances are disallowed from being used with other integer operators. Symbols cannot be compared for greater than or less than; they cannot be incremented, added, nor subtracted, etc. -

    - -

    Instance implementation

    - -

    - Within a process, a reference to the factory can be used as a symbol instance, which will cause the factory to become trivial. Making a new instance will merely require copying the factory reference, and there will be nothing in memory that the base factory reference is pointing to. -

    - -

    - In general, memory addresses are built in symbol instances, hence within the context of a single process run, a program can make use of these symbols. However, this diminishes the size of the address space and leaves the memory at those addresses unused. A common hedge is then to use references into a dictionary, where the data looked up in the dictionary is the name of the symbol. -

    - -

    - Such symbol names are non structural strings, so they do not need to follow the rules of symbols. For example, a program written where references to strings were used as symbol instances, could give multiple, or all, strings the same name, and the program would function. Conventionally, the names are made to be distinct so as to avoid confusion. The hazard here is that a programmer will then conflate the string name with the symbol instance, and perform symbol operations with it. -

    - -

    - An alternative implementation is to have the factory return an integer value. Each factory has a base integer that is distinct from that of other factories. Calling make then returns the base integer. -

    - -

    - As another alternative, each factory can be given a base string, and then make returns a copy of the base string. Here we refer literally to the string as the symbol instance. There is no separate name, and the string data, not the reference to the string, becomes the symbol instance. This is however merely an architectural constraint, under the hood an implementation could use string references as long as it always appears to the programmer that the string value is being used. -

    - -

    - At the time of this writing many machines use 64 bit words. This is equivalent to 8 ASCII characters, while the average size of an identifier is about 5 characters. Hence the approach of using a string as a symbol might not be as inefficient as it seems to be at first. Using strings has advantages. Symbol instances can carry semantic clues for the programmer. There is no hazard of conflating the string instance with the name, as they are the same. Also, a string instance will have integrity across contexts, such as between invocations or when passed between processes (note the section below on crossing context boundaries). A drawback is in cases there is no language support, the strings are typically ad hoc so the guarantee of distinctness becomes merely a contract with the programmer. -

    - -

    Consequentiality

    - -

    - The time that a Turing Machine takes to copy a symbol to or from tape is considered to be a single machine step. The step itself is part of the step count, and the count certainly is consequential, but the copy itself is a constant of 1. It will never affect time complexity results. -

    - -

    - The Turing Machine is defined with a finite alphabet and a couple of additional symbols. As these are part of the machine definition, and thus do not change at run time, the time to make them is inconsequential. -

    - -

    - On a real machine, the factory would be used to make the alphabet and a couple of additional symbols, but as the alphabet is finite, and set in advance, making it is similarly inconsequential. -

    - -

    - This leaves the question of the time to copy an instance. Such a copy is done when reading and writing a tape on the Turing Machine, and reading and writing memory on a real machine. As the alphabet is finite, each symbol can be encoded in a fixed number of bits. Hence, a copy time is constant. Typically the number of symbols involved is so small, that a single read or write of memory is required for doing a copy, but even if the number of symbols is enormous, it will be a fixed constant time. There can be extenuating circumstances, such as cache misses and page faults. So generally symbol copy time is inconsequential, but it is possible in address aliasing conditions, say with page faults, can muddy the picture. -

    - -

    Distinctness across contexts

    - -

    - If a symbol persists across contexts (such as across scopes or processes), it must remain distinct from all other symbols in its new context. -

    - -

    - One way to meet this requirement is to find a scope encompassing both contexts and to place the symbol factory there. Another solution is to give each context a distinct root symbol and to use an array of symbols in place of the imported symbol. Yet another approach is to associate an imported symbol with a new symbol in the given new context using a correspondence map. -

    - -

    - When utilizing memory addresses as symbols in a virtual memory environment, the convention is to disallow addresses in one process from being used in another. If that isolation is insufficient, it is often adequate to use indexes instead of addresses, taking the address to the base of the data structure. Though the absolute address of the data structure might differ across contexts, the relative offset remains constant. Another approach is to reserve memory address blocks and to guarantee imported pages have the exact same addresses as before, though they might be imported sequentially to reuse the memory block. In architecture, this is generally known as the pointer swizzling problem. -

    - -

    Alphabet

    - -

    - An alphabet is another name for 'a set of symbols'. Because it is simply a set, an infinite number of distinct alphabets can exist. Papers on Turing Machine typically speak of 'the alphabet', as the alphabet of data symbols. However, other alphabets can be defined for Turing Machines, such as the alphabet of states in the programmed controller. A set of symbols could be finite or infinite. The Turing Machine alphabets are finite. -

    - -

    Examples

    - -

    - The enum of C is used to make alphabets of named symbols. Each entry in the enum is a static symbol factory, and instances are distinct integers. -

    - - - /* The enum definition acts as the factory. */ - typedef enum { - SYMBOL_EMPTY = 0, - SYMBOL_ZERO = 1, - SYMBOL_ONE = 2, - SYMBOL_A = 3, - SYMBOL_B = 4 - } TapeAlphabet; - - /* Instantiating copies of the symbols: */ - TapeAlphabet cell_1 = SYMBOL_A; - TapeAlphabet cell_2 = SYMBOL_A; - - /* Equality comparison over instances */ - if(cell_1 == cell_2){ - /* Evaluates to True */ - } - - -

    - The enum is a static alphabet made by the compiler, where symbol instances are integers. In the following example, the alphabet is made dynamically, where each symbol instance is a string pointer. -

    - - - - #include <string.h> - #include <stdlib.h> - #include <stdio.h> - - // maximum legal index into the symbol list - #define LIST_EXTENT 3 - - typedef const char *Instance; - typedef struct{ - Instance *head; - Instance *tail; - Instance *extent; - } List; - - static List SYM_LIST = {NULL ,NULL ,NULL}; - - Instance make_list(const char *name){ - size_t size = LIST_EXTENT + 1; - SYM_LIST.head = (Instance *)malloc( size * sizeof(Instance) ); - SYM_LIST.tail = SYM_LIST.head; - SYM_LIST.extent = SYM_LIST.head + LIST_EXTENT; - *SYM_LIST.head = strdup(name); - return *SYM_LIST.head; - } - - Instance make_symbol(const char *name){ - if(!SYM_LIST.head) return make_list(name); - - Instance *pt = SYM_LIST.head; - while(1){ - if( strcmp(*pt ,name) == 0 ) return *pt; - - if(pt == SYM_LIST.extent){ - fprintf(stderr ,"symbol list overflow for %s\n" ,name); - return NULL; - } - - if(pt == SYM_LIST.tail){ - *++SYM_LIST.tail = strdup(name); - return *SYM_LIST.tail; - } - - pt++; - } - } - - int main(){ - Instance a = make_symbol("a"); - Instance b = make_symbol("b"); - Instance c = make_symbol("c"); - Instance d = make_symbol("d"); - Instance e = make_symbol("e"); // overflows table - - Instance *pt = SYM_LIST.head; - Instance *pt_tail = SYM_LIST.tail; - while(1){ - puts(*pt); - if(pt == pt_tail) break; - pt++; - } - - if(e == NULL) printf("e is NULL\n"); - } - - - - The Turing Machine as a computer architecture - -

    - In this interpretation of the Turing Machine, the architecture utilizes a single ended tape, as done in Hopcroft and Ullman's book John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation (Reading: Addison Wesley, 1979).. 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 inconsequential variation of the two way tape machine. -

    - -

    - Furthermore, this definition adopts the language of hardware specification rather than formal mathematics. Because this is merely a terminology change with direct correspondences between operations, the resulting model remains isomorphic to the Hopcroft and Ullman definition. Adopting this architectural perspective facilitates the goal of building downward toward a computer architecture, rather than upward to abstract mathematical analysis, though it certainly does not preclude such analysis. In this model, the fixed components are read only, while the memory components will potentially have data flowing through them. As detailed in the control procedures below, data flows dynamically at the command of the programmed controller. -

    - -
    - Figure 1: A Turing Machine -
    Figure 1 A Turing Machine
    -
    - - -

    The Turing Machine consists of:

    -
      -
    • a read only alphabet that instances can be made from
    • -
    • a read only empty symbol that instances can be made from
    • -
    • a constant tape consisting of read writable cells
    • -
    • a read only left from leftmost error symbol that instances can be made from
    • -
    • a head bearing tape transport mechanism
    • -
    • a read writable single symbol read data buffer
    • -
    • a constant state machine programmed controller with states that can be referenced
    • -
    • a constant initial state reference
    • -
    • a constant halt state reference
    • -
    • a read writable current state reference variable
    • -
    • a constant operation procedure where each step of the procedure can be referenced
    • -
    • a read writable operation procedure step reference counter
    • -
    • a read only clock to synchronize control and to cause counting until the halt state is reached.
    • -
    • a fixed hardware comparator to evaluate state and symbol equivalencies
    • -
    • a reset button that activates logic that initializes the machine
    • -
    - -

    Each highlighted term is a short name for the associated item.

    - -

    - The distinct empty symbol can be any symbol that is excluded from the alphabet. Only instances of alphabet symbols or the empty symbol are permitted to be written to the tape. -

    - -

    - Intuitively, a person might consider that the alphabet symbols are useful while the empty symbol is merely taking up space while waiting to be displaced, in the same manner that a person considers a bookshelf to be empty rather than being full of air. (And if a person puts a bookshelf underwater, is it still empty, or is it full of water?). -

    - -

    - Depending on the design, without reset being held during power up, a real machine can land in an illegal state that might not be resettable, and could conceivably be damaging. Hence, reset is normally held during power up, and it is reset, not power up, that causes a machine to land in a known initial state. -

    - -

    - This design assumes that when reset is released, the then initialized machine starts running. This is fine for our purposes, but surely the deluxe model would have a separate 'go' button and the associated logic. -

    - -

    - Note that we packaged a tape transport along with the head. In this volume we will talk about sending step commands to the head, but of course a head doesn't step, rather a tape transport mechanism steps. Hence, when we talk about 'stepping the head' implied is that the head remains stationary, and the tape transport mechanism moves the tape. As the tape is normally very long and held on spools, even if we could move the head it would not be very effective. -

    - -

    - The constant operation procedure should not be conflated with the Turing Machine program. For a microcode controlled machine, the procedure will be found in microcode memory, and it will be executed as though a program. Each line of the procedure, when read, results in a set of bits being connected to the machine's control lines. Some of those control lines will control what the procedure does, and some will extend out into the data path and be used to configure execution units and gate data on to busses. -

    - -

    - For a hardwired machine, the operation program will be expressed with logic gates and flip flops (single bit memory registers). Whether a machine is microcode controlled, or hardware controlled is a question of implementation. The values on the control lines remain the same independent of those implementation decisions, so those decisions are inconsequential to our architecture discussion. -

    - -

    - The Turing Machine architecture specifies an infinite tape, which can neither be implemented, nor realized. We will introduce a computationally inconsequential modification in a later chapter that causes the tape to be finite. -

    - -

    The Turing Machine tape cell

    - -

    - A property is a pair, where the components are called the name and the value. A name is an instance of a symbol and it must uniquely identify the property within its context. The value is a variable that can be written then read back. -

    - -

    - A cell is the square from Alan Turing's 1936 paper Alan M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem," Proceedings of the London Mathematical Society s2 42, no. 1 (1936): 230 265.. Mathematically, a cell is a distinct identifiable set, with one to three property members depending on the type of cell. -

    - -

    - A leftmost cell is a set of two properties named 'right neighbor' and 'data'. A rightmost cell is a set of two properties named 'left neighbor' and 'data'. An interstitial cell is a set holding three properties: a 'left neighbor', a 'right neighbor', and 'data'. While an island cell owns a single compulsory property, that of 'data'. -

    - -

    - The value of a cell neighbor property is limited to being the identity of a cell. The value of a cell data property can be an instance of an alphabet symbol, or alternatively, an instance of the empty symbol. -

    - -

    The Turing Machine tape

    - -

    - The Turing Machine tape is a set containing exactly one leftmost cell and an infinite number of interstitial cells. For each cell in the set, called cell A, if cell A has a right neighbor that is cell B, then cell B's left neighbor is cell A. Similarly, if cell A has a left neighbor of cell B, then cell B's right neighbor is cell A. Furthermore, any cell in the set must be reachable by traversing right neighbors starting from the leftmost cell, in a finite number of steps. -

    - -

    - To say that a tape is infinite, and to simultaneously require that any cell can be reached in a finite number of steps, might seem to be contradictory. However, these locutions are compatible in their meaning. By saying the tape is infinite, we are saying that after reaching a cell through a finite number of right neighbor hops, there will always be further cells to the right. So though any cell can be reached in finite hops starting at the leftmost cell, all of the cells cannot be reached. -

    - -

    - In conventional computation theory, once a tape is defined the cell neighbor properties values are fixed. Cells don't move, new cells cannot be added, and cells existing on the tape cannot be removed. This fits the definition of a space, so we can say that a Turing Machine tape has a constant, fixed, linear topology. This also matches the reality of hardware memories. On the other hand, it does not track well with general memory containers such as linked lists where destructive operations are often permitted. -

    - -

    - Nor can a cell data property be removed; however, unlike for cell neighbor property values, the cell data property value can be changed while the Turing Machine is running. In fact some people would say this is the whole point of running a Turing Machine. -

    - -

    - Initially the Turing Machine tape is filled with empty symbols. However, as we noted above, a Turing Machine cannot visit all the cells on a tape, so a Turing Machine cannot erase a tape in advance for another Turing Machine to use. In a later chapter we will provide a computationally inconsequential alternative, but for now we will do as all have done before us, and decree that initial empty tapes are available by definition. -

    - -

    - The tape is intentionally defined in such a manner that there is no meaning to 'in between' two cells. The head of the machine is always on exactly one cell, with the option of stepping to neighbor cells. Taking a step is an atomic operation; there is no meaning to 'during the step'. Turing Machines are state machines controlled by a clock. A person only asks questions of them when the machine is in a defined state. -

    - -

    - 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. -

    - -

    The Turing Machine tape head

    - -

    - The tape head consists of a reference to exactly one of the tape cells and a set of four functions: read, write, step-left, and step-right. In addition, the tape head can throw an error, left-of-leftmost, 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 the cell the head is on, or more simply, the head cell, or more generally as the indicated cell. -

    - -

    - 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. -

    - -

    The programmed controller

    - -

    - There are two distinct centers of logical control for the Turing Machine. The one we are most familiar with from the many descriptions of the Turing Machine in papers is called the 'state controller'; however, this term becomes confusing when we realize there are additional controllers involved. Hence, we call this component the programmed controller. It is customized for each different problem the Turing Machine will work on, while the other controllers give the Turing Machine its fixed characteristics. -

    - -

    Components

    - -

    The programmed controller contains the following components:

    -
      -
    • alphabet of states
    • -
    • a reset control line
    • -
    • a step control line
    • -
    • an initial state
    • -
    • a halt state
    • -
    • a current state register
    • -
    • a comparator
    • -
    • an instruction table
    • -
    • a next state table
    • -
    • default next state table
    • -
    • error state symbol
    • -
    - -

    - Each state corresponds to a symbol. Here, instances of the state symbols appear in a different context than that of the data alphabet symbols or the empty symbol, and thus they do not need to be distinct from them. In real machines, state symbol instances are unsigned integers. -

    - -

    - The alphabet of states is specified in the architecture, and in the design stage becomes a table in a document where each row relates a bit vector with a name. It remains a documented abstraction to the designers, but can become embodied in programs where meaningful print statements are needed. Perhaps in a CAD tool such as a hardware debugger. -

    - -

    - The current state register holds an instance of the current state symbol. During reset its value is forced to be an instance of the initial state symbol. During normal operation it is successively updated with the prior next state choice. -

    - -

    - The current state register output is wired to the comparator, along with the halt symbol. A positive match across the comparator asserts a gating signal that halts the machine clock. This halts the internal procedures (discussed in a later chapter), which guarantees that no further step pulses will arrive at the programmed controller. -

    - -

    - The current state register is used to lookup a row in the instruction table. Each defined row contains an instruction that is sent to the tape transport unit. A retrieved instruction provides the specific control code and, in the case of a write instruction, the argument symbol to be written. If the current state yields no match in the instruction table, the logic defaults to issuing a 'no-op', no operation instruction. While a 'no-op' need not be physically acted upon by the tape transport, the fixed wiring typically propagates the signal regardless. -

    - -

    - The current state register, concatenated with the output of the read buffer, is used to lookup a row in the next state table. It yields the subsequent state, or an indication that the given input is not found. -

    - -

    - The current state register is also used to lookup a row in the default next state table while ignoring the read buffer output. An entry for a given state might not exist here either. -

    - -

    - The 'lookup' operation can be implemented in a number of ways, at the election of the design engineers. In the simplest form a lookup indexes into an array, though this can be inefficient. For such small machines a hash table is an unlikely alternative. More likely is content addressable memory, a programmable logic array, or custom combinational logic. -

    - -

    - The programmer must provide the state alphabet, the instruction table, and the next state table. To do this, the programmer benefits from understanding how the programmed controller works. When preparing to provide the tables, the programmer can draw a state machine graph. There are two styles of state machine graphs: the Mealy style and the Moore style. The Mealy style has outputs specified on the edges, while the Moore machine has outputs associated with states. They are equivalently expressive, though the Moore style more easily leads to the table values for the programmed controller described in this section. -

    - -

    - Each defined row of the instruction table specifies a state specific instruction to be given to the tape transport unit. The instruction will be one from the set: { no-op, step-left, step-right, and write(value) }, where the value parameter for a write instruction is coded directly as part of the instruction. -

    - -

    Control logic

    - -

    - The following procedure is embodied as further control logic in the Turing Machine. This procedure is fired upon receiving a step pulse. At the time the procedure is entered, the head is stable upon a cell. We list phases so as to avoid any apparent race conditions. This does not dictate to the designers that the clock must have phases, though that isn't excluded either. -

    - -

    Deterministic (Uniplex) programmed control procedure

    - -

    Upon each step pulse:

    - -

    Phase 1:

    -
      -
    1. read the symbol instance indicated by the head into the read data buffer
    2. -
    - -

    Phase 2:

    -
      -
    1. lookup the current state in the instruction table
    2. -
    3. lookup the current state concatenated with the read data buffer in the next state table
    4. -
    5. lookup the current state in the default next state table
    6. -
    - -

    Phase 3:

    -
      -
    1. if the current state is found in the next state table, use the retrieved value as the next state. Otherwise, if the current state is found in the default next state table, use the default state as the next state. Otherwise, use the error state as the next state.
    2. -
    3. if an instruction was retrieved from the instruction table, the tape transport executes it. Otherwise, the tape transport executes the default 'no-op' instruction.
    4. -
    - -

    Phase 4:

    -
      -
    1. write the next state to the current state register
    2. -
    3. controller remains quiescent waiting for the next step pulse
    4. -
    - - -

    Consequentiality of architectural level control

    - -

    - In common books and papers about the Turing Machine, a step is defined as one step of the programmed controller, i.e. one pass through the four phase procedure given above. Decider proofs ask if the comparator will match the halt state within a finite number of steps. Time complexity proofs take a formulation of step count to reach the halt state, parameterized against the size of the input, and report the order of the highest term as it is asymptotically dominant. Hence we speak of constant, linear, polynomial, and exponential time complexity algorithms. A similar method of analysis, that of memory usage with step count, parameterized against input size, is used for space complexity. -

    - -

    - For a real machine, the step pulse will be derived from the machine clock. The clock will have a constant period, so there is a constant duration of time that will be the same for each pass through the execution procedure. Thus, if we replace the step count with a count of clock ticks, we will get the same decider and complexity results as we would have from step counts. This fits the definition we have been using for inconsequential. -

    - - -

    An alternative: stored program and sequencer

    - -

    - The Universal Turing Machine, proposed by Alan Turing, introduced a profound architectural inversion: relocating the defining state tables from hardwired logic, or manually configured patch panels, directly onto the tape itself. This enables replacing the custom programmed controller with a fixed controller that derives its behavior dynamically from the tape data. Consequently, a single, immutable hardware architecture can simulate the execution of any conceivable Turing Machine. -

    - -

    - In addition, encoding a machine's control logic as parseable data on tape establishes an ontology of analysis, a framework where a machine can analyze another machine to establish some properties the other machine might have. We say 'some' because at least one limitation has been proven. Alan Turing proved that such an analyst cannot in general determine if said other machine has the property that it would halt for any input when run. -

    - -

    - We can optimize this representation. Instead of storing the state tables verbatim, we can list a sequence of instructions directly on the tape. To achieve this, the architecture expands to support two distinct categories of instructions: the physical tape transport instructions we defined previously, and a newly introduced category of control instructions. The programmed controller is then replaced with a fixed hardware controller called a sequencer. -

    - -

    - Because the original state tables allowed for non linear execution paths, the instruction sequence on the tape cannot always execute in a straight line. Therefore, the architect must include at least two control instructions: a halt instruction and a test and branch instruction. The sequencer starts at the first instruction in the program, perhaps at the leftmost cell on the tape, and evaluates it. If it is a control instruction, the sequencer acts upon it directly to alter the flow of execution or stop the machine. Otherwise, if it is a physical instruction for the head unit, the sequencer passes it down to the tape transport. -

    - -

    - Because we have not yet derived Natural Numbers or memory addresses in this architecture, a test and branch instruction cannot jump to a numerical address. Instead, it must operate topologically. A topological branch instruction simply commands the sequencer to scan the tape for a specific target symbol, and resume executing instructions from that physical location. -

    - -

    - As noted in the prior section, an instruction consists of an instruction code and potentially an argument. There are many choices that can be made in instruction set design. Among those choices, almost all will be inconsequential from a computation theoretic point of view, but almost all will introduce strict efficiency trade offs in physical hardware. -

    - -

    Machine control

    - -

    - In the prior two sections we discussed the configurable part of the Turing Machine control. Here we complete the picture by describing the fixed portion. -

    - -

    Setup

    -
      -
    1. select and mount a tape
    2. -
    3. push the reset button
    4. -
    - -

    Reset

    -
      -
    1. step the head left until an 'left of leftmost' error from the tape transport unit, the head will then be on the leftmost cell
    2. -
    3. hit reset on the programmed controller, or the sequencer, depending on which is being used
    4. -
    5. wait until the release of the reset button
    6. -
    - -

    Main:

    -
      -
    1. evaluate the value of the reset line coming from the reset button
    2. -
    3. if the reset line is true, execute the Reset procedure
    4. -
    5. if the reset line is false, evaluate the halt line coming from the comparator
    6. -
    7. if the halt line is true, freeze execution until reset is asserted, then return to step 1
    8. -
    9. if the halt line is false, send a step pulse to the programmed controller (or sequencer) on each clock tick
    10. -
    - -

    - A person can read this procedure with the caveat, "if we could realize such a machine, this is what we would do." Later, these directions can be modified and applied to the machine variation that has an expanding tape. -

    - -

    - To start the machine we must first select a tape. Common choices are an empty tape, a tape with data on it the machine is to decide matches a given language pattern, or a tape with a Turing Machine on it to be analyzed. After the tape is selected it is mounted on the Turing Machine, then the reset button is hit. -

    - -

    - After the reset button is released, the machine begins stepping. If the program is a computation, the machine will eventually halt. If the machine eventually halts, then we know the associated program was a computation. Otherwise we do not know. Any amount of time we wait where the machine has not halted, we will not know that it will ever halt. Hence, we cannot in general use 'running a Turing Machine' as a means to determine if a given program is computational. (We could instead try to answer the question 'is it computational' through analysis, but there too, Turing has shown that in general that will not work either.) -

    - - - Area and partitions - -

    - We call a subset of contiguous cells from a tape an area of said tape. An area with a single cell is called a singleton, one with two cells is called a pair. An area has a leftmost cell and a right most cell, for a singleton area, those will both be the same cell. Unless the area is sitting on the end of the tape, it will have a left neighbor cell. A finite area will have a right neighbor cell. An area can be open on the right. -

    - -

    A tape partition is a set of areas that completely span a tape. For any partition of a single ended Turing Machine tape, at least one of the areas will necessarily be infinite. An area can also be partitioned, which leads to nested areas. -

    - -

    Head partition

    - -
      -
    1. The left side: a potentially empty finite set containing all of the cells to the left of the head cell.
    2. -
    3. Head: the head cell.
    4. -
    5. The right side: the infinite set extending rightward from the right neighbor of the head cell.
    6. -
    - -

    Leftmost/remaining partition

    - -
      -
    1. Leftmost: the leftmost cell.
    2. -
    3. Remaining: the infinite set including the right neighbor of the leftmost cell, and all cells further to the right.
    4. -
    - -

    Active area partition

    - -

    - A nonempty tape, one with at least one cell holding an alphabet symbol, can be partitioned into the following areas: -

    - -
      -
    1. The left empty tail: this area is empty when the leftmost cell is nonempty. Otherwise, it consists of the leftmost cell and the empty cells, if any, to the right of the leftmost cell, up to the first alphabet cell.
    2. - -
    3. Active area: a finite area for computational problems, containing the cells extending from the leftmost alphabet cell up to and including the rightmost alphabet cell. It is possible that the leftmost alphabet cell and the rightmost alphabet cell will be the exact same cell.
    4. - -
    5. The right empty tail: the infinite set extending from the right neighbor of the rightmost cell of the active area, extending rightward.
    6. -
    - -

    Area implied partition

    - -

    - Given any area on a tape, or nested within another area, the potential for two additional areas is implied. -

    - -
      -
    1. The left side: a potentially empty finite set containing all of the cells to the left of the given area.
    2. -
    3. The given area.
    4. -
    5. The right side: for a tape, the infinite set extending rightward from the rightmost cell of the given area. For a nested area, this could be empty or finite.
    6. -
    - - -

    The impossibility of recognizing an empty tape

    - -

    - Recognition is a process where a Turing Machine decides if a pattern is present on a tape solely by reading symbols found on the tape. No meta information, such as a message communicating something about the area being examined or the nature of the program that wrote the symbols, can be taken into account. -

    - -

    - The active area partition of a tape only works for tapes that have at least one alphabet cell. As soon as a machine does its first write of an alphabet symbol, it is known the tape has at least one alphabet symbol. However, what if a tape of unknown status, whether completely empty or containing an alphabet cell, is mounted on a tape machine, and it is desired that the machine recognize if the tape is empty or has an alphabet cell? This is the equivalent problem of looking for the leftmost cell of an active area. -

    - -

    - Recognizing that a tape is empty is generally impossible. Suppose it were attempted, and a machine started scanning the tape rightward from the leftmost cell; for every cell that is discovered to be empty, the machine would have to scan further rightward to check for an alphabet cell. If the tape is truly empty, the recognizer would never stop scanning, so no decision would ever be rendered. -

    - -

    The impossibility of recognizing the rightmost cell of the active area

    - -

    - In general, a Turing Machine cannot step across a tape reading cells to recognize the rightmost cell of the active area, or equivalently, the leftmost cell of the right empty tail. Suppose a recognizer attempted this by starting in the active area and stepping right, and the machine discovered an empty cell. The machine would be unable to distinguish between the case of said empty cell being embedded within the active area (meaning more alphabet cells lie further to the right), or the case where said cell is genuinely the leftmost cell of the right tail. To resolve the ambiguity, the machine would be obligated to continue stepping right. Yet, there would never come a time where finding another empty cell would avoid leading back to the exact same case ambiguity, so the machine would forever step right without returning a decision. -

    - -

    - It follows that if knowledge of the end of the active area is needed, this information must be encoded as a message. For example, a special symbol can be reserved in the alphabet specifically to serve as the end of active area marker. Each time a machine steps beyond the current end of active area marker and does a write, it writes the marker in the right neighbor cell, and goes back and erases the old mark. This method is related to communications theory and the science of signaling. Here, the active area marker is an out of band control signal. -

    - -

    - If a tape is written by an initializing tape machine, unmounted, and then mounted on a second analyzing tape machine, the analyzing tape machine is starting with a populated tape. Similarly, a mathematician can, by decree, define an initial tape that holds predefined alphabet symbols. In these cases, the analyzing machine cannot use the signaling method described in the prior paragraph, as it was excluded from controlling all the writes of alphabet symbols to the tape. The only solution to this problem is for the initializing machine and the analyzing machine to use a shared communication protocol for signaling the end of the active area. -

    - -

    - By definition, a computation must finish in a finite number of steps. It follows that the active area when a Turing Machine halts a computation will always be finite. Consequently, if a Turing Machine initially starts working with a tape that was computed by another Turing Machine, the length of the input will be finite. Still, that input will be in the active area, so the receiving Turing Machine will need to read control data left on the tape under a common communication protocol to be able to find the bounds of the input area. -

    - -

    - When an input tape is provided as a general mathematical object, either decreed by definition or perhaps abstracted from 'what a Turing Machine computation would produce in the limit of step count', then the input can be either finite or infinite. -

    - -

    In band and out of band control

    - -

    - Because of the impossibility of recognizing certain tape features, when a tape is written by one Turing Machine, then used by another, there must be some sort of system for messaging control. There are two approaches for mixing data and control together: one is in band signaling, while the other is out of band signaling. -

    - -

    - In band control occurs when control signals or structural metadata are mixed directly into the same channel and alphabet as the data payload. In band signaling leads to ambiguities between what is control and what is data. As we saw, there are cases where a recognizer, i.e., merely examining the data, is completely incapable of resolving even the simplest of control questions. A conventional approach for resolving these ambiguities makes use of escape sequence schemes that grow in length as the levels of communication grow. This has always been an afterthought, a sort of hack. -

    - -

    - In contrast, out of band control communicates structural information through a strictly separate channel or by utilizing symbols definitively excluded from the programmer visible data alphabet. The rightmost tape marker is an out of band mechanism because it utilizes an expanded hardware tape alphabet strictly reserved for machine management, guaranteeing it can never be conflated with the user's data. Modern architectures often lack the luxury of inventing new symbols to serve as control rather than data. Another out of band signaling technique is to structure the data into channels; such structure is called formatting. We find formatting on hard drives, in frame based and packet based communication channels, and in data structures. -

    - -

    Abstract areas and partitions

    - -

    - A tape area and partitioning can be an abstraction defined by a function rather than merely by a leftmost and rightmost cell. Such areas can have different topologies than those of the base tape. A familiar example for most computer scientists is utilizing software to create the appearance of a two dimensional array over a linear memory. -

    - -

    - Accordingly, suppose there is a three tape Universal Turing Machine gasket machine that holds the definition of a base machine on a first tape. It calls the base machine as a subroutine to access the base machine's tape (the second tape), and it uses its own tape to organize the tape abstraction. Then this outer machine can present to its user a variety of transforms of the base machine's tape. -

    - -

    - As an example, a gasket machine could partition the base machine's tape into two areas, one consisting of the odd addressed cells, and the other of the even addressed cells. Though these two areas consist of noncontiguous cells on the base tape, when viewed through the gasket machine, they appear perfectly contiguous. In this case, each area will have a leftmost cell and remain open on the right. -

    - -

    - When the base machine tape cells behind an abstract area are physically contiguous, we say that the abstract area is compact. In the odd even tape partition example, the abstract areas lack compactness. -

    - - - Addresses - -

    We can define a Turing Machine that is identical to the recursive definition of Natural Numbers as given by Peano. Giuseppe Peano, Arithmetices principia, nova methodo exposita (Turin: Fratres Bocca, 1889).

    - -

    If we were to run the Natural Numbers Machine and watch as it writes to the tape, we would watch as the Natural Numbers are printed one after another, '·s·ss·sss·ssss· ...'. Here we are using the middle dot as a terminator symbol. As the Natural Numbers Machine never halts, we cannot use the Natural Number Machine to initialize a tape, but we can analyze the machine. When the leftmost cell holds a terminator, we say it has the value 'zero'. We call '·s·' the number 'one'. Each set of 's' adjacent symbols surrounded by the terminators, and zero, is said to be a Natural Number. -

    - -

    To say that one Natural Number A is smaller than Natural Number B is to say that A would occur on the Natural Number Machine tape to the left of B, if the machine were to be run. Similarly, if B were said to be greater than A, that would mean B would occur further to the right. To increment a Natural Number is to find its right neighbor. To decrement a number is to find its left neighbor. -

    - -

    - Now suppose we have a single Natural Number on a tape, say 'sss·', then we can define an Increment machine that, when initialized with a tape, writes an additional 's' and a new terminator. For example, when initialized with 'sss·' and then run, it produces 'ssss·'. In an analogous manner, we can define a Decrement machine. -

    - -

    As such, we can assign a Natural Number to each member of the tape sequence through the following procedure. Given a machine, say P, we lock to it a second Address Machine, say A_P. When P's tape is first mounted, at the same time A_P is mounted with a tape that has only a terminator symbol, '·'. When P steps right, A_P writes an 's', steps right, and writes the terminator. For each step left of P, the machine A_P steps left and writes the terminator symbol. -

    - -

    - The Natural Number found on A_P is then called the address of the cell the head is on for machine P. As each increment and decrement of the address is a constant time operation, keeping the address of the cell the head is on is a computationally inconsequential action. -

    - -

    - An address space is the set of addresses that would be placed into correspondence to cells if we were to step across all those cells while assigning an address to each cell the head is on. Address space is a second order concept. It is because assigning an address to a cell can be a second order concept that we often take it for granted. -

    - -

    - It is interesting to contemplate if the Natural Number at the basis of the Address Machine instead used Arabic Representation. In that case, an increment or decrement would be a linear time operation due to the carry. Consider a constant time operation on the base machine P, say it steps to the right 5280 cells and writes a mile marker. It would still be a constant time operation no matter the time taken for the address increment. So then consider an operation that is linear time, say a n, where n is the length of the input. Say, for example, it stepped n cells to the right and wrote a marker. If the increment time grows linearly with each step, then what was time n without addresses becomes time n^2 with them, or polynomial time. So indeed using Arabic Representation instead of unary for the address would be computationally consequential for all but constant time machines, if addresses were kept track of in the first order. -

    - -

    - As of the time of this writing, real machines keep the illusion of constant time Arabic Representation for addresses due to fixed width clocked operations. When the width is fixed, and that fixed number is small enough that interconnect delay does not dominate over computation element delay, adder time tends to be logarithmic. The same is true of the related problem of address decoding. Thus an add can be performed within 'one clock tick'. Native address arithmetic operations on modern machines are always done in this manner. Perhaps there exists a special problem, such as pointer swizzling, where address arithmetic would come under software control. -

    - -

    - The model used here to define an address is analogous to keeping a pointer into memory, and then using that pointer value as the address. Each step then increments or decrements the pointer. On a real machine, to access memory requires sending that pointer on a trip through a virtual memory system perhaps, and then through an address decoder. In the Turing Machine model, the head directly indicates a location, so it is more akin to the output of the memory decoder, though unlike the output of a memory decoder, it is stateful, i.e., a persistent value that can be moved incrementally. The analogy with the Turing Machine model holds due to the fiction of a constant decode time, as described in the prior paragraph. -

    - -

    - At a higher level, that virtual memory system level, the memory architecture begins to look more like that of a Turing Machine. The translation lookaside buffer provides stateful location context, and the neighbor relationship between pages might be taken into account for performance reasons. However, once a program starts performing at virtual memory page fetch times instead of local system memory access times, we say that it is page thrashing and know it will become too slow to wait on, no matter its computation complexity class. -

    - -

    - Let us put this into perspective. Suppose in ancient Roman times that a clock tick for a computer was scaled to be one day long. Under this scale, a single nanosecond of real world execution time equates to three days. Suppose a program initiated a read request for a location in memory on the Ides of March, the date when Caesar was assassinated on 0043 03 15 BC. The following table provides the historical date that the variable value would finally be loaded into the processor, depending on the memory tier being accessed: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Memory TierReal World LatencyScaled DelayScaled Arrival EraHistorical Context
    L1 Cache Hit1 ns3 days0043 03 18 BCThree days after the assassination.
    DRAM (Main memory)100 ns300 days0042 01 09 BCNearly a year later, during the Liberators civil war.
    NVMe SSD Page Swap15 µs45,000 days0080123 years later, exactly as the Colosseum is completed in Rome.
    SATA SSD Page Swap100 µs300,000 days0778821 years later, during the reign of Charlemagne and the Frankish Empire.
    Magnetic HDD Page Swap10 ms30,000,000 days82092Tens of thousands of years in the future, long after current human civilizations are dust.
    - -

    This is why computer architects spend almost all of their effort designing memory subsystems that have a high statistical chance of executing in the lower levels of the memory abstraction stack. There is not a single chapter on computation theory in Hennessy and Patterson's Computer Architecture: A Quantitative Approach, for example. John L. Hennessy and David A. Patterson, Computer Architecture: A Quantitative Approach, 6th ed. (Cambridge: Morgan Kaufmann, 2017).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Chapter 1Fundamentals of Quantitative Design and Analysis
    Chapter 2Memory Hierarchy Design
    Chapter 3Instruction Level Parallelism and Its Exploitation
    Chapter 4Data Level Parallelism in Vector, SIMD, and GPU Architectures
    Chapter 5Thread Level Parallelism
    Chapter 6Warehouse Scale Computers
    Chapter 7Domain Specific Architectures
    Chapter 8The Future of Computing
    - - Address defined area, distance, extent, length, and size - -

    We defined a tape as having a single feature, that of a leftmost cell, along with a linear neighbor topology. When a tape is mounted it gains a second feature, that of the cell the head is on. The leftmost cell was fixed in place, while any other single cell on the tape can be featured as the cell the head is on. When we introduced areas, we picked up two new features, that of the leftmost cell of the area, and the rightmost cell of the area. Again, those features could coincide with the former features. We noted that the features partitioned a tape thus defining more areas, and more features. -

    - -

    - When cells were defined we noted that they were sets, and that these sets had identity and could be referred to. We needed that to be the case so as to build the tape topology using neighbor properties. Had the tape been singly linked, perhaps we could have used the cells to represent themselves in the properties, but when we doubly linked it, a given cell had to appear in two places, as the right neighbor of its left neighbor, and the left neighbor of its right neighbor, so we stipulated the sets as being identifiable. Initially we did not say how they would be identified. This is common in mathematics, but we soon cleared this up by formalizing the concept of a symbol. -

    - -

    - When discussing symbols we noted they could be natural numbers, and even went so far as to point out that addresses were symbols, though we had not yet defined them. They are familiar to anyone involved in computing, so again, it did not present a serious problem. Here we have now formalized them. -

    - -

    - So we now have two means for identifying a feature. One means is to state its address, and the other is to put a tape machine head on it. -

    - -

    As we noted in the section discussing area, an area has two distinguishing features, being that it has a leftmost cell, and a rightmost cell. That definition is topological. If we start with the leftmost cell of a tape, we are either already on the leftmost cell of a defined area, or we can step right to find it. At the point of finding it we know this leftmost cell is part of the area, then we are either already on the rightmost cell, or we can continue to step right on cells in the area until we find the rightmost cell in the area. The right neighbor of the rightmost cell in the area, if there is one, is excluded from the area. -

    - -

    With addresses we can now define an area with two addresses, two natural numbers, the address of the leftmost cell, and that of the rightmost cell. All natural numbers greater than or equal to the address of the leftmost cell, or less than or equal to the address of the rightmost cell, are addresses of cells that are in the area. This feels more satisfactory for most of us, as now we are talking about arithmetic rather than graph topology. Though should the topology of the tape be generalized, this could become limiting. It reminds me of Frege's admonition that perhaps math should be built on top of geometry. -

    - -

    The distance between two cells is the absolute difference in their addresses. When we talk about the distance between the leftmost cell of an area and the rightmost cell of an area, we call this number the area's extent.

    - -

    In an analogous manner to defining an address space for a tape, we can define an address space for an area. Accordingly, the leftmost cell of the area is assigned address zero, and the address increments cell by cell going to the right. A finite area will have a finite address space, with the address of the rightmost cell being the largest address in the address space. -

    - -

    It is interesting that the extent of an area will be the same, whether it is calculated from the address space of the tape, or the address space of the area. When it is computed from the address space of the area, the extent will be identical to the largest address in the address space. We will use the Greek symbol omega, ω, to symbolize an extent. We can give it a subscript with the name of an area if the correspondence is not already clear. I chose ω because ω is the rightmost letter included in the Greek alphabet. Thus it is the extent of the Greek alphabet. -

    - -

    If cells in an area are transacted, the cost of the area is the cost of a cell multiplied by the count of cells. Vincent Atanasoff probably found himself needing to know such a count when ordering capacitors. The count of cells in an area is also known as the area's length. We will use the Greek symbol ϡ, pronounced as sampi, to refer to the length. The length of an area, the count of its cells, will always be one greater than its extent, ϡ = ω + 1. This symbol makes sense here, as the Greek number system fell short of letters, so the symbol ϡ was tacked on to the end of the alphabet, but did not belong to the alphabet. -

    - -

    The count of cells in an area, the length of an area, and the cardinality of the address space for an area are all the same number, ϡ. The extent of an area, ω, is an address in an area's address space, whereas the cardinality of an area, ϡ, falls completely outside it. This has implications. Because extent is an address, extent and addresses can always use the same number representation. In contrast, there is no such guarantee for cardinality, ϡ. Take for example an area that contains 256 cells. The addresses run from zero to 255, and all can be represented with an 8 bit binary number. However, the number 256 does not fit. It is for this reason that it might make more sense to use extents than to use lengths. -

    - -

    It is considered by some to be profound that the cardinality of a bounded set of Natural Numbers is excluded from the set. If we generalize to an area that is open on the right, for the cardinality of the address space to fall outside the address space would mean that the cardinality of Natural Numbers falls outside the Natural Numbers. It seems peculiar that cardinality, which is a count, is found to fall outside the numbers we use for counting. Though at this point we are asking for an outer bounding value on an infinite set. -

    - -

    Is the cardinality of an open on the right area a Natural Number?

    - -

    So we find an interesting situation with the cardinality of an address space for an area that is open on the right. It goes like this.

    - -

    How cardinality is computed

    - -
      -
    1. We set Turing Machine P with its head on the leftmost cell of an area. We mount the initial tape, '·', on the A machine.
    2. -
    3. We step P and simultaneously run the A machine. Stepping stops when P reaches the rightmost cell of the area. At this point, the tape on the A machine holds the address space extent.
    4. -
    5. The A machine is run an additional time. The output on the tape is defined to be the cardinality of the address space, aka the cardinality.
    6. -
    - -

    Lemma 1, the A machine produces Natural Numbers

    - -

    This follows from its definition; it is literally the increment from the Natural Numbers Machine.

    - -

    Lemma 2, cardinality is a natural number

    - -

    Cardinality is produced by repeatedly calling the A machine, and the A machine produces Natural Numbers.

    - -

    Lemma 3, cardinality is not in the address space

    - -

    At the end of the second step in the procedure for producing the cardinality, the tape of the A machine held the extent of the address space. Then in step 3, A was called again, thus leaving a number one larger than the extent on its tape. The extent is the largest number in the address space, hence cardinality is larger than all numbers in the address space. Thus cardinality is not in the address space.

    - -

    Lemma 4, the address space of an open on the right area is identical to the Natural Numbers.

    - -

    Composing the A machine with an unterminated loop call, where each result is written to a tape with a terminator between entries, results in the same machine as the Natural Numbers Machine.

    - -

    The apparent contradiction.

    - -

    By Lemma 2, cardinality is a Natural Number. By Lemma 3 cardinality is not in the address space. By Lemma 4 the address space is identical to the Natural Numbers.

    - -

    Resolution

    - -

    The resolution lies in the computational reality of Step 2. For an area that is open on the right, the stepping of machine P never halts. Because Step 2 never terminates, Step 3 is never executed. The A machine never runs that final, additional time. Therefore, the cardinality of an open area is never actually produced by the machine. In the language of Computational Naturalism, Lemma 2 is false for an infinite area; the cardinality of an open on the right area is excluded from being a Natural Number because a Natural Number Machine cannot reach it in the first order.

    - -

    So then can we add a property to cardinality, such that a second order analysis could use this property to continue downstream analysis? In short we could say that cardinality has no first order value, but it has a second order one. This is analogous to inventing a new type of number, a complex number with a second component. I.e., there is no 'real' solution, but there is an 'imaginary' one. Or analogous to error algebra, where a number value is replaced with a rule on how to handle downstream operations when it is given as an input. -

    - -

    Such a value would be a new Turing Machine, one that composes a call to the never halting Natural Number machine followed by an increment operation. It cannot be run, but it perfectly explains the situation to an analyst. Perhaps we name this machine ℵ_0. -

    - -

    What if extent was used instead of cardinality?

    - -

    - Had extent been used instead of cardinality, we would lack the final increment step in the three step computing procedure. However, step 2 still cannot complete. Rather than a value, the result of the second order analysis would be a machine that produces ever larger Natural Numbers. We can call this machine ℵ_{−1}. -

    - -

    - Now here is an interesting result: -

    - - - ℵ_{0} − ℵ_{−1} = 1 - - -

    - Neither machine can be run. However we can compose the two machines, then simplify the composition. When we do so, the ever larger Natural Number machines annihilate each other, and the increment machine remains. The increment machine can be run, so we end up with an output value. -

    - -

    Size

    - -

    Consider the case of a partitioned tape. Then consider that we write a gasket, such that we have a higher level Turing Machine that considers each of the areas of the partition as a cell. So then, initially the Turing machine starts with its head on the leftmost area, stepping right steps to the right neighbor area etc. In this manner we abstract the concept of a cell to areas. A length then becomes a count of areas; however the size remains a count of the cells. Something similar is done in the C language, where the length of an array is a count of the elements in the array, but the size of the array is a count of bytes. A byte being an addressable unit in physical memory, and thus the underlying cell that everything is built up from.

    diff --git a/document/temp2.html b/document/temp2.html deleted file mode 100644 index f419aff..0000000 --- a/document/temp2.html +++ /dev/null @@ -1,457 +0,0 @@ - Area and partitions - -

    - We call a subset of contiguous cells from a tape an area of said tape. A finite area of at least three cells will have a left most cell in the area, a right most cell in the area, with one or more interstitial cells. A leftmost cell in an area might have a left neighbor property, but the cell indicated by that property is not in the area. Or it is possible that the leftmost cell of an area is also the leftmost cell of the tape, and thus it does not have a left neighbor property. Any cell on a single ended tape will have a right neighbor property, but for a a finite area the rightmost cell's right neighbor property will indicate a cell that is not in the area. It is possible for an area to be open on the right, and thus not be finite. - In this manner we distinguish between tape cell types, and area cell types. -

    - -

    A tape partition is a set of areas that completely span a tape. For any partition of a single ended Turing Machine tape, at least one of the areas will necessarily be infinite. An area can also be partitioned, which would lead to nested areas. -

    - -

    Head partition

    - -
      -
    1. The left side: a potentially empty finite set containing all of the cells to the left of the head cell.
    2. -
    3. Head: the head cell.
    4. -
    5. The right side: the infinite set extending rightward from the right neighbor of the head cell.
    6. -
    - -

    Leftmost/remaining partition

    - -
      -
    1. Leftmost: the leftmost cell.
    2. -
    3. Remaining: the infinite set including the right neighbor of the leftmost cell, and all cells further to the right.
    4. -
    - -

    Active area partition

    - -

    - A non empty tape, one with at least one cell holding an alphabet symbol, can be partitioned into the following areas: -

    - -
      -
    1. The left empty tail: this area is empty when the leftmost cell is not empty. Otherwise, it consists of the leftmost cell and the empty cells, if any, to the right of the leftmost cell, up to the first alphabet cell.
    2. - -
    3. Active area: a finite area for computational problems, containing the cells extending from the leftmost alphabet cell up to and including the rightmost alphabet cell. It is possible that the leftmost alphabet cell and the rightmost alphabet cell will be the same cell.
    4. - -
    5. The right empty tail: The infinite set extending from the right neighbor of the rightmost cell of the active area, extending rightward.
    6. -
    - -

    Area implied partition

    - -

    - Given any area on a tape, or nested within another area, there is implied the potential for two more areas. -

    - -
      -
    1. The left side: a potentially empty finite set containing all of the cells to the left of the given area.
    2. -
    3. The given area.
    4. -
    5. The right side: for a tape, the infinite set extending rightward from the rightmost of the given area. For a nested area, this could be empty or finite.
    6. -
    - - -

    The impossibility of recognizing an empty tape

    - -

    - Recognition is a process where a Turing Machine decides if a pattern is present on a tape solely by reading symbols found on the tape. No meta information, such as a message communicating something about the area being examined or the nature of the program that wrote the symbols, can be taken into account. -

    - -

    - The active area partition of a tape only works for tapes that have at least one alphabet cell. As soon as a machine does its first write of an alphabet symbol, it is known the tape has at least one alphabet symbol. However, what if a tape of unknown status, whether completely empty or containing an alphabet cell, is mounted on a tape machine, and it is desired that the machine recognize if the tape is empty or has an alphabet cell? This is the equivalent problem of looking for the leftmost cell of an active area. -

    - -

    - Recognizing that a tape is empty is not generally possible. Suppose it were attempted, and a machine started scanning the tape rightward from the leftmost cell; for every cell that is discovered to be empty, the machine would have to scan further rightward to check for an alphabet cell. If the tape is truly empty, the recognizer would never stop scanning, so no decision would be rendered. -

    - -

    The impossibility of recognizing the rightmost cell of the active area

    - -

    - In general, a Turing Machine cannot step across a tape reading cells to recognize the rightmost cell of the active area, or equivalently, the leftmost cell of the right empty tail. Suppose a recognizer attempted this by starting in the active area and stepping right, and the machine discovered an empty cell. The machine would not be able to distinguish between the case of said empty cell being embedded within the active area (meaning more alphabet cells lie further to the right), or the case where said cell is genuinely the leftmost cell of the right tail. To resolve the ambiguity, the machine would be obligated to continue stepping right. Yet, there would never come a time where finding another empty cell would not lead back to the exact same case ambiguity, so the machine would forever step right without returning a decision. -

    - -

    - It follows that if knowledge of the end of the active area is needed, this information must be encoded as a message. For example, a special symbol can be reserved in the alphabet specifically to serve as the end of active area marker. Each time a machine steps beyond the current end of active area marker and does a write, it writes the marker in the right neighbor cell, and goes back and erases the old mark. This method is related to communications theory and the science of signaling. Here, the active area marker is an out of band control signal. -

    - -

    - If a tape is written by an initializing tape machine, unmounted, and then mounted on a second analyzing tape machine, the analyzing tape machine is not starting with an empty tape. Similarly, a mathematician can, by decree, define an initial tape that is not empty. In these cases, the analyzing machine cannot use the signaling method described in the prior paragraph, as it was not in control of all the writes of alphabet symbols to the tape. The only solution to this problem is for the initializing machine and the analyzing machine to use a shared communication protocol for signaling the end of the active area. -

    - -

    - By definition, a computation must finish in a finite number of steps. It follows that the active area when a Turing Machine halts a computation will always be finite. Consequently, if a Turing Machine initially starts working with a tape that was computed by another Turing Machine, the length of the input will be finite. Still, that input will be in the active area, so the receiving Turing Machine will need to read control data left on the tape under a common communication protocol to be able to find the bounds of the input area. -

    - -

    - When an input tape is provided as a general mathematical object, either decreed by definition or perhaps abstracted from 'what a Turing Machine computation would produce in the limit of step count', then the input can be either finite or infinite. -

    - -

    Abstract areas

    - -

    The concept of area can be abstracted to include a set of cells that share a property.

    - -

    This might be a property of the values in the cells, or a property of the addresses of cells.

    - -

    An abstract area can be colored by a property detecting machine.

    - -

    Such a machine would start at the leftmost cell, check the value in that cell for the given property and mark it accordingly. It would then step right and repeat.

    - -

    For such a marker machine to be computational there will have to be a leftmost cell in the area, and upon finding a leftmost cell in the area, a rightmost cell will have to exist. Without both of these boundaries, a marker machine will never halt.

    - -

    Even if a marker machine does not halt, it still might be useful for analysis.

    - -

    Marker machines that color based only on the value found in each individual cell are context free.

    - -

    Abstract areas can also be defined based on functions of cell values that include context.

    - -

    When the cells in an abstract area are contiguous, we say that the area is compact.

    - -

    An example of an area that is excluded from being compact is that of the odd addressed cells.

    - -

    The odd and even addressed cells of a tape form two non overlapping abstract areas.

    - -

    Given a cell in either of these abstract areas, its direct physical neighbors on the tape will be found in the opposing area.

    - - -

    In band and out of band control

    - -

    - In band control occurs when control signals or structural metadata are mixed directly into the same channel and alphabet as the data payload. In band signaling leads to ambiguities between what is control and what is data. As we saw, there are cases a recognizer, i.e. merely examining the data, is not capable of resolving even the simplest of control questions. A conventional approach for resolving these ambiguities makes use of escape sequence schemes that grow in length as the levels of communication grow. This has always been an after thought, a sort of hack. -

    - -

    - In contrast, out of band control communicates structural information through a strictly separate channel or by utilizing symbols definitively excluded from the programmer visible data alphabet. The rightmost tape marker is an out of band mechanism because it utilizes an expanded hardware tape alphabet strictly reserved for machine management, guaranteeing it can never be conflated with the user's data. Modern architectures often do not have the luxury of inventing new symbols to serve as control rather than data. Another out of band signaling technique is to structure the data into channels; such structure is called formatting. We find formatting on hard drives, in frame based and packet based communication channels, and in data structures. -

    - - - Computational Analysis - -

    - In mathematics, analysis is the rigorous study of limits, continuity, rates of change, and bounds. It encompasses several specialized branches. Real analysis studies the behavior of real numbers, sequences, and continuous functions. Complex analysis extends these principles to functions of complex variables. Functional analysis examines vector spaces where the elements themselves are functions. Numerical analysis focuses on the design of algorithms to yield approximate solutions for continuous mathematical problems. Harmonic analysis studies the representation of functions or signals as the superposition of basic waves, such as Fourier series. Across all these branches, analysis provides a formal framework for evaluating mathematical objects. -

    - -

    - In computation theory, computational analysis is defined as the static evaluation of a formal system or machine definition to deduce its absolute boundaries and properties. This process remains entirely distinct from dynamically executing the machine to yield a computed result. -

    - -

    - This analytical perspective has been present from the very beginning of the field. Alan Turing's formulation of the halting problem relies explicitly on one machine examining another. To properly evaluate the limits of this analytical capacity, the examining machine must necessarily be given definitions of programs that loop infinitely. Consequently, the foundational proofs of computer science formally establish non computational programs as legitimate objects of analytical study. -

    - -

    - We call a program that examines another program so as to deduce properties of its results an analyzer. The program or machine definition being subjected to this evaluation is called the studied program or studied machine. -

    - -

    - Turing Machines that halt in a finite number of steps for any finite input within a stipulated domain are said to be computational over that domain. -

    - -

    - By definition, first order analysis is the running of programs, and it has its place. - Generally, when we want to know what output a computational machine will produce, the fastest route to this knowledge is to run the program. Most programs written to solve problems are most effectively run to solve those problems rather than analyzed to deduce what they will produce. -

    - -

    - Now suppose we quantify the inputs to a computational machine over a domain and want to know a property of the machine. Perhaps, say, that it always produces an even number. If the quantification is over a large set, then it might be faster to study the machine than it would be to run the machine on every input in the domain while checking its output. -

    - -

    - Further suppose that the quantification is over an infinite input space. Then the only option for answering a question about the properties of results from such a machine is to analyze it. This is second order analysis, also called simply analysis. -

    - -

    - Famously, we know that universally an analyzer cannot determine if a machine is computational. This knowledge was derived by reasoning about the properties of a hypothetically existing analyzer machine. This is a third order analysis activity. -

    - -

    - As an analyzer does not run the machine being studied, it is not required to be a machine that halts. Suppose we have a machine that produces an infinite sequence of digits to a tape without halting. A limit analyzer could examine that machine and, in some cases, determine if it has asymptotic behavior. For example, recognizing that appending a binary fractional sequence of 0.1111... indefinitely evaluates in the limit to 1.0. In this manner, the use of analyzers facilitates using computation theory for deriving higher order mathematics. -

    - - Computational Naturalism - -

    - Given that we have an architectural definition for a Turing Machine, and will modify this in a later chapter to define a realizable Turing Complete architecture, it is possible to invert the foundation of mathematics. Instead of mathematics preceding computation, we posit that given a Turing Machine exists, all of mathematics is an interpretation of what can be done with it. -

    - -

    - We begin by defining the tape cell as a location in a physical memory, which provides us with arrays of charge configurations. -

    - -

    - We then define the symbol in computational terms, as done in the prior section. This begins with memory addresses, represented as charge arrays, acting as primitive symbols, and extends to the symbol factory, copy operations, and instance comparison. -

    - -

    - Logic is then defined on top of relay switch logic, as Shannon and others have already done. A machine that requires all inputs to be the '1' symbol to produce a '1' symbol output is a conjunction machine, and so forth. -

    - -

    - On top of this we can define the Peano Machine, a counter, and then use that machine as the definition of Natural Numbers. -

    - -

    - Where Gödel reduced logic to natural numbers, we go the other direction to expand upon logic from natural numbers. -

    - -

    - An axiomatic proof is then a decider that is built up from subroutine calls to the axioms. We might then quantify over all possible compositions of our subroutines in analysis and ask if it is possible that a contradiction decider would return Y or N. -

    - -

    - Frege's set theory is then the analysis of a logic program against an enumeration of inputs to choose if a proposed symbol is in a set. Perhaps executing such a program is left to first order analysis, or perhaps execution is not practical, and evaluation is left to second order analysis. -

    - -

    - Russell's Paradox will then be expressed as a Turing Machine that can be analyzed in the second order, but cannot be analyzed in the first order. That is, the paradox exists merely in the first order as it will never halt when run. However, it is not a paradox in the second order. It is, of course, through second order analysis that we are able to describe why Russell's Set description does not resolve in the first order. -

    - -

    - With the language of Computational Naturalism it is possible to restate every statement ever made by any mathematician; we might say that the mere fact that a mathematician was able to state something qualifies its membership into Zermelo's S set. -

    - -

    - Given our knowledge that a universal halting problem analyzer that decides if a Turing Machine program halts does not exist, it is desirable to have rules that guide our writing only Turing Machine programs that are known to halt. This can be done through construction, as proposed by Russell, or through axioms of separation, mapping, and choice, as proposed by Zermelo and others. But then we know from the completeness and correctness theorems, that when such guiding rules are applied, there will exist Turing Machine programs that do halt, but whose definition cannot be constructed, nor surmised using the said axioms. -

    - -

    - This brings us back to the reference from the Zermelo discussion in the introduction. Specifically, the question posed is if our finding through second order analysis that Russell's paradoxical set formulation will not run in the first order and define a set, does this mean that we are merely using S to state that we are tossing out sets that cannot be defined? The answer is it is not quite this simple. Had Frege said, 'we merely dismiss such sets', we would not have the formalization for the second order analysis. Throwing out Russell's paradox simply because we ran it and it never halted is not a practical approach. Instead, we omit it specifically from S because analyzing R reveals that it fails to define a first order halting machine, and S, by definition, only holds first order halting machines. Zermelo's language is precise and formal. However, it is this bothersome nuance, now articulated here, which caused us to scratch our heads when reading Zermelo the first time. -

    - -

    - Russell's set formulation, R, can be analyzed to determine that it would not halt if it were run. We still keep it as a second order object, and have even given it a name, R. However, this begs the question, are there machines that cannot even be analyzed in the second order to ascertain if they would return a result in first order analysis, i.e., when they are run? If Gödel has a say here, a person would wager that such machines exist. But then, is there an option for analysis in the third order? Is Turing's halting proof a third order analysis as it reasons about running the second order analyzer? Or is it merely a recursive application of second order analysis? -

    - - Addresses - -

    We can define a Turing Machine that is identical to the recursive definition of Natural Numbers as given by Peano. Giuseppe Peano, Arithmetices principia, nova methodo exposita (Turin: Fratres Bocca, 1889).

    - -

    If we were to run the Natural Numbers Machine and watch as it writes to the tape, we would watch as the Natural Numbers are printed one after another, '·s·ss·sss·ssss· ...'. Here we are using the middle dot as a terminator symbol. As the Natural Numbers Machine never halts, we cannot use the Natural Number Machine to initialize a tape, but we can analyze the machine. When the leftmost cell holds a terminator, we say it has the value 'zero'. We call '·s·' the number 'one'. Each set of 's' adjacent symbols surrounded by the terminators, and zero, is said to be a Natural Number. -

    - -

    To say that one Natural Number A is smaller than Natural Number B is to say that A would occur on the Natural Number Machine tape to the left of B, if the machine were to be run. Similarly, if B were said to be greater than A, that would mean B would occur further to the right. To increment a Natural Number is to find its right neighbor. To decrement a number is to find its left neighbor. -

    - -

    - Now suppose we have a single Natural Number on a tape, say 'sss·', then we can define an Increment machine that, when initialized with a tape, writes an additional 's' and a new terminator. For example, when initialized with 'sss·' and then run, it produces 'ssss·'. In an analogous manner, we can define a Decrement machine. -

    - -

    As such, we can assign a Natural Number to each member of the tape sequence through the following procedure. Given a machine, say P, we lock to it a second Address Machine, say A_P. When P's tape is first mounted, at the same time A_P is mounted with a tape that has only a terminator symbol, '·'. When P steps right, A_P writes an 's', steps right, and writes the terminator. For each step left of P, the machine A_P steps left and writes the terminator symbol. -

    - -

    - The Natural Number found on A_P is then called the address of the cell the head is on for machine P. As each increment and decrement of the address is a constant time operation, keeping the address of the cell the head is on is a computationally inconsequential action. -

    - -

    - An address space is the set of addresses that would be placed into correspondence to cells if we were to step across all those cells while assigning an address to each cell the head is on. Address space is a second order concept. It is because assigning an address to a cell can be a second order concept that we often take it for granted. -

    - -

    - It is interesting to contemplate if the Natural Number at the basis of the Address Machine instead used Arabic Representation. In that case, an increment or decrement would be a linear time operation due to the carry. Consider a constant time operation on the base machine P, say it steps to the right 5280 cells and writes a mile marker. It would still be a constant time operation no matter the time taken for the address increment. So then consider an operation that is linear time, say a n, where n is the length of the input. Say, for example, it stepped n cells to the right and wrote a marker. If the increment time grows linearly with each step, then what was time n without addresses becomes time n^2 with them, or polynomial time. So indeed using Arabic Representation instead of unary for the address would be computationally consequential for all but constant time machines, if addresses were kept track of in the first order. -

    - -

    - As of the time of this writing, real machines keep the illusion of constant time Arabic Representation for addresses due to fixed width clocked operations. When the width is fixed, and that fixed number is small enough that interconnect delay does not dominate over computation element delay, adder time tends to be logarithmic. The same is true of the related problem of address decoding. Thus an add can be performed within 'one clock tick'. Native address arithmetic operations on modern machines are always done in this manner. Perhaps there exists a special problem, such as pointer swizzling, where address arithmetic would come under software control. -

    - -

    - The model used here to define an address is analogous to keeping a pointer into memory, and then using that pointer value as the address. Each step then increments or decrements the pointer. On a real machine, to access memory requires sending that pointer on a trip through a virtual memory system perhaps, and then through an address decoder. In the Turing Machine model, the head directly indicates a location, so it is more akin to the output of the memory decoder, though unlike the output of a memory decoder, it is stateful, i.e., a persistent value that can be moved incrementally. The analogy with the Turing Machine model holds due to the fiction of a constant decode time, as described in the prior paragraph. -

    - -

    - At a higher level, that virtual memory system level, the memory architecture begins to look more like that of a Turing Machine. The translation lookaside buffer provides stateful location context, and the neighbor relationship between pages might be taken into account for performance reasons. However, once a program starts performing at virtual memory page fetch times instead of local system memory access times, we say that it is page thrashing and know it will become too slow to wait on, no matter its computation complexity class. -

    - -

    - Let us put this into perspective. Suppose in ancient Roman times that a clock tick for a computer was scaled to be one day long. Under this scale, a single nanosecond of real world execution time equates to three days. Suppose a program initiated a read request for a location in memory on the Ides of March, the date when Caesar was assassinated on -0043-03-15. The following table provides the historical date that the variable value would finally be loaded into the processor, depending on the memory tier being accessed: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Memory TierReal World LatencyScaled DelayScaled Arrival EraHistorical Context
    L1 Cache Hit1 ns3 days-0043-03-18Three days after the assassination.
    DRAM (Main memory)100 ns300 days-0042-01-09Nearly a year later, during the Liberators' civil war.
    NVMe SSD Page Swap15 µs45,000 days0080123 years later, exactly as the Colosseum is completed in Rome.
    SATA SSD Page Swap100 µs300,000 days0778821 years later, during the reign of Charlemagne and the Frankish Empire.
    Magnetic HDD Page Swap10 ms30,000,000 days82092Tens of thousands of years in the future, long after current human civilizations are dust.
    - -

    This is why computer architects spend almost all of their effort designing computers that execute as many instructions per cycle as possible within a memory subsystems that has a high statistical chance of executing in the lower levels of the memory abstraction stack. As a demonstration of this, there is not a single chapter on computation theory in Hennessy and Patterson's Computer Architecture: A Quantitative Approach. John L. Hennessy and David A. Patterson, Computer Architecture: A Quantitative Approach, 6th ed. (Cambridge: Morgan Kaufmann, 2017).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Chapter 1Fundamentals of Quantitative Design and Analysis
    Chapter 2Memory Hierarchy Design
    Chapter 3Instruction-Level Parallelism and Its Exploitation
    Chapter 4Data-Level Parallelism in Vector, SIMD, and GPU Architectures
    Chapter 5Thread-Level Parallelism
    Chapter 6Warehouse-Scale Computers
    Chapter 7Domain-Specific Architectures
    Chapter 8The Future of Computing
    - - Metrics - -

    Address defined area

    - -

    We defined a tape as having a single feature, that of a leftmost cell, along with a linear neighbor topology. When a tape is mounted it gains a second feature, that of the cell the head is on. The leftmost cell was fixed in place, while any other single cell on the tape can be featured as the cell the head is on. When we introduced areas, we picked up two new features, that of the leftmost cell of the area, and the rightmost cell of the area. Again, those features could coincide with the former features. We noted that the features partitioned a tape thus defining more areas, and more features. -

    - -

    - When cells were defined we noted that they were sets, and that these sets had identity and could be referred to. We needed that to be the case so as to build the tape topology using neighbor properties. Had the tape been singly linked, perhaps we could have used the cells to represent themselves in the properties, but when we doubly linked it, a given cell had to appear in two places, as the right neighbor of its left neighbor, and the left neighbor of its right neighbor, so we stipulated the sets as being identifiable. Initially we did not say how they would be identified. This is common in mathematics, but we soon cleared this up by formalizing the concept of a symbol. -

    - -

    - When discussing symbols we noted they could be natural numbers, and even went so far as to point out that addresses were symbols, though we had not yet defined them. They are familiar to anyone involved in computing, so again, it did not present a serious problem. Here we have now formalized them. -

    - -

    - So we now have two means for identifying a feature. One means is to state its address, and the other is to put a tape machine head on it. -

    - -

    As we noted in the section discussing area, an area has two distinguishing features, being that it has a leftmost cell, and a rightmost cell. That definition is topological. If we start with the leftmost cell of a tape, we are either already on the leftmost cell of a defined area, or we can step right to find it. At the point of finding it we know this leftmost cell is part of the area, then we are either already on the rightmost cell, or we can continue to step right on cells in the area until we find the rightmost cell in the area. The right neighbor of the rightmost cell in the area, and all cells to that right of that, are excluded from the area. -

    - -

    With addresses we can now define an area with two addresses, two natural numbers, the address of the leftmost cell, and that of the rightmost cell. All natural numbers greater than or equal to the address of the leftmost cell, or less than or equal to the address of the rightmost cell, are addresses of cells that are in the area. This feels more satisfactory for most of us, as now we are talking about arithmetic rather than graph topology. Though should the topology of the tape be generalized, this could become limiting. It reminds me of Frege's admonition that perhaps math should be built on top of geometry. -

    - -

    Distance and Extent

    - -

    The distance between two cells is the absolute difference in their addresses. When we talk about the distance between the leftmost cell of an area and the rightmost cell of an area, we call this number the area's extent.

    - -

    In an analogous manner to defining an address space for a tape, we can define an address space for an area. Accordingly, the leftmost cell of the area is assigned address zero, and the address increments cell by cell going to the right. A finite area will have a finite address space, with the address of the rightmost cell being the largest address in the address space. -

    - -

    It is interesting that the extent of an area will be the same, whether it is calculated from the address space of the tape, or the address space of the area. When it is computed from the address space of the area, the extent will be identical to the largest address in the address space. We will use the Greek symbol omega, \\omega, to symbolize an extent. We can give it a subscript with the name of an area if the correspondence is not already clear. I chose \\omega makes sense here because \\omega is an inclusive bound, i.e. it is the rightmost letter included in the Greek alphabet. Thus it is the extent of the Greek alphabet. -

    - -

    Length

    - -

    If cells in an area are transacted, the cost of the area is the cost of a cell multiplied by the count of cells. Vincent Atanasoff probably found himself needing to know such a count when ordering capacitors. The count of cells in an area is also known as the area's length. We will use the Greek symbol Ï¡, pronounced as sampi, to refer to the length. The length of an area, the count of its cells, will always be one greater than its extent, Ï¡ = \\omega + 1. This symbol makes sense here, as the Greek number system fell short of letters, so the symbol Ï¡ was tacked on to the end of the alphabet, but did not belong to the alphabet. -

    - -

    The count of cells in an area, the length of an area, and the cardinality of the address space for an area are all the same number, Ï¡. The extent of an area, \\omega, is an address in an area's address space, whereas the cardinality of an area, Ï¡, falls completely outside it. This has implications. Because extent is an address, extent and addresses can always use the same number representation. In contrast, there is no such guarantee for cardinality, Ï¡. Take for example an area that contains 256 cells. The addresses run from zero to 255, and all can be represented with an 8 bit binary number. However, the number 256 does not fit. It is for this reason that code will have fewer end case problems when expressing the size of objects with extents, rather than with lengths. -

    - -

    Is the cardinality of an open on the right area a Natural Number?

    - -

    So we find an interesting situation with the cardinality of an address space for an area that is open on the right. It goes like this.

    - -

    How cardinality is computed

    - -
      -
    1. We set Turing Machine P with its head on the leftmost cell of an area. We mount the initial tape, '·', on the A machine.
    2. -
    3. We step P and simultaneously run the A machine. Stepping stops when P reaches the rightmost cell of the area. At this point, the tape on the A machine holds the address space extent.
    4. -
    5. The A machine is run an additional time. The output on the tape is defined to be the cardinality of the address space, aka the cardinality.
    6. -
    - -

    Lemma 1, the A machine produces Natural Numbers

    - -

    This follows from its definition; it is literally the increment from the Natural Numbers Machine.

    - -

    Lemma 2, cardinality is a natural number

    - -

    Cardinality is produced by repeatedly calling the A machine, and the A machine produces Natural Numbers.

    - -

    Lemma 3, cardinality is not in the address space

    - -

    At the end of the second step in the procedure for producing the cardinality, the tape of the A machine held the extent of the address space. Then in step 3, A was called again, thus leaving a number one larger than the extent on its tape. The extent is the largest number in the address space, hence cardinality is larger than all numbers in the address space. Thus cardinality is not in the address space.

    - -

    Lemma 4, the address space of an open on the right area is identical to the Natural Numbers.

    - -

    Composing the A machine with an unterminated loop call, where each result is written to a tape with a terminator between entries, results in the same machine as the Natural Numbers Machine.

    - -

    The apparent contradiction.

    - -

    By Lemma 2, cardinality is a Natural Number. By Lemma 3 cardinality is not in the address space. By Lemma 4 the address space is identical to the Natural Numbers.

    - -

    Resolution

    - -

    The resolution lies in the computational reality of Step 2. For an area that is open on the right, the stepping of machine P never halts. Because Step 2 never terminates, Step 3 is never executed. The A machine never runs that final, additional time. Therefore, the cardinality of an open area is never actually produced by the machine. In the language of Computational Naturalism, Lemma 2 is false for an infinite area; the cardinality of an open on the right area is excluded from being a Natural Number because a Natural Number Machine cannot reach it in the first order.

    - -

    So then can we add a property to cardinality, such that a second order analysis could use this property to continue downstream analysis? In short we could say that cardinality has no first order value, but it has a second order one. This is analogous to inventing a new type of number, a complex number with a second component. I.e., there is no 'real' solution, but there is an 'imaginary' one. Or analogous to error algebra, where a number value is replaced with a rule on how to handle downstream operations when it is given as an input. -

    - -

    Such a value would be a new Turing Machine, one that composes a call to the never halting Natural Number machine followed by an increment operation. It cannot be run, but it perfectly explains the situation to an analyst. Perhaps we name this machine \\aleph_0. -

    - -

    What if extent was used instead of cardinality?

    - -

    - Had extent been used instead of cardinality, we would lack the final increment step in the three step computing procedure. However, step 2 still cannot complete. Rather than a value, the result of the second order analysis would be a machine that produces ever larger Natural Numbers. We can call this machine \\aleph_{-1}. -

    - -

    - Now here is an interesting result: -

    - - - \\aleph_{0} - \\aleph_{-1} = 1 - - -

    - Neither machine can be run. However we can compose the two machines, then simplify the composition. When we do so, the ever larger Natural Number machines annihilate each other, and the increment machine remains. The increment machine can be run, so we end up with an output value. -

    - - -

    Size

    - -

    Consider the case of a partitioned tape. Then consider that we write a gasket, such that we have a higher level Turing Machine that considers each of the areas of the partition as a cell. So then, initially the Turing machine starts with its head on the leftmost area, stepping right steps to the right neighbor area etc. In this manner we abstract the concept of a cell to areas. A length then becomes a count of areas; however the size remains a count of the cells. Something similar is done in the C language, where the length of an array is a count of the elements in the array, but the size of the array is a count of bytes. A byte being an addressable unit in physical memory, and thus the underlying cell that everything is built up from.

    diff --git a/document/temp3.html b/document/temp3.html deleted file mode 100644 index bf2d55f..0000000 --- a/document/temp3.html +++ /dev/null @@ -1,257 +0,0 @@ - - -Area and partitioning - -

    - We call a subset of contiguous cells from a tape an area. An area with a single cell is called a singleton, one with two cells is called a pair. An area has a leftmost cell and a rightmost cell; for a singleton area, those will both be the same cell. Because we are currently evaluating the standard open ended Turing Machine tape, an area sitting on the left end of the tape has no left neighbor cell. If the area is open on the right, it has no right neighbor cell. Otherwise, a finite area has a left neighbor cell and a right neighbor cell that are not in the area. -

    - -

    A tape partition is a set of areas that completely span a tape. For any partition of a single ended Turing Machine tape, at least one of the areas will necessarily be infinite. -

    - -

    Head partition

    - -
      -
    1. The left side: if the head is on the leftmost cell, this set does not exist. Otherwise, it is a finite set containing all of the cells to the left of the head cell.
    2. -
    3. Head: the head cell.
    4. -
    5. The right side: the infinite set extending rightward from the right neighbor of the head cell.
    6. -
    - -

    Leftmost/remaining partition

    - -
      -
    1. Leftmost: the leftmost cell.
    2. -
    3. Remaining: the infinite set including the right neighbor of the leftmost cell, and all cells further to the right.
    4. -
    - -

    Active area partition

    - -

    - A nonempty tape, one with at least one cell holding an alphabet symbol, can be partitioned into the following areas: -

    - -
      -
    1. The left empty tail: if the leftmost cell of the tape is an alphabet cell, this area does not exist. Otherwise, it consists of the leftmost cell and the empty cells, if any, to the right of the leftmost cell, up to the first alphabet cell.
    2. - -
    3. Active area: a finite area for computational problems, containing the cells extending from the leftmost alphabet cell up to and including the rightmost alphabet cell. It is possible that the leftmost alphabet cell and the rightmost alphabet cell will be the exact same cell.
    4. - -
    5. The right empty tail: the infinite set extending from the right neighbor of the rightmost cell of the active area, extending rightward.
    6. -
    - -

    Area implied partition

    - -

    - Given any one area on a tape, a three part partition is implied. -

    - -
      -
    1. The left side: if the given area includes the leftmost cell of the tape, this set does not exist. Otherwise, it is a finite set containing all of the cells to the left of the given area.
    2. -
    3. The given area.
    4. -
    5. The right side: the infinite set extending rightward from the rightmost cell of the given area.
    6. -
    - -

    The impossibility of recognizing an empty tape

    - -

    - Recognition is a process where a Turing Machine decides if a pattern is present on a tape solely by reading symbols found on the tape. No meta information, such as a message communicating something about the area being examined or the nature of the program that wrote the symbols, can be taken into account. -

    - -

    - The active area partition of a tape only works for tapes that have at least one alphabet cell. As soon as a machine does its first write of an alphabet symbol, it is known the tape has at least one alphabet symbol. However, what if a tape of unknown status, whether completely empty or containing an alphabet cell, is mounted on a tape machine, and it is desired that the machine recognize if the tape is empty or has an alphabet cell? This is the equivalent problem of looking for the leftmost cell of an active area. -

    - -

    - Recognizing that a tape is empty is generally impossible. Suppose it were attempted, and a machine started scanning the tape rightward from the leftmost cell; for every cell that is discovered to be empty, the machine would have to scan further rightward to check for an alphabet cell. If the tape is truly empty, the recognizer would never stop scanning, so no decision would ever be rendered. -

    - -

    The impossibility of recognizing the rightmost cell of the active area

    - -

    - In general, a Turing Machine cannot step across a tape reading cells to recognize the rightmost cell of the active area, or equivalently, the leftmost cell of the right empty tail. Suppose a recognizer attempted this by starting in the active area and stepping right, and the machine discovered an empty cell. The machine would be unable to distinguish between the case of said empty cell being embedded within the active area (meaning more alphabet cells lie further to the right), or the case where said cell is genuinely the leftmost cell of the right tail. To resolve the ambiguity, the machine would be obligated to continue stepping right. Yet, there would never come a time where finding another empty cell would avoid leading back to the exact same case ambiguity, so the machine would forever step right without returning a decision. -

    - -

    - It follows that if knowledge of the end of the active area is needed, this information must be encoded as a message. For example, a special symbol can be reserved in the alphabet specifically to serve as the end of active area marker. Each time a machine steps beyond the current end of active area marker and does a write, it writes the marker in the right neighbor cell, and goes back and erases the old mark. This method is related to communications theory and the science of signaling. Here, the active area marker is an out of band control signal. -

    - -

    - If a tape is written by an initializing tape machine, unmounted, and then mounted on a second analyzing tape machine, the analyzing tape machine is starting with a populated tape. Similarly, a mathematician can, by decree, define an initial tape that holds predefined alphabet symbols. In such a scenario, the initializing machine and the analyzing machine must use a shared communication protocol for signaling the end of the active area. They can not operate independently or the analyzing machine would not be able to find the end of the active area. This shared protocol then represents information held by a mediator, said mediator could be used at a higher level to write the control for the two machines, or it could be consulted when the two machines are run. Hence, the mediator is either an author, or a service provide, or possibly both. -

    - -

    - By definition, a computation must finish in a finite number of steps. It follows that the active area when a Turing Machine halts a computation will always be finite. Consequently, if a Turing Machine initially starts working with a tape that was computed by another Turing Machine, the length of the input will be finite. Still, that input will be in the active area, so the receiving Turing Machine will need to read control data left on the tape under a common communication protocol to be able to find the bounds of the input area. -

    - -

    - When an input tape is provided as a general mathematical object, either decreed by definition or perhaps abstracted from 'what a Turing Machine computation would produce in the limit of step count', then the input can be either finite or infinite. -

    - -

    In band and out of band control

    - -

    - Because of the impossibility of recognizing certain tape features, when a tape is written by one Turing Machine, then used by another, there must be some sort of system for messaging control. There are two approaches for mixing data and control together: one is in band signaling, while the other is out of band signaling. -

    - -

    - In band control occurs when control signals or structural metadata are mixed directly into the same channel and alphabet as the data payload. In band signaling leads to ambiguities between what is control and what is data. As we saw, there are cases where a recognizer, i.e., merely examining the data, is completely incapable of resolving even the simplest of control questions. A conventional approach for resolving these ambiguities makes use of escape sequence schemes that grow in length as the levels of communication grow. This has always been an afterthought, a sort of hack. -

    - -

    - In contrast, out of band control communicates structural information through a strictly separate channel or by utilizing symbols definitively excluded from the programmer visible data alphabet. The rightmost tape marker is an out of band mechanism because it utilizes an expanded hardware tape alphabet strictly reserved for machine management, guaranteeing it can never be conflated with the user's data. Modern architectures often lack the luxury of inventing new symbols to serve as control rather than data. Another out of band signaling technique is to structure the data into channels; such structure is called formatting. We find formatting on hard drives, in frame based and packet based communication channels, and in data structures. -

    - -

    Virtual cells

    - -

    A given finite area that is not sitting on the end of the tape will have a left neighbor area and right neighbor area that are not in the area. If the given area is sitting on the end of the tape there will be no left neighbor area. If the area is open on the right, there will be no right neighbor area.

    - -

    Now imagine we define a Turing Machine such that when it steps right, it steps to the right neighbor area, and when it steps left, if there is a left area, it steps to that, otherwise it returns a left of leftmost symbol. The read instruction reads all of the cells in the area, and similarly the write instruction writes them all. Then for this machine the areas are virtual tape cells. -

    - -

    An example of this from conventional computing is where memory is accessed in units of bytes, but a program works with units of words.

    - -

    Virtual tape

    - -

    As established, the Turing Machine head transport returns a distinct left of leftmost symbol when stepping left off the end of the tape. The programmed controller, the statement machine, then uses an arc defined specifically for this symbol. It is a distinct symbol that can not be written to the tape. -

    - -

    Now suppose defining a Turing Machine that initially has the head on the leftmost cell of a specific area. When step left is called, the tape transport immediately returns the left of leftmost symbol, independent of whether the area is actually at the physical left end of the tape or not. -

    - -

    Suppose further that this area is finite. If the machine attempts to step right from the rightmost cell of this finite area, the tape transport returns, in analogy, a right of rightmost symbol. Such a machine defines a virtual tape over an area. -

    - -

    Partitions on a finite virtual tape

    - -

    - When a Turing Machine operates on a finite virtual tape, the structural logic of the partitions established earlier must be updated to reflect the absolute rightward boundary. -

    - -
      -
    1. For the Head partition and Area implied partition, the right side is no longer infinite. It is a finite set containing all cells extending from the right neighbor of the head (or area) up to the absolute rightmost cell of the virtual tape. If the head (or area) includes the rightmost cell of the virtual tape, the right side set does not exist.
    2. -
    3. For the Leftmost/remaining partition, the remaining area is now a finite set terminating at the rightmost cell of the virtual tape.
    4. -
    5. For the Active area partition, the right empty tail is similarly a finite set extending to the rightmost boundary of the virtual tape. If the rightmost alphabet cell occupies the rightmost cell of the virtual tape, the right empty tail does not exist.
    6. -
    --- - Area and partitioning - -

    - We call a subset of contiguous cells from a tape an area. An area with a single cell is called a singleton, one with two cells is called a pair. An area has a leftmost cell and a rightmost cell, for a singleton area, those will both be the same cell. A finite area, that is not sitting on the end of the tape, will have a left neighbor cell and right neighbor cell that are not in the area. If the area is sitting on the end of the tape there will be no left neighbor cell. If the area is open on the right, there will be no right neighbor cell. -

    - -

    A tape partition is a set of areas that completely span a tape. For any partition of a single ended Turing Machine tape, at least one of the areas will necessarily be infinite. An area can also be partitioned, which leads to nested areas. -

    - -

    Head partition

    - -
      -
    1. The left side: a potentially empty finite set containing all of the cells to the left of the head cell.
    2. -
    3. Head: the head cell.
    4. -
    5. The right side: the infinite set extending rightward from the right neighbor of the head cell.
    6. -
    - -

    Leftmost/remaining partition

    - -
      -
    1. Leftmost: the leftmost cell.
    2. -
    3. Remaining: the infinite set including the right neighbor of the leftmost cell, and all cells further to the right.
    4. -
    - -

    Active area partition

    - -

    - A nonempty tape, one with at least one cell holding an alphabet symbol, can be partitioned into the following areas: -

    - -
      -
    1. The left empty tail: this area is empty when the leftmost cell is nonempty. Otherwise, it consists of the leftmost cell and the empty cells, if any, to the right of the leftmost cell, up to the first alphabet cell.
    2. - -
    3. Active area: a finite area for computational problems, containing the cells extending from the leftmost alphabet cell up to and including the rightmost alphabet cell. It is possible that the leftmost alphabet cell and the rightmost alphabet cell will be the exact same cell.
    4. - -
    5. The right empty tail: the infinite set extending from the right neighbor of the rightmost cell of the active area, extending rightward.
    6. -
    - -

    Area implied partition

    - -

    - Given any one given area on a tape a three part partition is implied. -

    - -
      -
    1. The left side: a potentially empty finite set containing all of the cells to the left of the given area.
    2. -
    3. The given area.
    4. -
    5. The right side: for a tape, the infinite set extending rightward from the rightmost cell of the given area.
    6. -
    - -

    Similarly for a given nested area within a containing area:

    - -
      -
    1. The left side: a potentially empty finite set containing all of the cells to the left of the given area's leftmost cell, to the leftmost cell of the containing area.
    2. -
    3. The given area.
    4. -
    5. The right side: for a finite containing area, this is a potentially empty finite set containing all of the cells to the right of the given area's rightmost cell. For a finite nested area inside of an open on the right containing area, this consists of all the cells to the right of the rightmost cell in the nested area. If both the nsted area and the containing area are open on the right, there is no right tail.
    6. -
    - - -

    The impossibility of recognizing an empty tape

    - -

    - Recognition is a process where a Turing Machine decides if a pattern is present on a tape solely by reading symbols found on the tape. No meta information, such as a message communicating something about the area being examined or the nature of the program that wrote the symbols, can be taken into account. -

    - -

    - The active area partition of a tape only works for tapes that have at least one alphabet cell. As soon as a machine does its first write of an alphabet symbol, it is known the tape has at least one alphabet symbol. However, what if a tape of unknown status, whether completely empty or containing an alphabet cell, is mounted on a tape machine, and it is desired that the machine recognize if the tape is empty or has an alphabet cell? This is the equivalent problem of looking for the leftmost cell of an active area. -

    - -

    - Recognizing that a tape is empty is generally impossible. Suppose it were attempted, and a machine started scanning the tape rightward from the leftmost cell; for every cell that is discovered to be empty, the machine would have to scan further rightward to check for an alphabet cell. If the tape is truly empty, the recognizer would never stop scanning, so no decision would ever be rendered. -

    - -

    The impossibility of recognizing the rightmost cell of the active area

    - -

    - In general, a Turing Machine cannot step across a tape reading cells to recognize the rightmost cell of the active area, or equivalently, the leftmost cell of the right empty tail. Suppose a recognizer attempted this by starting in the active area and stepping right, and the machine discovered an empty cell. The machine would be unable to distinguish between the case of said empty cell being embedded within the active area (meaning more alphabet cells lie further to the right), or the case where said cell is genuinely the leftmost cell of the right tail. To resolve the ambiguity, the machine would be obligated to continue stepping right. Yet, there would never come a time where finding another empty cell would avoid leading back to the exact same case ambiguity, so the machine would forever step right without returning a decision. -

    - -

    - It follows that if knowledge of the end of the active area is needed, this information must be encoded as a message. For example, a special symbol can be reserved in the alphabet specifically to serve as the end of active area marker. Each time a machine steps beyond the current end of active area marker and does a write, it writes the marker in the right neighbor cell, and goes back and erases the old mark. This method is related to communications theory and the science of signaling. Here, the active area marker is an out of band control signal. -

    - -

    - If a tape is written by an initializing tape machine, unmounted, and then mounted on a second analyzing tape machine, the analyzing tape machine is starting with a populated tape. Similarly, a mathematician can, by decree, define an initial tape that holds predefined alphabet symbols. In such a scenario, the initializing machine and the analyzing machine must use a shared communication protocol for signaling the end of the active area. They can not operate independently or the analyzing machine would not be able to find the end of the active area. This shared protocol then represents information held by a mediator, said mediator could be used at a higher level to write the control for the two machines, or it could be consulted when the two machines are run. Hence, the mediator is either an author, or a service provide, or possibly both. -

    - -

    - By definition, a computation must finish in a finite number of steps. It follows that the active area when a Turing Machine halts a computation will always be finite. Consequently, if a Turing Machine initially starts working with a tape that was computed by another Turing Machine, the length of the input will be finite. Still, that input will be in the active area, so the receiving Turing Machine will need to read control data left on the tape under a common communication protocol to be able to find the bounds of the input area. -

    - -

    - When an input tape is provided as a general mathematical object, either decreed by definition or perhaps abstracted from 'what a Turing Machine computation would produce in the limit of step count', then the input can be either finite or infinite. -

    - -

    In band and out of band control

    - -

    - Because of the impossibility of recognizing certain tape features, when a tape is written by one Turing Machine, then used by another, there must be some sort of system for messaging control. There are two approaches for mixing data and control together: one is in band signaling, while the other is out of band signaling. -

    - -

    - In band control occurs when control signals or structural metadata are mixed directly into the same channel and alphabet as the data payload. In band signaling leads to ambiguities between what is control and what is data. As we saw, there are cases where a recognizer, i.e., merely examining the data, is completely incapable of resolving even the simplest of control questions. A conventional approach for resolving these ambiguities makes use of escape sequence schemes that grow in length as the levels of communication grow. This has always been an afterthought, a sort of hack. -

    - -

    - In contrast, out of band control communicates structural information through a strictly separate channel or by utilizing symbols definitively excluded from the programmer visible data alphabet. The rightmost tape marker is an out of band mechanism because it utilizes an expanded hardware tape alphabet strictly reserved for machine management, guaranteeing it can never be conflated with the user's data. Modern architectures often lack the luxury of inventing new symbols to serve as control rather than data. Another out of band signaling technique is to structure the data into channels; such structure is called formatting. We find formatting on hard drives, in frame based and packet based communication channels, and in data structures. -

    - -

    Virtual cells

    - -

    A given finite area, that is not sitting on the end of the tape, will have a left neighbor area and right neighbor area that are not in the area. If the given area is sitting on the end of the tape there will be no left neighbor area. If the area is open on the right, there will be no right neighbor area

    . - -

    Now imagine we right a Turing Machine, such that when it steps right, it steps to the right neighbor area, and when it steps left, if there is a left area, steps to that, otherwise gives a left of leftmost error. The read instruction reads all of the cells in the area, and similarly the write instruction writes them all. Then for this machine the areas are virtual tape cells. -

    - -

    An example of this from conventional computing is where memory is accessed in units of bytes, but a program works with units of words.

    - -

    Virtual tape

    - -

    Now suppose defining a Turing Machine that initially has the head on the leftmost cell of an area, and when step left is called, it immediately throws the left of leftmost error, independent of whether the area is at the left end of the tape or not. Suppose further, that if the area is finite, and said machine attempts to step right from the rightmost cell of the tape, that it instead throws the right of rightmost error. Such a machine defines a virtual tape over an area. -

    - -- 2.20.1