From d1b5aae1f3864b08c79f6ec9cf8ea09a64cfe55e Mon Sep 17 00:00:00 2001
From: Thomas Walker Lynch
Date: Fri, 28 Aug 2026 07:27:00 +0000
Subject: [PATCH] cleaner counter handling
---
document/book/TM-2026.html | 2437 ++++++++++++++++++++++--------------
1 file changed, 1516 insertions(+), 921 deletions(-)
diff --git a/document/book/TM-2026.html b/document/book/TM-2026.html
index 7c9c20e..e01b3a9 100644
--- a/document/book/TM-2026.html
+++ b/document/book/TM-2026.html
@@ -19,7 +19,7 @@
Carried into this volume and already placed:
- Unsigned integer representation, TTCA 204, now chapter 20, Peano Number.
+ Unsigned integer representation, TTCA 204, now chapter 20, Counting Number.
Orders of analysis, TTCA 19, now section 9.1.
Addresses and cells, TTCA 21, now chapters 18 and 19.
Conventional Turing Machine variations, TTCA 37, now chapter 10.
@@ -45,24 +45,25 @@
-
After years of challenging Plato over the Realm of Forms, the debate ended when Plato passed away. Aristotle was not chosen to take his place to head the Academy. The chair went to Platoâs nephew Speusippus, a name few people are familiar with today, and the estate to family.
+
Aristotleâs direct challenges to Plato over his concept of the Realm of Forms came to an end when Plato passed away. Aristotle was not chosen to take his place to head the Academy. The estate went to Platoâs family, and the chair of the school went to Platoâs nephew Speusippus, a name few people recognize today.
Speusippus, son of Platoâs sister Potone, headed the school for eight years; Diogenes Laertius, Lives IV.1. The will leaves the estate at Iphistiadae to a boy named Adeimantus, taken to be a young kinsman since Plato had a brother of that name, and lists a second estate at Eiresidae; Lives III.41â42. Headship of the school and title to the land were separate things, and neither came to Aristotle. The Academy grove itself was a public gymnasium, not Platoâs to bequeath, and Aristotle, a Stagirite and therefore a metic at Athens, could not have held Attic land in any case.
- Upon leaving Aristotle dedicated his time to studying the natural world. He dissected, he collected, and he questioned fishermen and beekeepers about what they had seen; his account of the developing chick came from opening eggs on successive days.
+ Upon leaving, Aristotle dedicated his time to studying the natural world. He dissected, he collected, and he questioned fishermen and beekeepers about what they had seen; his account of the developing chick came from opening eggs on successive days.
Aristotle, Historia Animalium VI.3 561a for the chick; V.12 541b for the modified arm of the male octopus, which was thought a fable until confirmed in 1857. He was wrong about a great deal, holding the heart to be the seat of thought and the brain an organ for cooling the blood. Darwin, thanking William Ogle in 1882 for a translation of the Parts of Animals, wrote that Linnaeus and Cuvier had been his two gods, but that they were mere schoolboys compared to old Aristotle. Charles Darwin to William Ogle, 22 February 1882, in Francis Darwin, ed., The Life and Letters of Charles Darwin (London: John Murray, 1887), vol. 3, 252.
- What he produced from it was a taxonomy: animals sorted by the features they share, the sorting answerable to the specimens and revised whenever a specimen refused its category.
+ What he produced from it was a taxonomy: animals sorted by the features they share, the sorting answerable to the specimens and revised whenever a specimen refused its category.
+
This perspective, that knowledge comes from the categorization of observations of nature rather than, as Plato taught, from the conceptualization of Forms, is the essence of Naturalism. There are two modern definitions for Naturalism. One definition is that of a philosophy that nothing exists outside of nature. This philosophy is generally taken to deny the existence of any abstraction standing apart from what could be observed, including that of the Realm of Forms. The other definition is that of a study of nature, that of a wildlife biologist.
@@ -491,7 +521,7 @@
Metamorphosis of the dielectic
-
Debate over the dialectic continued for two millennia between the decline of the Athenian Academy and the 19th century. There is a brief review of this interim period in the appendix of chapter . In the 19th century there were two revolutionary developments that changed the form of the dialectic. The symbolic logic foundation of mathematics, and the advent of thinking machines.
+
Debate over the dialectic continued for two millennia between the decline of the Athenian Academy and the 19th century. There is a brief review of this interim period in the appendix of . In the 19th century there were two revolutionary developments that changed the form of the dialectic. The symbolic logic foundation of mathematics, and the advent of thinking machines.
A person might say that Plato had won over the mathematicians. The Forms were no longer discussed as a separate realm; they had been recast as symbols, relations, and rules that could be manipulated within a formal system. George Boole put logical operations into an algebra. Georg Cantor made infinite collections a subject of mathematical investigation. Richard Dedekind sought to characterize the natural numbers through objects, systems, and mappings, and in Was sind und was sollen die Zahlen? (1888) described what he called a simply infinite system. Giuseppe Peano published a closely corresponding axiomatization in Arithmetices principia, nova methodo exposita (1889), acknowledging Dedekindâs earlier work.
George Boole, The Mathematical Analysis of Logic (Cambridge: Macmillan, Barclay & Macmillan, 1847), and An Investigation of the Laws of Thought (London: Walton and Maberly, 1854). Georg Cantorâs work on set theory and transfinite numbers expanded the mathematical study of infinity. Richard Dedekind, Was sind und was sollen die Zahlen? (Braunschweig: Vieweg, 1888); Giuseppe Peano, Arithmetices principia, nova methodo exposita (Turin: Fratres Bocca, 1889). Dedekindâs simply infinite system and Peanoâs axiomatization are historically distinct formulations of the natural-number structure. Peanoâs presentation is closely related to Dedekindâs earlier formulation, and modern historical accounts therefore often refer to the shared lineage as the DedekindâPeano axioms. âDedekind numberâ is already used for a different mathematical sequence, so it is not adopted here as an alternative name.
@@ -511,21 +541,22 @@
Yet Kleene is not the counterexample he first appears to be. His 1952 Introduction to Metamathematics returns to the natural setting at each of the three places where the formalism has to be tied to something outside itself:
-
-
+
+ Where Kleene reaches for a natural setting
+
At the opening of the book, to ground one-to-one correspondence before cardinality is defined. Kleene writes, "A flock of four sheep and a grove of four trees are related to each other in a way in which neither is related to a pile of three stones or a grove of seven trees. ... Without counting the sheep or the trees, one can pair them with each other, for example by tethering the sheep to the trees, so that each sheep and each tree belongs to exactly one of the pairs."Stephen Cole Kleene, Introduction to Metamathematics (Amsterdam: North-Holland, 1952), 3.
At the introduction of the formal system, to say what a symbol is. Kleene proposes that the symbols be thought of concretely as marks on paper, or more precisely as abstracted from our experience with marks on paper, and then observes in a parenthesis that proof theory has to remain abstract to some degree because it supposes arbitrarily long symbol sequences to be constructible, while the paper and ink in the world are finite.Kleene 1952, 62. The parenthesis is the concession this book is built on: the idealization is named as an idealization, and the reason given for it is a physical bound.
At the definition of the machine, and again in its defense. Kleene does not open the chapter on computable functions with a formalism. He opens with a person computing a function by following pre-assigned instructions, using finitely many tokens, able to observe only finitely many at once and to remember only finitely many more, and derives the atomic acts of the machine from what that person can do. The subsequent defense of Turingâs thesis is conducted entirely over such a person, who ticks figures off in pencil to avoid counting them twice, and who may read a symbol on paper by eye, another in braille by hand, and take a signal by ear.Kleene 1952, 356 for the derivation, 377â381 for the defense.
- List . Where Kleene reaches for a natural setting
+
At the same time that the dialectic appeared to have been resolved in favor of the abstract, it reappeared incarnate. The resolution had been to say that mathematics is the manipulation of symbols under rules within a formal system. But the manipulation of symbols under rules is something a device can be built to do. In declaring itself formal, mathematics had declared itself mechanizable, and a mechanism is an object with a mass and a temperature that a person can put on a bench and turn a crank on. The Forms had been driven out of the heavens and into the notation, and the notation could be cut into brass. Whatever else that is, it is a natural object, and it can be observed.
Such objects were not new. The Antikythera mechanism carries a model of the heavens in bronze gearing, and it predates the argument it settles by two thousand years.
The shipwreck is dated to about 60 BC, which fixes the latest possible construction. Estimates of construction itself range from about 205 BC, taken from the epoch of the eclipse dials, to Derek de Solla Priceâs earlier figure of about 87 BC, with the inscriptions favouring roughly 150 to 100 BC. No consensus exists on whether the device was built shortly before the wreck or well before it. The field remains active: a 2024 re-analysis of the calendar ring hole positions put the count near 354 or 355, which argues for a lunar rather than a solar ring.
- In 1642 Blaise Pascal built a machine that added, and in doing so discovered that a carry is not free. His sautoir lifted a weight and dropped it into the next wheel, and the number of wheels a single carry could propagate through was a matter of how much force the mechanism could raise. Leibniz took up the problem thirty years later with a stepped drum that multiplied, and his carriage never worked reliably across the full width of the register. He wanted more than arithmetic from it. He wanted a calculus ratiocinator, a reckoning that would settle disputes by computation, which is Hobbesâs claim that reasoning is a kind of reckoning taken seriously enough to be machined. Charles Babbage then built a machine that evaluated polynomials by the method of forward differences, the same construction taken up in section , and went on to design the Analytical Engine, treated in section .
+ In 1642 Blaise Pascal built a machine that added, and in doing so discovered that a carry is not free. His sautoir lifted a weight and dropped it into the next wheel, and the number of wheels a single carry could propagate through was a matter of how much force the mechanism could raise. Leibniz took up the problem thirty years later with a stepped drum that multiplied, and his carriage never worked reliably across the full width of the register. He wanted more than arithmetic from it. He wanted a calculus ratiocinator, a reckoning that would settle disputes by computation, which is Hobbesâs claim that reasoning is a kind of reckoning taken seriously enough to be machined. Charles Babbage then built a machine that evaluated polynomials by the method of forward differences, the same construction taken up in , and went on to design the Analytical Engine, treated in .
Blaise Pascal began the machine in 1642 and some fifty were made. Gottfried Wilhelm Leibniz demonstrated a stepped reckoner to the Royal Society in 1673 and had a working instrument by 1694; the carry across the full register was never dependable. On the calculus ratiocinator, see the 1666 Dissertatio de arte combinatoria and the later sketches for a universal characteristic.
@@ -552,7 +583,7 @@
Richard Owen, Lectures on the Comparative Anatomy and Physiology of the Invertebrate Animals (London: Longman, Brown, Green & Longmans, 1843), 374 and 379 for the two definitions. Owen distinguished special homology, holding between species, from serial homology, holding between the repeated parts of one organism, and from general homology, relating a part to the archetype. His criteria for deciding a homology were position, development, and composition. The account is pre-evolutionary: the archetype is a plan, not an ancestor. Darwin supplied the ancestor in 1859 and the vocabulary survived the substitution intact, which is the point being borrowed here.
-
Notice that Owenâs distinction is doing work in this book already, under other names. Two architectures that compute the same class of functions are analogues: same function, different parts. That is what Turing Complete asserts, and it asserts nothing about how either machine is built. A transform that carries one machine to another while leaving every computation theoretic question with the same answer is asserting a homology: the same organ, under a variety of form. Section observes that the second requirement is the stronger of the two, and Owen would have said the same of his pair. The wing of a bat and the wing of a bee are analogues and tell you nothing about each otherâs construction. The wing of a bat and the arm of a man are homologues, and either one can be read off the other bone by bone.
+
Notice that Owenâs distinction is doing work in this book already, under other names. Two architectures that compute the same class of functions are analogues: same function, different parts. That is what Turing Complete asserts, and it asserts nothing about how either machine is built. A transform that carries one machine to another while leaving every computation theoretic question with the same answer is asserting a homology: the same organ, under a variety of form. observes that the second requirement is the stronger of the two, and Owen would have said the same of his pair. The wing of a bat and the wing of a bee are analogues and tell you nothing about each otherâs construction. The wing of a bat and the arm of a man are homologues, and either one can be read off the other bone by bone.
That is why the comparison is worth making rather than merely amusing. A naturalist who has only analogy has a list of things that do the same job. A naturalist who has homology has a method: he can carry a finding from one specimen to another and know what he is entitled to carry. The transforms in the chapters that follow are homologies, and the argument that they are inconsequential is the argument that the carrying is legitimate.
@@ -634,7 +665,7 @@
- The authority to remove Russellâs Paradox set formulation comes from the set S. It is not that undefined sets are disallowed, as \dot{R} is perfectly well defined, the Axiom of Separation having defined it. It is that membership in S is granted by prior construction and never by satisfying a condition. A condition can only partition what S already holds, so it has no power to admit. This is why the very condition that is fatal under unrestricted comprehension is harmless under separation: in the first it was doing the admitting, and in the second it is not. Though this invites an objection. If S is stocked in advance, and a condition can only sort what is already inside, then have we not merely arranged for \dot{R} to be absent and called the arrangement a repair? I sometimes wonder how mathematics might have evolved had Frege simply taken that approach and declared such formulations dismissed. It is not the same thing, and showing why requires machinery we do not have yet. We take the question up again in section .
+ The authority to remove Russellâs Paradox set formulation comes from the set S. It is not that undefined sets are disallowed, as \dot{R} is perfectly well defined, the Axiom of Separation having defined it. It is that membership in S is granted by prior construction and never by satisfying a condition. A condition can only partition what S already holds, so it has no power to admit. This is why the very condition that is fatal under unrestricted comprehension is harmless under separation: in the first it was doing the admitting, and in the second it is not. Though this invites an objection. If S is stocked in advance, and a condition can only sort what is already inside, then have we not merely arranged for \dot{R} to be absent and called the arrangement a repair? I sometimes wonder how mathematics might have evolved had Frege simply taken that approach and declared such formulations dismissed. It is not the same thing, and showing why requires machinery we do not have yet. We take the question up again in .
@@ -677,15 +708,16 @@
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.
-
-
+
+ The diagonal machine that defeats a supposed halting decider
+
M(x){
if( H(x ,x) == 'Y' ) while(true);
else return;
}
- Code . The diagonal machine that defeats a supposed halting decider
+
@@ -753,11 +785,11 @@
The conditions on a Natural machine
- The Computational Naturalism thesis holds that mathematics is a taxonomy of machine observations. This sets some conditions. For a machine to be observed, it must be possible to realize it. For observations of the machine to be relevant, its program must be able to encompass any statement in mathematics, being a second condition, and execution must be faithful to the program, being a third condition. The third condition will be met if said observable machine is a computation theoretic inconsequential variation of the Turing Machine. This property is formally defined in chapter ; informally it means that the observed machine gives the same computation theoretic results as a Turing Machine. This argument builds on the work already done with Turing Machines, and it establishes that said programs are executed faithfully to their meaning.
+ The Computational Naturalism thesis holds that mathematics is a taxonomy of machine observations. This sets some conditions. For a machine to be observed, it must be possible to realize it. For observations of the machine to be relevant, its program must be able to encompass any statement in mathematics, being a second condition, and execution must be faithful to the program, being a third condition. The third condition will be met if said observable machine is a computation theoretic inconsequential variation of the Turing Machine. This property is formally defined in ; informally it means that the observed machine gives the same computation theoretic results as a Turing Machine. This argument builds on the work already done with Turing Machines, and it establishes that said programs are executed faithfully to their meaning.
- The Turing Machine itself fails the first condition. It cannot be built, so the machine that started the Naturalism thesis cannot carry the thesis. Some other machine has to, and satisfying the third condition is what makes the substitution of the new machine valid. A realizable machine that is not a computation theoretic inconsequential variation of the Turing Machine is merely some other machine, and a catalog of observations of it is a catalog of nothing in particular. The obvious candidate is the computer already sitting on the desk, which descends from the concrete machine Babbage drew rather than from the paper one Turing described. It is realizable by construction, it is the machine people actually own and run, and were it to satisfy the third condition the thesis would be finished here, with no proposal to make and no book to write. It does not satisfy it. Establishing that, and locating precisely where it fails, is in part the business of this book. A machine that does satisfy all three conditions is the Realizable Machine of chapter . The capitals mark a term carrying a formal definition that displaces its ordinary English sense, as they do for Real. A Realizable Machine is not merely a machine that happens to be realizable, which the computer on the desk also is; it is a machine meeting all three of the conditions set out above.
+ The Turing Machine itself fails the first condition. It cannot be built, so the machine that started the Naturalism thesis cannot carry the thesis. Some other machine has to, and satisfying the third condition is what makes the substitution of the new machine valid. A realizable machine that is not a computation theoretic inconsequential variation of the Turing Machine is merely some other machine, and a catalog of observations of it is a catalog of nothing in particular. The obvious candidate is the computer already sitting on the desk, which descends from the concrete machine Babbage drew rather than from the paper one Turing described. It is realizable by construction, it is the machine people actually own and run, and were it to satisfy the third condition the thesis would be finished here, with no proposal to make and no book to write. It does not satisfy it. Establishing that, and locating precisely where it fails, is in part the business of this book. A machine that does satisfy all three conditions is the Realizable Machine of . The capitals mark a term carrying a formal definition that displaces its ordinary English sense, as they do for Real. A Realizable Machine is not merely a machine that happens to be realizable, which the computer on the desk also is; it is a machine meeting all three of the conditions set out above.
@@ -777,7 +809,7 @@
- The problem with the controller is more nuanced. The head of a Turing Machine must read and react at every step, and the only place a controller has to hold what it has seen is a branch in its own control path. So the Turing Machine uses its controller as memory. This is treated in detail in section , where a machine that reverses a string is analyzed and the consequence is proven: the number of states and arcs required grows exponentially with the width of a machine word, and for a word of any practical size the controller cannot be built at all. A machine room operator can mount another reel of tape. Nobody can mount a larger controller, because the controller is fixed at the start. The tapeâs limit can be handed outside the machine and dealt with there, as we have just seen. The controllerâs limit is sealed inside the model, where nothing can reach it.
+ The problem with the controller is more nuanced. The head of a Turing Machine must read and react at every step, and the only place a controller has to hold what it has seen is a branch in its own control path. So the Turing Machine uses its controller as memory. This is treated in detail in , where a machine that reverses a string is analyzed and the consequence is proven: the number of states and arcs required grows exponentially with the width of a machine word, and for a word of any practical size the controller cannot be built at all. A machine room operator can mount another reel of tape. Nobody can mount a larger controller, because the controller is fixed at the start. The tapeâs limit can be handed outside the machine and dealt with there, as we have just seen. The controllerâs limit is sealed inside the model, where nothing can reach it.
@@ -797,7 +829,7 @@
- The remainder is delivered by construction rather than by thesis, and it occupies much of this book. A tape cell is defined as a location in physical memory in section , and a symbol in computational terms in section . Logic follows from relay switch logic, as Shannon and others have already established. On top of logic sits the Peano Machine, a counter, which then serves as the definition of Peano Numbers. Where Gödel reduced logic to Peano Numbers, we run the other way and expand logic out of them. An axiomatic proof becomes a decider assembled from subroutine calls to the axioms. Fregeâs set theory becomes the analysis of a logic program against an enumeration of inputs. Russellâs paradox becomes a machine that can be analyzed in the second order though it will never halt in the first, which requires the orders of analysis set out in section . The whole is drawn together in chapter , where the claim is that every statement a mathematician has ever made can be restated in this language.
+ The remainder is delivered by construction rather than by thesis, and it occupies much of this book. A tape cell is defined as a location in physical memory in , and a symbol in computational terms in . Logic follows from relay switch logic, as Shannon and others have already established. On top of logic sits the Counting Machine, a counter, which then serves as the definition of Counting Numbers. Where Gödel reduced logic to Counting Numbers, we run the other way and expand logic out of them. An axiomatic proof becomes a decider assembled from subroutine calls to the axioms. Fregeâs set theory becomes the analysis of a logic program against an enumeration of inputs. Russellâs paradox becomes a machine that can be analyzed in the second order though it will never halt in the first, which requires the orders of analysis set out in . The whole is drawn together in , where the claim is that every statement a mathematician has ever made can be restated in this language.
@@ -805,7 +837,7 @@
- There is a remedy, and it occupies the chapters that follow. We will 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. The transformation does not run in one direction only. On the Turing Machine side, the controller has to stop being used as memory. On the modern side, the fixed widths an architecture stipulates, those of an address and of an Integer, are what have to give way. The two meet in the middle, and the machine we arrive at is less strange than that might suggest. It separates the control path from the data path; it holds an instruction table; and it has a small register file. It looks modern. The differences from what we currently build are real but few, and the point of the exercise is that we could build it. That machine, the Realizable Machine of chapter , satisfies the first condition by being buildable and the third by the manner of its construction, and it inherits the second from the Turing Machine it was transformed out of. Neither the Turing Machine nor the computer on the desk is a Natural manifestation of mathematics. The Realizable Machine, standing between them, is.
+ There is a remedy, and it occupies the chapters that follow. We will 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. The transformation does not run in one direction only. On the Turing Machine side, the controller has to stop being used as memory. On the modern side, the fixed widths an architecture stipulates, those of an address and of an Integer, are what have to give way. The two meet in the middle, and the machine we arrive at is less strange than that might suggest. It separates the control path from the data path; it holds an instruction table; and it has a small register file. It looks modern. The differences from what we currently build are real but few, and the point of the exercise is that we could build it. That machine, the Realizable Machine of , satisfies the first condition by being buildable and the third by the manner of its construction, and it inherits the second from the Turing Machine it was transformed out of. Neither the Turing Machine nor the computer on the desk is a Natural manifestation of mathematics. The Realizable Machine, standing between them, is.
@@ -820,8 +852,9 @@
These are the discernible levels of the computer design abstraction stack:
-
-
+
+ The six levels of the computer design abstraction stack
+
mathematical logic
computation theory
@@ -830,7 +863,7 @@
implementation
realization
- List . The six levels of the computer design abstraction stack
+
@@ -847,7 +880,7 @@
- It is not a requirement of a computer organization, nor of an architecture, that it be capable of physical realization. The abstract Turing Machine organization developed in chapter 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.
+ It is not a requirement of a computer organization, nor of an architecture, that it be capable of physical realization. The abstract Turing Machine organization developed in 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.
@@ -896,8 +929,9 @@
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, and the procedure for using the tape. Other things are missing, or are left unspecified:
-
-
+
+ What the Turing Machine leaves out of its architecture
+
The manipulation of symbols remains ungrounded.
The tape is not well defined.
@@ -905,7 +939,7 @@
The tape transport is not articulated, though it is implied.
The read buffer is not identified as a component. One is required so that the programmed controller can do a write without clobbering the read data needed for the next transition.
- List . What the Turing Machine leaves out of its architecture
+
@@ -968,7 +1002,7 @@
- Russellâs set formulation of section is worth taking up here. It is perfectly legal to write a Turing Machine that accepts or rejects a proposed element by evaluating a logical predicate on it, and R = \{x \mid x â x\} is such a machine. Asked whether R is a member of R, it will not halt. First-order analysis therefore returns nothing about it at all, which is the condition described above under which the only remaining option is a higher-order analysis. So the machine, its input, and the whole system around it are written to a tape and reasoned about instead, which is what was done in that section and what we are doing here. R is not dismissed. It is promoted.
+ Russellâs set formulation of is worth taking up here. It is perfectly legal to write a Turing Machine that accepts or rejects a proposed element by evaluating a logical predicate on it, and R = \{x \mid x â x\} is such a machine. Asked whether R is a member of R, it will not halt. First-order analysis therefore returns nothing about it at all, which is the condition described above under which the only remaining option is a higher-order analysis. So the machine, its input, and the whole system around it are written to a tape and reasoned about instead, which is what was done in that section and what we are doing here. R is not dismissed. It is promoted.
@@ -996,20 +1030,22 @@
Suppose we are given a Turing Machine m_i, which will potentially be run after being given any one of a number of input tapes x_{i,j}. For each of those inputs, the same tape with the results written upon it will be r_{i,j}. We notate this as:
-
-
+
+ Machine m_i given input tape x_{i,j} writes result tape r_{i,j}
+
m_i(x_{i,j}) = r_{i,j}
- eq: Machine m_i given input tape x_{i,j} writes result tape 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:
-
-
+
+ Machine m_8 over a set of three input tapes
+
\begin{aligned}
m_8(x_{8,0}) &= r_{8,0} \\
@@ -1017,7 +1053,7 @@
m_8(x_{8,2}) &= r_{8,2}
\end{aligned}
- eq: Machine m_8 over a set of three input tapes
+
@@ -1028,24 +1064,26 @@
Now suppose that a machine m_{i.1} is the result of a transformation, T, applied to machine m_i.
-
-
+
+ Transform T carries machine m_i to machine m_{i.1}
+
m_i \xrightarrow{T} m_{i.1}
- eq: Transform T carries machine m_i to machine 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:
-
-
+
+ The doesnât change results condition for one machine
+
\forall j \colon r_{i,j} = r_{i.1,j}
- eq: The doesnât change results condition for one machine
+
@@ -1056,12 +1094,13 @@
If, and only if, it is the case that
-
-
+
+ The same results transform property, over all machines
+
\forall i, \forall j \colon r_{i,j} = r_{i.1,j}
- eq: The same results transform property, over all machines
+
@@ -1081,12 +1120,13 @@
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 computation theoretic question and the answer it has for a machine
+
a_{i,k} = q_{i,k}(m_i, \{x_{i,j}\})
- eq: A computation theoretic question and the answer it has for a machine
+
@@ -1097,24 +1137,26 @@
As we had already discovered when determining that T is a same results transform, T transforms machine m_i into machine m_{i.1}.
-
-
+
+ Transform T carries machine m_i to machine m_{i.1}, restated
+
m_i \xrightarrow{T} m_{i.1}
- eq: Transform T carries machine m_i to machine m_{i.1}, restated
+
For our specific machine m_i, if and only if:
-
-
+
+ The inconsequential condition for one machine
+
\forall k \colon a_{i,k} = a_{i.1,k}
- eq: The inconsequential condition for one machine
+
@@ -1125,12 +1167,13 @@
If, and only if, it is the case that:
-
-
+
+ The computation theoretic inconsequential transform property
+
\forall i, \forall k \colon a_{i,k} = a_{i.1,k}
- eq: The computation theoretic inconsequential transform property
+
@@ -1147,18 +1190,20 @@
This definition comes from Hopcroft and Ullmanâs book with minor terminology 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)..
-
-
+
+ The conventional Turing Machine as a seven tuple
+
M = (Q, Σ, Î, δ, q_0, â¡, F)
- eq: The conventional Turing Machine as a seven tuple
+
Each component of the Machine, M, is defined as follows:
-
-
+
+ The components of the conventional Turing Machine M
+
Q: The finite set of states of the programmed finite state machine controller.
Σ: The finite set of input symbols.
@@ -1175,7 +1220,7 @@
F: The set of final or accepting states, a subset of Q.
- List . The components of the conventional Turing Machine M
+
I 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. A program is then a set of assignments to the variable parts of the Turing Machine definition. Notice that additional variables are needed by the Turing Machine executor beyond those that appear in the definition, such as the current state variable. In alternative terminology, the definition above defines a Turing Machine type, and a set of assignments to the variable parts of the definition constitutes an instance. Accordingly, then, when a computer arithmetician says he has two Turing Machines, he is saying that he has two distinct sets of Turing Machine variable assignments, and as these sets are distinct, each can be manipulated independently.
@@ -1190,12 +1235,13 @@
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 δ(q, X_i) = (p, Y, L); i.e., the next move is leftward. Then,
-
-
+
+ An instantaneous description rewritten by a leftward move
+
X_1 X_2 ⯠X_{i-1} q X_i X_{i+1} ⯠X_n \underset{M}{â¢} X_1 X_2 ⯠X_{i-2} p X_{i-1} Y X_{i+1} ⯠X_n
- eq: An instantaneous description rewritten by a leftward move
+
So first the tape is X_1 X_2 ⯠X_{i-1} X_i X_{i+1} ⯠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 ⯠X_{i-1} Y X_{i+1} ⯠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.
@@ -1206,19 +1252,21 @@
Here is the programmed controller for a Turing Machine that reverses a binary string. Although by definition each state transition matches exactly one value under the head, as a practical matter, disjunctive selection is allowed via a comma list. A conjunctive phrasing for a state transition proposition would require stringing intermediate states in series.
-
-
+
+ A conventional Turing Machine that reverses a binary string
+
- Figure . A conventional Turing Machine that reverses a binary string
+
Provided the site is still alive, the following YAML can be entered at TuringMachine.io to watch the machine run.
-
-
+
+ The conventional reverse machine, as TuringMachine.io YAML
+
# YAML
# Reverses a binary string using a single marker and an EOM terminator.
@@ -1274,15 +1322,16 @@
done:
- Code . The conventional reverse machine, as TuringMachine.io YAML
+
By default a newly initialized machine always starts with the head on the leftmost tape cell. The input is specified to be placed one square past the initial blank on the tape. This allows the leftmost blank to be used as a reliable start of input marker later when it is scanning left. The machine begins by reading this initial blank and stepping right. If it immediately encounters another blank, the string is empty and the machine is done. Otherwise, it sweeps 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.
The following trace demonstrates the reversal of the string "110" using the same head embedded in the tape diagram as was used above, with a small variation. Here the head position is indicated using a bullet character, while the current state is listed in the left column. The empty symbol prints as a space. If you align the first line at the top of your window and scroll down, the execution plays out like an animation.
-
-
+
+ A step-by-step trace of the conventional reverse machine
+
q_init ⢠1 1 0
q1 â¢1 1 0
@@ -1336,7 +1385,7 @@
q5 â¢0 1 1
done ⢠0 1 1
- Code . A step-by-step trace of the conventional reverse machine
+
@@ -1347,8 +1396,9 @@
The total number of steps for reversing an n symbol string:
-
-
+
+ Steps taken by the conventional reverse machine
+
\text{steps} =
\begin{cases}
@@ -1356,7 +1406,7 @@
3n^2 + 6n + 5 & \text{if } n \ge 1
\end{cases}
- eq: Steps taken by the conventional reverse machine
+
This shows string reversal to be an O(n^2) complexity problem, which might appear to some programmers as a peculiar result, as the same problem can be solved in O(n) time with a C program. This justifies further analysis.
@@ -1365,22 +1415,24 @@
For a realized machine, symbols are machine word encodings. For example, ASCII uses 7 data bits, so there are 128 symbols available. If the width of the word for encoding symbols is n bits, then the total number of states required for this string reverse machine is:
-
-
+
+ States required by the conventional reverse machine
+
\text{states} = 2^n + 8
- eq: States required by the conventional reverse machine
+
The number of arcs in the machine:
-
-
+
+ Arcs required by the conventional reverse machine
+
\text{arcs} = 2^{2n} + 9(2^n) + 12
- eq: Arcs required by the conventional reverse machine
+
These equations show that the state controller size explodes with word width. It would be impractical to implement for all but the smallest of word sizes. This is one of the reasons that computation theory books use modest-sized symbol alphabets in their examples, perhaps the first few letters of the Latin alphabet, or the letter âsâ for unary arithmetic. Previous sections discussed challenges transitioning the Turing Machine to a modern architecture due to the tape length, and discussed how this could be mitigated. In contrast, there is no practical mediation for implementing a Turing Machine controller even for modest-sized real problems.
@@ -1389,8 +1441,9 @@
The observation runs the other way as well. There is not a single chapter dedicated to computation theory in Hennessy and Pattersonâs definitive textbook on computer architecture. John L. Hennessy and David A. Patterson, Computer Architecture: A Quantitative Approach, 6th ed. (Cambridge: Morgan Kaufmann, 2017).
-
-
+
+ The chapter list of Hennessy and Patterson, Computer Architecture: A Quantitative Approach
+
@@ -1428,7 +1481,7 @@
- Table . The chapter list of Hennessy and Patterson, Computer Architecture: A Quantitative Approach
+
@@ -1444,12 +1497,13 @@
Because emptiness is a property of a container, Turingâs first statement can be modeled with a sequence of sets. For a Turing Machine tape, each sequence member is either an empty set or a singleton set. In the language of mathematics an empty tape can be defined as a empty sets:
-
-
+
+ An empty tape written as a sequence of empty sets
+
T_0 = [ \{ \}, \{ \}, \{ \}, \dots ]
- eq: An empty tape written as a sequence of empty sets
+
Here, each tape member set is called a cell. This definition for an empty tape is specific to Turing Machines, as in mathematics an empty sequence has zero length. An empty tape is not an empty sequence, rather it is an infinite sequence where every member is an empty set. In one sense this is a little peculiar that something said to be empty is infinite, in another sense it is consistent for the model that an empty Turing Machine tape keeps its defining characteristics. That is, it remains a single-ended Turing Machine tape, where any cell of the tape could be written with a symbol value, while the basic form of the tape will not change.
@@ -1458,8 +1512,9 @@
So we might imagine a tape machine, say called machine A, where, upon attempting to read an empty cell, the machine head instead returns a control symbol representing that the cell was empty. To accomplish this, the head would have to do some work; it would have to be able to detect emptiness, and then choose to return the empty symbol instead of a read value. This feature would fix the problem of not having any defined next-state behavior for an empty cell. Furthermore, suppose the inverse process is also special in that upon attempting to write the empty symbol, the machine takes action, emptying the cell out. This would facilitate an erase operation.
-
-
+
+ Reading a cell that can be empty
+
def read(c):
if is_empty(c):
@@ -1467,11 +1522,12 @@
else:
return c.get()
- Code . Reading a cell that can be empty
+
-
-
+
+ Writing a cell, where writing the empty symbol erases it
+
def write(c ,x):
if not is_empty(c):
@@ -1479,17 +1535,18 @@
if x != 'empty':
c.put(x) # Place the new symbol unless we are erasing
- Code . Writing a cell, where writing the empty symbol erases it
+
Now imagine machine B, where the concept of an empty cell is jettisoned, and what remains is the mere memory of emptiness, a symbol called empty. Then using the language of mathematics, the mathematician defines an initial empty tape as:
-
-
+
+ An empty tape written with the empty symbol
+
T_0 = [ \mathtt{empty}, \mathtt{empty}, \mathtt{empty}, \ldots ]
- eq: An empty tape written with the empty symbol
+
For machine B, no modifications are required to the native read and write functions.
@@ -1542,14 +1599,15 @@
Like the empty symbol, unspecified is a meta-symbol. It describes the data, or lack thereof, rather than being the data. Specifically, the unspecified symbol says that another machine, a machine A, would have a singular alphabet symbol at the memory location, but our machine B is not being informed as to which symbol it is. Because the Turing Machine state transition function requires a specific symbol value, reading an unspecified symbol, and then using it to make a decision as though it were a concrete symbol, would be an error, unless that control path was for the very purpose of detecting this error.
Reasons that memory can be unspecified include:
-
-
+
+ Reasons a memory location can hold an unspecified value
+
The memory was not initialized.
The memory holds stale data written by an unrelated process, such as a reused memory allocation.
The data is effectively unspecified because the program, by design, does not make decisions based upon its value.
- List . Reasons a memory location can hold an unspecified value
+
An example of effectively unspecified data would be a program that reverses a string without looking at the values being reversed. A string reverse function need not inspect the value of the string; it only needs to recognize the structural boundaries established by the writing protocol. Yet the conventional Turing Machine is incapable of doing this, and worse, as we saw, there is an explosion in the number of states for the reverse string controller against word length.
@@ -1562,8 +1620,9 @@
The modifications
The specific architectural modifications are as follows:
-
-
+
+ The architectural modifications that distinguish the Realizable Machine
+
There is one unified alphabet Σ to which both status symbols and data symbols belong.
The machine utilizes a Moore-style programmed state controller, with zero or one instruction specified per state, so that instructions are independent and managed separately from state transitions.
@@ -1581,7 +1640,7 @@
- List . The architectural modifications that distinguish the Realizable Machine
+
Here the subscript i is a device used to emphasize that q_i and q_{i+1} can be any members of the total set of states, Q. State q_0 refers specifically to the initial state. Also note, later the spartan q will be used to denote the contents of the q register, the current state register.
@@ -1589,15 +1648,16 @@
The Hopcroft and Ullman machine definition specified a next-state function, δ. Here we instead use next-state tables that cascade, and as tables are containers, we denote these using a capital letter as Î_0, Î_1, Î_2, and Î_3.
The new machine evaluates next-state transitions through these four layers, in order, progressing to the next layer only when no transition is found in the prior layer:
-
-
+
+ The four next-state transition layers, in evaluation order
+
Conditional (Î_0): Selects the transition rule that matches the current state and the value of the status register.
State Default (Î_1): Selects the default transition rule that matches the current state.
Status Default (Î_2): Selects the default transition rule that matches the current machine status.
Global Default (Î_3): A single table that holds the next-state of last resort.
- List . The four next-state transition layers, in evaluation order
+
Programmers will typically use the Global Default arc, Î_3, to take the machine to an error state when they have mistakenly left the next-state transition undefined. However, it is conceivable for some machines that if no other next-state is defined, there is a single logical state that should be visited, and this condition is not an error. If no Global Default arc is specified, and no next-state is found, the machine hangs.
@@ -1614,24 +1674,26 @@
The Realizable Machine fixed part
-
-
+
+ MF, the fixed part of the Realizable Machine
+
\mathit{MF} = (\mathit{QF}, \mathit{ΣF}, \mathit{AF})
- eq: MF, the fixed part of the Realizable Machine
+
In the following, the middle dot acts as a namespace operator, N{·}x. By doing this we assure there will be no aliasing with the symbols provided by the programmer when he defines a programmed state controller.
The set of predefined states:
-
-
+
+ QF, the set of predefined states
+
\mathit{QF} = \{\mathit{QF}{·}\mathtt{initial}\}
- eq: QF, the set of predefined states
+
@@ -1639,8 +1701,9 @@
The programmer cannot add instructions to the machine definition, so there are no symbol aliasing issues here:
-
-
+
+ AF, the set of predefined instructions
+
\begin{aligned}
\mathit{AF} = \{& \\
@@ -1653,19 +1716,20 @@
\}
\end{aligned}
- eq: AF, the set of predefined instructions
+
where Ï must be in Σ.
The set of predefined symbols:
-
-
+
+ ΣF, the set of predefined symbols
+
\mathit{ΣF} = \{\mathit{ΣF}{·}\mathtt{leftmost}, \mathit{ΣF}{·}\mathtt{rightmost}\}
- eq: ΣF, the set of predefined symbols
+
@@ -1698,43 +1763,47 @@
Programmable part
-
-
+
+ MP, the programmable part of the Realizable Machine
+
\mathit{MP} = (\mathit{QP}, \mathit{ΣP}, \mathit{ÎP}, Î_0, Î_1, Î_2, Î_3, \mathit{HP})
- eq: MP, the programmable part of the Realizable Machine
+
A set of programmed state symbols:
-
-
+
+ QP, the set of programmed state symbols
+
\mathit{QP}
- eq: QP, the set of programmed state symbols
+
A set of programmed data symbols:
-
-
+
+ ΣP, the set of programmed data symbols
+
\mathit{ΣP}
- eq: ΣP, the set of programmed data symbols
+
The programmed instructions. A set of pairs of the form:
-
-
+
+ ÎP, the programmed instructions, as state and action pairs
+
\mathit{ÎP} = \{ \langle q_i, a \rangle, \dots \}
- eq: ÎP, the programmed instructions, as state and action pairs
+
where q_i is matched to the current state, and a is a member of \mathit{A}.
@@ -1742,60 +1811,65 @@
The conditional transition table. A set of state transition triples; each triple is of the form:
Here q_i and q_{i+1} are two states from the total set of Q. They need not be distinct. While the machine is running, state q_i is to be matched against the contents of the q register, the current state. Symbol Ï is a member of the total set Σ and is to be matched against the contents of the s register, the machine status. When q_i matches the current state and Ï matches the current status, then q_{i+1} becomes the next-state.
The state default transition table. A set of state transition pairs; each pair is of the form:
-
-
+
+ Îâ, the state default transition table
+
Î_1 = \{ \langle q_i, q_{i+1} \rangle, \dots \}
- eq: Îâ, the state default transition table
+
where q_i is matched to the current state, and upon a match q_{i+1} will be taken as the next-state.
The status default transition table. A set of state transition pairs; each pair is of the form:
-
-
+
+ Îâ, the status default transition table
+
Î_2 = \{ \langle Ï, q_{i+1} \rangle, \dots \}
- eq: Îâ, the status default transition table
+
where Ï matches the symbol in s register, and upon a match q_{i+1} will be taken as the next-state.
The global default next-state:
-
-
+
+ Îâ, the global default next-state
+
Î_3 = q_{i+1}
- eq: Îâ, the global default next-state
+
This is the transition of last resort. It is unconditional; the next-state becomes q_{i+1}.
A set of programmer-defined halting states:
-
-
+
+ HP, the set of programmed halting states
+
\mathit{HP}
- eq: HP, the set of programmed halting states
+
@@ -1804,12 +1878,13 @@
The Realizable Machine definition in total
-
-
+
+ The Realizable Machine in total
+
M = (q, s, d, Q, Σ, A, Î, Î, H)
- eq: The Realizable Machine in total
+
@@ -1817,62 +1892,68 @@
The complete set of states, uniting the fixed predefined states and the programmed states:
-
-
+
+ Q, the complete state set, fixed united with programmed
+
Q = \mathit{QF} \cup \mathit{QP}
- eq: Q, the complete state set, fixed united with programmed
+
The complete set of symbols, uniting the fixed control symbols and the programmed data symbols:
-
-
+
+ Σ, the complete symbol set, fixed united with programmed
+
Σ = \mathit{ΣF} \cup \mathit{ΣP}
- eq: Σ, the complete symbol set, fixed united with programmed
+
All members of the set of available instructions are fixed:
-
-
+
+ A, the instruction set, entirely fixed
+
A = \mathit{AF}
- eq: A, the instruction set, entirely fixed
+
The table of state-instruction pairs is strictly programmed.
The ordered sequence of next-state transition rules:
-
-
+
+ Î, the transition rules as an ordered sequence
+
Î = [Î_0 \mid Î_1 \mid Î_2 \mid Î_3]
- eq: Î, the transition rules as an ordered sequence
+
The set of halt states is strictly programmed, and thus could be empty.
-
-
+
+ H, the halt state set, entirely programmed
+
H = \mathit{HP}
- eq: H, the halt state set, entirely programmed
+
@@ -1890,14 +1971,15 @@
Initialization stage
Before the first cycle begins, a tape is selected and mounted. The read/write head is positioned over the leftmost tape cell. The machine variables are initialized as follows:
-
-
+
+ The initial values given to the machine variables
+
The current state q is set to \mathit{QF}{·}\mathtt{initial}.
The data register d is initialized to hold the \mathit{ΣF}{·}\mathtt{unspecified} symbol.
The status register s is initialized to hold the \mathit{ΣF}{·}\mathtt{unspecified} symbol.
- List . The initial values given to the machine variables
+
@@ -1907,13 +1989,14 @@
Phase 1: Instruction issue and execution
-
-
+
+ The two steps of instruction issue and execution
+
Given the current state q, lookup the instruction λ, within the instruction table Î.
Perform the instruction λ.
- List . The two steps of instruction issue and execution
+
If the instruction is left and the machine walks off the tape, the machine hangs.
@@ -1939,8 +2022,9 @@
Because the Realizable Machine separates the data path from the control path, it is possible to reverse a string without inspecting the payload. The programmed controller only needs to recognize the structural boundaries of the data protocol. When a payload symbol is encountered, the controller executes a read(d) instruction, placing the value into the data register, which is not examined for decision-making purposes. When a value is used to base a decision upon, the controller executes a read(s), placing the value into the status register. Because instructions are bound to states rather than transitions, reading and stepping are distinct states. This combination of features results in a controller that has threads of serialized execution.
-
-
+
+ The Realizable Machine string reverse controller
+
# Realizable Machine String Reverse
# Domains:
@@ -2081,16 +2165,17 @@
δ:
Q·Done
- Code . The Realizable Machine string reverse controller
+
-
-
+
+ The Realizable Machine that reverses a binary string
+
- Figure . The Realizable Machine that reverses a binary string
+
@@ -2102,8 +2187,9 @@
The form of this diagram shows a lead-in, a long loop, and a tail leading to done. This is suggestive of code followed by a while loop that breaks out, with further code completing the program.
-
-
+
+ The RT reverse controller written as C
+
void Realizable·reverse_string() {
// Initialization: Scan to EOM and setup the EOR boundary
@@ -2157,13 +2243,14 @@
return;
}
- Code . The RT reverse controller written as C
+
The total number of steps for reversing an n symbol string using the Realizable Machine:
-
-
+
+ Steps taken by the Realizable reverse machine
+
\text{steps} =
\begin{cases}
@@ -2171,7 +2258,7 @@
4.5n^2 + 11.5n + 5 & \text{if } n \ge 1
\end{cases}
- eq: Steps taken by the Realizable reverse machine
+
@@ -2182,8 +2269,9 @@
The reverse string machine spends a lot of time shuttling the head between two context areas: one for the original string, and one for the resulting reversed string. This suggests that a two-head version would be faster. The following is the two-head state machine definition:
-
-
+
+ The two-headed string reverse controller
+
# Realizable Two-Head String Reverse
# input: (Ï â Σ)* EOM (starting on the leftmost cell)
@@ -2284,16 +2372,17 @@
δ:
Q·Done
- Code . The two-headed string reverse controller
+
-
-
+
+ A two-headed Realizable Machine that reverses a binary string
+
- Figure . A two-headed Realizable Machine that reverses a binary string
+
@@ -2304,8 +2393,9 @@
The number of states has dropped from 24 to 18, while the speed increase is dramatic, with the former quadratic performance becoming linear performance. The total number of steps for reversing an n symbol string using a two-head RT architecture:
-
-
+
+ Steps taken by the two-headed Realizable reverse machine
+
\text{steps} =
\begin{cases}
@@ -2313,13 +2403,14 @@
9n + 4 & \text{if } n \ge 1
\end{cases}
- eq: Steps taken by the two-headed Realizable reverse machine
+
The two paths through the state machine, and the one loop, translate well into code:
-
-
+
+ The two-headed reverse controller written as C
+
void Realizable·reverse_string_2_head() {
// Phase 1: Both heads scan right to the EOM pivot
@@ -2360,7 +2451,7 @@
return;
}
- Code . The two-headed reverse controller written as C
+
This machine has a single tape with two heads marking two separate context areas. Because the areas do not overlap, this situation is indistinguishable from the case of the machine having two separate tapes, each with its own head. Hartmanis and Stearns established the original proof that simulating a Turing Machine with multiple tapes, each with its own head, on a single-tape, single-head machine incurs a quadratic time penalty J. Hartmanis and R. E. Stearns, "On the computational complexity of algorithms," Transactions of the American Mathematical Society 117 (1965): 285-306.. Hopcroft and Ullman formalize this relationship in their text John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation (Reading: Addison-Wesley, 1979), 292.. This explains why in this example of a string reverse machine, when the second head was added to eliminate the head shuttling, the quadratic term disappeared. Not all quadratic terms in step-count formulas are due to shuttling, but this one happens to be such a case.
@@ -2377,18 +2468,19 @@
The Realizable Machine design
-
-
+
+ A Turing Machine
+
- Figure . A Turing Machine
+
-
The prior chapter on the computation theoretic Realizable Machine, chapter , serves as the architectural template, with only a few modifications. The architecture requires explicit data rather than accepting meta-symbols like âunspecifiedâ as presumed initial values âby definitionâ. Actual values are transacted. Now that data and control have been separated, the controller is practical to implement, and even more so because it was defined in terms of tables that can be built in hardware. As the read status instruction returns the cell type, it will in its current form be able to return ârightmostâ, so the right end of the tape can be detected. In order to extend the tape, the machine will stop and ask the operator to mount a new reel. This could be signaled when the user attempts to step right of rightmost, either by a panel light that illuminates upon the machine finding a rightmost status, or by the program printing a message on the console teletype. As this is a constant-time operation, it is computation theoretic inconsequential.
+
The prior chapter on the computation theoretic Realizable Machine, , serves as the architectural template, with only a few modifications. The architecture requires explicit data rather than accepting meta-symbols like âunspecifiedâ as presumed initial values âby definitionâ. Actual values are transacted. Now that data and control have been separated, the controller is practical to implement, and even more so because it was defined in terms of tables that can be built in hardware. As the read status instruction returns the cell type, it will in its current form be able to return ârightmostâ, so the right end of the tape can be detected. In order to extend the tape, the machine will stop and ask the operator to mount a new reel. This could be signaled when the user attempts to step right of rightmost, either by a panel light that illuminates upon the machine finding a rightmost status, or by the program printing a message on the console teletype. As this is a constant-time operation, it is computation theoretic inconsequential.
-
Because a Turing Machine can only reach another cell further out on the tape by stepping to it, space complexity and time complexity are related. A program that runs for ten steps can consume at most ten cells of tape. However, if that program merely bounces between two cells, it will require less space, precisely two cells. As another example, a program that counts the number of characters on its input tape using Hindu-Arabic notation will execute in asymptotically linear time, as demonstrated in section , which analyses the increment operation. Its working footprint, however, will be logarithmic in space complexity, because that is how fast an Hindu-Arabic representation grows with a count.
+
Because a Turing Machine can only reach another cell further out on the tape by stepping to it, space complexity and time complexity are related. A program that runs for ten steps can consume at most ten cells of tape. However, if that program merely bounces between two cells, it will require less space, precisely two cells. As another example, a program that counts the number of characters on its input tape using Hindu-Arabic notation will execute in asymptotically linear time, as demonstrated in , which analyses the increment operation. Its working footprint, however, will be logarithmic in space complexity, because that is how fast an Hindu-Arabic representation grows with a count.
If a program executed at the speed of a human operator, the operator would likely abandon the process before it finished. This highlights a necessary attribute of good software: utility. It also exposes a limitation of pure computation theory, which abstracts away physical time. Nevertheless, formal analysis remains a necessity. Consider an exponential-time program processing worst-case operands: its execution time explodes relative to input length, rapidly exceeding the age of the universe. In such extremes, empirical wall-clock measurement becomes superfluous. Computation theory classifies a programâs behavior, which establishes structural implications for wall-clock time, rather than calculating absolute durations.
@@ -2407,27 +2499,29 @@
An HU contains a head and a local controller. The local controller supports these instructions:
-
-
+
+ The instructions supported by the head unit controller
+
read() â Ï
write(Ï)
status() â s
- List . The instructions supported by the head unit controller
+
-
On this model of machine, the HU status is identical to the indicated cellâs type. The cell type is not read from the tape; rather, it is derived from the headâs physical relationship to the ends of the tape. With a physical tape drive, an unused leader and trailer are required to prevent the tape from departing from the reels, a condition difficult to reverse. Therefore, the format, or physical, markers will be on the ends of the usable portion of the tape, rather than on the physical end of the tape. Consequently, the HU works in conjunction with the TTU to derive the status. (The tape transport unit, the TTU, is discussed in the next section, section .) As established in section , cell types are:
+
On this model of machine, the HU status is identical to the indicated cellâs type. The cell type is not read from the tape; rather, it is derived from the headâs physical relationship to the ends of the tape. With a physical tape drive, an unused leader and trailer are required to prevent the tape from departing from the reels, a condition difficult to reverse. Therefore, the format, or physical, markers will be on the ends of the usable portion of the tape, rather than on the physical end of the tape. Consequently, the HU works in conjunction with the TTU to derive the status. (The tape transport unit, the TTU, is discussed in the next section, .) As established in , cell types are:
-
-
+
+ The cell types a head unit can report
+
leftmost
rightmost
medial
island
- List . The cell types a head unit can report
+
A computation theoretic Turing Machine would never encounter a status of rightmost or island. This is where a finite extendable tape structurally differs from a single-ended theoretical tape.
@@ -2444,21 +2538,23 @@
The TTU is the component where tapes are mounted and unmounted, and where read/write head units are installed. When multiple HUs are plugged in, the controller passes control among them so it appears that heads never collide. The TTU controller has these components:
-
-
+
+ The components of the tape transport unit controller
+
one or more HUs
a data buffer holding a single symbol
a status buffer
a instruction buffer, written by the programmed controller, acted upon immediately by the TTU
- List . The components of the tape transport unit controller
+
The TTU interfaces with the executor, which in turn gates the flow of data through the machine. The executor controls the clock and reset lines, and through this supervises the customer programmed control unit, the CPCU. This two-layer control system is single-threaded and issues the following instructions to each selected TTU:
-
-
+
+ The instructions issued to a selected tape transport unit
+
read(head) â Ï
write(Ï ,head)
@@ -2466,7 +2562,7 @@
left(head)
right(head)
- List . The instructions issued to a selected tape transport unit
+
The head argument multiplexes the instruction to the specified head. If the TTU has one head, the head argument is optional. The last two instructions cause the tape to be moved such that, relatively, the selected head moves left or right by one cell.
@@ -2478,8 +2574,9 @@
The controller is programmed via patch panels. The panels would look something like what is shown in the following ASCII art blocks. Note that â indicates an illuminated indicator light, whereas â is not illuminated. [/] represents an open toggle switch, while [â] is a closed one. {*} is a pushed button, while { } is a button that is not pushed. ( ) represents a hole for a banana plug. Each patch cord has a banana plug on each end. Plugging a patch cord between separate panels will void the warranty ;-).
-
-
+
+ The control panel, carrying power, error, reset and single-step
+
- Figure . The control panel, carrying power, error, reset and single-step
+
-
-
+
+ The state transition panel, with state indicators and halt switches
+
- Figure . The state transition panel, with state indicators and halt switches
+
-
-
+
+ The instruction panel, one patch row per instruction and one column per state
+
- Figure . The instruction panel, one patch row per instruction and one column per state
+
-
-
+
+ The sigma select panel, choosing the symbol written by write(Ï)
+
- Figure . The sigma select panel, choosing the symbol written by write(Ï)
+
The top panel has two toggle switches. One turns the machine on, and the other selects run or single-step mode. Immediately to the right of the two toggles are indicator lights. To the right of the indicator lights are two push buttons. One is for reset, which sends the machine back to state q_0, and the other is for stepping the machine when it is in single-step mode. This panel also has an error indicator light which will illuminate if no next-state is specified for a state transition, and thus the machine is hung, or if a head walks off the end of a tape.
@@ -2573,20 +2673,22 @@
The machine block diagram
-
-
+
+ The Realizable Machine block diagram
+
- Figure . The Realizable Machine block diagram
+
-
This section describes the Realizable Machine organization. Figure shows the major components and their channels of communications. The organization guides designers who will later draft schematics that specify all of the connections.
+
This section describes the Realizable Machine organization. shows the major components and their channels of communications. The organization guides designers who will later draft schematics that specify all of the connections.
Components
-
-
+
+ The units and panels the machine is assembled from
+
Control Panel
@@ -2625,10 +2727,10 @@
s register
Status Decoder
- List . The units and panels the machine is assembled from
+
-
As described in chapter , which is being used as the architectural template, the executor guides the machine through the initialization, programmed control, and halting stages of execution. The Executor contains the power, reset, and clock logic. It has two modes of execution: the run mode in which the clock runs free, and the single-step mode, in which clock pulses are sent with the push of a button. It also holds the halt state switch bank, and is ready to stop the clock when a halt state is reached. When in the programmed control stage, most of the active control comes from the CPCU.
+
As described in , which is being used as the architectural template, the executor guides the machine through the initialization, programmed control, and halting stages of execution. The Executor contains the power, reset, and clock logic. It has two modes of execution: the run mode in which the clock runs free, and the single-step mode, in which clock pulses are sent with the push of a button. It also holds the halt state switch bank, and is ready to stop the clock when a halt state is reached. When in the programmed control stage, most of the active control comes from the CPCU.
The CPCU contains the current state register q, the Next-State Table, and the Instruction Table.
@@ -2669,41 +2771,15 @@
-
-
-
- The reversal
-
-
-
-
+
Symbol
-
- Natural Symbol
-
-
The design for the Realizable Machine was given in chapter . On that machine there was a column of patch panel holes said to be symbols for gating next state transitions. The presence of a symbol could be ascertained by its effect on the machine by observing the indicator lights, or more directly if the observer is allowed and facilitated to probe the machine with a voltage meter. Alternatively, the symbols could be enumerated in the abstract, as the maker of the control panel did, when he wrote symbol names next to each of the symbol holes. These are all natural actions. When there are merely two such symbols the machine is said to be a "binary" machine.
-
-
-
Conventionally defined 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. (Here we speak at the metamathematical level, where the objects being compared are the symbol instances themselves, rather than anything that might be bound to the symbol. binding is discussed in section .)
+ 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. (Here we speak at the metamathematical level, where the objects being compared are the symbol instances themselves, rather than anything that might be bound to the symbol. binding is discussed in .)
@@ -2715,11 +2791,18 @@
+
+ Natural Symbol
+
+
The design for the Realizable Machine was given in . On that machine there was a column of patch panel holes said to be symbols for gating next state transitions. The presence of a symbol could be ascertained by its effect on the machine by observing the indicator lights, or more directly if the observer is allowed and facilitated to probe the machine with a voltage meter. Alternatively, the symbols could be enumerated in the abstract, as the maker of the control panel did, when he wrote symbol names next to each of the symbol holes. These are all natural actions. When there are merely two such symbols the machine is said to be a "binary" machine.
+
+
+
Naturally derived Math Symbol
- Because the Realizable Machine runs programs, it is possible to extend the notion of the Natural Symbol to that of the symbol of mathematics. Accordingly, the symbol of mathematics is defined as a program that produces symbol instances. A new symbol instance of the given symbol is then made, say, by calling a symbol factoryâs make function. All of the symbol instances made by the factory constitute the members of corresponding âmade byâ equivalence class.
+ Because a program held on a tape can be called upon while the machine runs, it is possible to extend the notion of the Natural Symbol to that of the symbol of mathematics. A patched machine will not serve here: each factory would need its own patching, and re-patching is not something that happens while the machine is running, whereas mathematics asks for new symbol types on demand. Accordingly, the symbol of mathematics is defined as a program that produces symbol instances. A new symbol instance of the given symbol is then made, say, by calling a symbol factoryâs make function. All of the symbol instances made by the factory constitute the members of corresponding âmade byâ equivalence class.
@@ -2771,7 +2854,7 @@
- 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 section , 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.
+ 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 , 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.
@@ -2833,8 +2916,9 @@
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.
-
-
+
+ A static symbol factory made with a C enum
+
/* The enum definition acts as the factory. */
typedef enum {
@@ -2854,15 +2938,16 @@
/* Evaluates to True */
}
- Code . A static symbol factory made with a C enum
+
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.
-
-
+
+ A dynamic symbol factory whose instances are string pointers
+
#include <string.h>
#include <stdlib.h>
@@ -2928,12 +3013,264 @@
if(e == NULL) printf("e is NULL\n");
}
- Code . A dynamic symbol factory whose instances are string pointers
+
+
+
+ The stored program
+
+
It is not a different machine. The fixed part is the fixed part of , the tape transport unit is the same unit, and the panel is the same panel. What differs is which chords are in it. Patch the panel to reverse a string and the machine reverses strings. Patch it with an interpreter and the machine runs whatever program is handed to it on a tape. No component is added and none is removed.
+
+
This deserves emphasis, because the word universal attaches to a machine by long habit and belongs to a program. A Realizable Machine is not universal or non-universal. A patch program is one or the other, and the machine is whatever its panel currently says it is.
+
+
+ What actually changed
+
+
Placing chords on a panel has always been called programming the machine, and a program was the list saying where the chords go. There is nothing loose in that usage. An operator was handed a program and a panel, and he wired what he was told to wire.
+
+
So the innovation was never the program. It was the stored program. The list stopped being a little book handed to a person and became symbols written on a tape handed to a machine. Everything that follows in this chapter is a consequence of moving that list from paper into the machineâs own medium.
+
+
The arrangement did not vanish when patch panels did. Machines with writable control stores hold their microcode in memory, and the technician who loads it is placing the chords. The boundary between the fixed part and the patched part is itself movable, and where a given manufacturer draws it is a commercial decision rather than a mathematical one.
+
+
One consequence is worth stating before the constructions begin. There is not one interpreter but a family of them, any of which can be patched into the same panel, and all of which run the same programs to the same results. They are not therefore the same. They differ in what interpretation costs in steps and in tape, and the transform criteria of are the instrument for telling them apart. A treatment that identifies them because they compute the same functions has discarded the entire content of the comparison.
+
+
+
+
+ Where the control lives
+
+
Three arrangements, and the reader has met two of them.
+
+
+ Where the control lives
+
+
+
Built in. The control is part of the fixed part. It cannot be altered without altering the machine, and it is the same for every customer.
+
Patched. The control is on the panel, set by the customer. Altering it means stopping the machine and moving chords. This is the machine of .
+
Interpreted. The panel holds an interpreter and the control being carried out is on a tape. Altering it means writing a tape, which the machine can do while running.
+
+
+
+
+
Notice that the third is not a third place for control to sit in the machine. The tape holds marks. Whether those marks are a program is settled by the chords on the panel and by nothing on the tape itself. The same tape under a different interpreter is a different program, or is not a program at all. What a symbol is, and what a program is, are conferred in the same way and for the same reason.
+
+
+
+
+ The Universal Turing Machine
+
+
The Computer Theoretic model chapter provided symbolic definitions for the Turing Machine and the Realizable variation. Those definitions were written as strings of characters, which the reader scanned, and presumably understood, thus demonstrating the ability of those text strings to convey meaning. Furthermore the text explained in detail how an executor could make use of those definitions so as to perform the input string transformations. As Turing originally noted, the executor could be a person. Alternatively, as the book continued on to describe in detail, the executor could be a machine that applied the input transformations automatically.
+
+
In his original paper Alan Turing put these things together and explained that a Universal Turing Machine could read the definition of a Turing Machine from tape, and thus be a Turing Machine executor. Hence, say, a Turing Machine reads the symbolic definition of a Turing Machine from one tape, and then automatically performs the described input string transformations on another tape. Said Universal Turing Machine would then be chameleon-like, performing the function of any other Turing Machine so described on the first tape.
+
+
The only information that the first tape of a Universal Machine need contain is the variable part, \mathit{MP}, which the text established as the program, as the remainder of the definition is common to all machines and can thus be built into the controller. \mathit{MP} describes a state controller, it lists the states, the symbols of the alphabet, the instruction to be issued from each state, the symbol gated next-state transitions, and the halting state. The Universal Machine control program would then have to interpret that information and send the universal machine through the same steps that a human executor would take while running the described machine.
+
+
+
+
+ Interpreting a machine
+
+
The interpreter needs two tapes, and already supplies more than one tape transport unit. One holds \mathit{MP}. The other is the tape the interpreted machine is working on, and it is a real tape under a real head, not a representation of one. Nothing has to be virtualized.
+
+
The interpreterâs own state is small and fixed: it holds the current state symbol of the interpreted machine, and nothing else that grows. It reads the symbol under the working head, searches the definition tape for the arc matching the pair of that symbol and the current state, issues the instruction that arc names to the working tape transport unit, writes the next state symbol into its own holding place, and repeats. When it reaches an arc naming a halt state, it halts.
+
+
This is a virtualization, and the machine being virtualized is virtualized entire, tape and all. It is the more primitive of the two forms treated in this chapter, in that the thing on the tape is the same kind of object as the thing doing the interpreting.
+
+
+
+
+ Virtualization as the instrument of analysis
+
+
The reason to build this is not that it computes anything a patched machine could not. It is that a virtualized machine can be watched.
+
+
A hardwired machine can be run, and running it is first-order analysis in the sense of . It answers what the machine did on this input. It does not answer whether the machine ever revisits a cell, how many steps it took, whether it halts, or what it would do on an input never supplied. To ask those, the machine must be held as an object and examined, and that is what putting \mathit{MP} on a tape achieves.
+
+
So the procedure is this. Take the machine to be studied. Write its programmable part on a tape. Patch the interpreter into the panel, and instrument the interpreter, not the machine under study. Count the steps by incrementing a counter in the interpreterâs loop. Detect a cell revisited by having the interpreter note the cells it visits. Test a property over a domain of inputs by having the interpreter run the machine once per input.
+
+
The machine under study is untouched throughout, which is the whole point. An analysis that requires modifying the subject is an analysis of a different subject. Here the subject is data and the instrumentation is in the observer, which is the arrangement a naturalist wants and rarely gets.
+
+
The orders of analysis then become a count of how many interpreters are stacked. An interpreter running a machine is the second order. An interpreter running an interpreter running a machine is the third, and the halting argument lives there.
+
+
+
+
+ From a state controller to an instruction sequence
+
+
However, the controller can be simplified if the program encoding is changed from the raw definition. Notice that the only information that leaves the state controller while it runs are the instructions issued per state, with that list terminating when the controller reaches the halt state.
+
+
Imagine then, mounting a tape on a given machine, running the machine, and recording the instructions that leave the controller up until it halts. Then taking that list of instructions, and the same input tape, and mounting them on a Playback Machine. The Playback Machine then takes the instructions from the list on the first tape and issues them out of its own controller one by one. The playback controller is quite simple. Though of course, this approach has the drawback of having to run the given machine first so as to observe it, thus making the playback run moot.
+
+
Consider then, inserting jump table instructions to handle the next-state transitions. Then a state controller can be mechanically changed into an instruction sequence with embedded jump table instructions without having to run it and observe it. Accordingly, first examine the state diagram for the controller. Take all the sequential state runs, even those of length 1, from the controller, and list their instructions in the same sequence order. Then, after each such sequence, wherever a state has next-state transition arcs based on the value of the status register, insert a jump table instruction, so that it jumps to the appropriate instruction sequence.
+
+
Applying this mechanical procedure to the two-headed Realizable reverse string example controller results in:
The state labels have become addresses into the program tape, and the address of the cell indicated by the head on the first tape is now an Instruction Pointer (IP). In a sense the programmed controller has been replaced by a little Turing Machine of its own. One that controls the head on the first tape, and moves it in response to the control instructions found on the first tape. Such a controller on a processor is called a sequencer.
+
+
By separating the control path from the data path, utilizing an integrated symbol alphabet, replacing states with sequential instructions, and introducing an explicit addressable instruction pointer, the theoretical machine has physically crossed the bridge to conventional computing. The resulting architecture is a stored-program, von Neumann-style machine organization.
+
+
Some of the default cases for the jump table unnecessarily jump to the instruction at the next sequential address. lacks the regularity to use a computed jump table, so this style of jump table becomes a Lisp cond statement, i.e. sequential conditional tests. So then by using the instructions test, beq (for branch on equal), and jump as control instructions, and rearranging to favor sequential execution, this code becomes:
This is an assembly-level code description of an instruction sequence. To get it into final form, the labels that appear as instruction arguments would be replaced with their addresses. Symbolic labels would not appear on the tape. As an alternative to using absolute branches, relative branches could be used. Performance will be greatly enhanced for a sequencer that performs relative branching if it contains an adder circuit; otherwise, the addition of offsets would be another Realizable Machine program invocation.
+
+
+
+
+ Which form, and why both
+
+
The two forms are not rivals and neither subsumes the other, though either can host the other.
+
+
Machine interpretation is faithful. What is on the tape is a machine of the same kind as the one interpreting it, so a property proved of the representation is a property of the machine. This is what analysis requires, and it is why the more primitive form is the one the preceding sections needed.
+
+
Instruction interpretation is compact and fast. A sequence of instructions says in one cell what a transition table says in a row, and control that would have to be encoded as a state can be written as a branch. The price is that the object on the tape is no longer the same kind of thing as the machine, so a property of the program is not immediately a property of a machine, and getting from one to the other takes an argument.
+
+
An instruction-interpreting machine can run a machine interpreter, and a machine interpreter can interpret a machine whose panel holds an instruction interpreter. The stacking is unrestricted, and each layer costs what it costs.
+
+
+
+
+ Universality by construction
+
+
set out that the Turing Machine fails the first condition, being unrealizable, and that some other machine must carry the thesis. The universality of the Turing Machine cannot therefore be borrowed, and a citation to the Church-Turing thesis will not serve, since that thesis speaks of what functions are computable and not of what can be built.
+
+
What has been exhibited here is a machine that can be built, holding a program that can be written, which runs any machine whose programmable part fits on its definition tape. The claim is discharged by construction. What remains is the cost of the construction, and cost is the subject the conventional treatment sets aside.
A dictionary is a property context object. It is a set of properties, where a property may be selected from the set given its name, which is a symbol instance. The corresponding property value is then the referenced object.
-
A reference is a dictionary key which uniquely identifies a property in the dictionary. A dictionary is also known as a symbol table. In hardware design, the symbols are often unsigned Integers, AKA Peano Numbers, and a symbol table is implemented using an array that is indexed into using the key.
+
A reference is a dictionary key which uniquely identifies a property in the dictionary. A dictionary is also known as a symbol table. In hardware design, the symbols are often unsigned Integers, AKA Counting Numbers, and a symbol table is implemented using an array that is indexed into using the key.
Any programming object that holds other objects is a container, whereas a dictionary is a specific type of key access container.
The Realizable Machine is a natural object. We observe its mechanisms, name its parts, and then find symbol representation for them so as to facilitate introspection. In short, we build a model.
-
-
- A tape is a set containing exactly one leftmost cell and an infinite number of medial 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, means that after reaching said cell, there will always be further cells to the right. Consequently, though any cell can be reached in finite hops starting at the leftmost cell, a finite traversal of the tape can not visit all of the cells. This seeming contradiction is at the very heart of the definition of the countable infinity in mathematics.
-
-
-
- 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 permanence of cells 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.
-
-
-
- An empty 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. Say a Turing Machine tried to erase a tape by writing the empty symbol, then stepping right, then repeating. At some point it must halt. When it halts some number of cells will have been written with the empty symbols, but there will be further cells to the right of the cell the machine halted at, which have not yet been erased. So for example, if a machine wrote 10 cells with the empty symbol, then it might be the case that the prior user of the tape had written data to 11 of the cells. Without historical knowledge the eraser machine can not know where to stop. So here we see another meaning of infinity, it speaks to the situation of not having historical knowledge. And thus, we are left to decree into existence an empty tape, or as the mathematicians say, empty tapes are available by definition.
-
-
-
- Mathematically, a Turing Machine tape is a specialized path graph. The neighbor properties are the edges. In this special form, properties are attached to the edges. A Turing Machine has a clock based state controller. Taking a step is an atomic operation. The machine is either in state q_i or in state q_{i+1}, there is no mathematical meaning given to the concept of during a step, which is why no properties are added to the edges of the tape path graph. This is not to say that some analysis of a Turing Machine program wonât take pairs of nodes from the path graph and give them meaning, thus effectively giving properties to the arcs. However, this would not be part of the machine definition, such a program must go through the additional effort of making node pairs, because the machine itself does not provide the program with a feature for attaching properties directly to the neighbor property itself.
-
-
An example of a non-Turing tape like model is the Emacs vertical line cursor model, where a cursor is said to be between characters. An ASCII file offers no such feature as âin betweenâ characters. Like a Turing Machine tape, a medial character in an ASCII file has a left neighbor and a right neighbor character. Any attempt to represent an in between cursor within the file itself would require inserting more characters into the file under the same model of every medial character having a left and a right character. Consequently, though emacs presents a model where cursor is located in between two characters, this model is only due to the interpretation of the functionsâ actual effects presented to users in the documentation. For example, instead of saying a cursor is located upon a character, and that inserting a character inserts the character to the right of the given character, the manual gives the description that the new character is inserted at the cursor location, where said cursor is in between the given character and its right neighbor. Thus the documentation presents the user with one model, which by necessity of using standard library calls to work with files, is built upon another model.
-
-
-
-
-
- The Universal Turing Machine
-
-
The Computer Theoretic model chapter provided symbolic definitions for the Turing Machine and the Realizable variation. Those definitions were written as strings of characters, which the reader scanned, and presumably understood, thus demonstrating the ability of those text strings to convey meaning. Furthermore the text explained in detail how an executor could make use of those definitions so as to perform the input string transformations. As Turing originally noted, the executor could be a person. Alternatively, as the book continued on to describe in detail, the executor could be a machine that applied the input transformations automatically.
-
-
In his original paper Alan Turing put these things together and explained that a Universal Turing Machine could read the definition of a Turing Machine from tape, and thus be a Turing Machine executor. Hence, say, a Turing Machine reads the symbolic definition of a Turing Machine from one tape, and then automatically performs the described input string transformations on another tape. Said Universal Turing Machine would then be chameleon-like, performing the function of any other Turing Machine so described on the first tape.
-
-
The only information that the first tape of a Universal Machine need contain is the variable part, \mathit{MP}, which the text established as the program, as the remainder of the definition is common to all machines and can thus be built into the controller. \mathit{MP} describes a state controller, it lists the states, the symbols of the alphabet, the instruction to be issued from each state, the symbol gated next-state transitions, and the halting state. The Universal Machine control program would then have to interpret that information and send the universal machine through the same steps that a human executor would take while running the described machine.
-
-
However, the controller can be simplified if the program encoding is changed from the raw definition. Notice that the only information that leaves the state controller while it runs are the instructions issued per state, with that list terminating when the controller reaches the halt state.
-
-
Imagine then, mounting a tape on a given machine, running the machine, and recording the instructions that leave the controller up until it halts. Then taking that list of instructions, and the same input tape, and mounting them on a Playback Machine. The Playback Machine then takes the instructions from the list on the first tape and issues them out of its own controller one by one. The playback controller is quite simple. Though of course, this approach has the drawback of having to run the given machine first so as to observe it, thus making the playback run moot.
-
-
Consider then, inserting jump table instructions to handle the next-state transitions. Then a state controller can be mechanically changed into an instruction sequence with embedded jump table instructions without having to run it and observe it. Accordingly, first examine the state diagram for the controller. Take all the sequential state runs, even those of length 1, from the controller, and list their instructions in the same sequence order. Then, after each such sequence, wherever a state has next-state transition arcs based on the value of the status register, insert a jump table instruction, so that it jumps to the appropriate instruction sequence.
-
-
Applying this mechanical procedure to the two-headed Realizable reverse string example controller results in:
The state labels have become addresses into the program tape, and the address of the cell indicated by the head on the first tape is now an Instruction Pointer (IP). In a sense the programmed controller has been replaced by a little Turing Machine of its own. One that controls the head on the first tape, and moves it in response to the control instructions found on the first tape. Such a controller on a processor is called a sequencer.
-
-
By separating the control path from the data path, utilizing an integrated symbol alphabet, replacing states with sequential instructions, and introducing an explicit addressable instruction pointer, the theoretical machine has physically crossed the bridge to conventional computing. The resulting architecture is a stored-program, von Neumann-style machine organization.
-
-
Some of the default cases for the jump table unnecessarily jump to the instruction at the next sequential address. Code lacks the regularity to use a computed jump table, so this style of jump table becomes a Lisp cond statement, i.e. sequential conditional tests. So then by using the instructions test, beq (for branch on equal), and jump as control instructions, and rearranging to favor sequential execution, this code becomes:
This is an assembly-level code description of an instruction sequence. To get it into final form, the labels that appear as instruction arguments would be replaced with their addresses. Symbolic labels would not appear on the tape. As an alternative to using absolute branches, relative branches could be used. Performance will be greatly enhanced for a sequencer that performs relative branching if it contains an adder circuit; otherwise, the addition of offsets would be another Realizable Machine program invocation.
-
-
-
-
-
-
- The Universal Realizable Machine
-
-
@@ -3203,14 +3351,15 @@
Head partition
-
-
+
+ The three areas of the head partition
+
The left side: The finite set containing all of the cells to the left of the head cell.
Head: the head cell.
The right side: the infinite set containing all the cells to the right of the head.
- List . The three areas of the head partition
+
If the head is on the leftmost cell, there is no left side area.
@@ -3220,13 +3369,14 @@
Leftmost/remaining partition
-
-
+
+ The two areas of the leftmost and remaining partition
+
Leftmost: the leftmost cell.
Remaining: the infinite set including the right neighbor of the leftmost cell, and all cells further to the right.
- List . The two areas of the leftmost and remaining partition
+
@@ -3238,8 +3388,9 @@
A nonempty tape, one with at least one cell holding an alphabet symbol, can be partitioned into the following areas:
-
-
+
+ The three areas of the active area partition
+
The left empty tail: if the leftmost cell of the tape is an alphabet cell, there is no left empty tail. Otherwise, it consists of the leftmost cell and the empty cells, if any, to the right of the leftmost cell, up to, but not including, the first alphabet cell.
@@ -3247,11 +3398,11 @@
The right empty tail: the infinite set extending from the right neighbor of the rightmost cell of the active area, extending rightward.
- List . The three areas of the active area partition
+
- A noncomputational tape is one that cannot be initialized by a Turing Machine, but can still be surmised to exist, perhaps in analysis due to its properties. The empty tape is an example. The tape holding the Peano Numbers is another example. For noncomputational tapes that have the property that the active area is open on the right, there is no right empty tail.
+ A noncomputational tape is one that cannot be initialized by a Turing Machine, but can still be surmised to exist, perhaps in analysis due to its properties. The empty tape is an example. The tape holding the Counting Numbers is another example. For noncomputational tapes that have the property that the active area is open on the right, there is no right empty tail.
@@ -3269,6 +3420,11 @@
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.
@@ -3375,15 +3531,47 @@
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, right-of-rightmost symbol. Such a machine defines a virtual tape over an area.
+
+
+
+
+
+
+
+ Abstract tape
+
+
The Realizable Machine is a natural object. We observe its mechanisms, name its parts, and then find symbol representation for them so as to facilitate introspection. In short, we build a model.
+
- 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.
+ A tape is a set containing exactly one leftmost cell and an infinite number of medial 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.
-
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, right-from-rightmost symbol. Such a machine defines a virtual tape over an area.
+
+ To say that a tape is infinite, and to simultaneously require that any cell can be reached in a finite number of steps, means that after reaching said cell, there will always be further cells to the right. Consequently, though any cell can be reached in finite hops starting at the leftmost cell, a finite traversal of the tape can not visit all of the cells. This seeming contradiction is at the very heart of the definition of the countable infinity in mathematics.
-
+
+ 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 permanence of cells 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.
+
+
+
+ An empty 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. Say a Turing Machine tried to erase a tape by writing the empty symbol, then stepping right, then repeating. At some point it must halt. When it halts some number of cells will have been written with the empty symbols, but there will be further cells to the right of the cell the machine halted at, which have not yet been erased. So for example, if a machine wrote 10 cells with the empty symbol, then it might be the case that the prior user of the tape had written data to 11 of the cells. Without historical knowledge the eraser machine can not know where to stop. So here we see another meaning of infinity, it speaks to the situation of not having historical knowledge. And thus, we are left to decree into existence an empty tape, or as the mathematicians say, empty tapes are available by definition.
+
+
+ Mathematically, a Turing Machine tape is a specialized path graph. The neighbor properties are the edges. In this special form, properties are attached to the edges. A Turing Machine has a clock based state controller. Taking a step is an atomic operation. The machine is either in state q_i or in state q_{i+1}, there is no mathematical meaning given to the concept of during a step, which is why no properties are added to the edges of the tape path graph. This is not to say that some analysis of a Turing Machine program wonât take pairs of nodes from the path graph and give them meaning, thus effectively giving properties to the arcs. However, this would not be part of the machine definition, such a program must go through the additional effort of making node pairs, because the machine itself does not provide the program with a feature for attaching properties directly to the neighbor property itself.
+
+
An example of a non-Turing tape like model is the Emacs vertical line cursor model, where a cursor is said to be between characters. An ASCII file offers no such feature as âin betweenâ characters. Like a Turing Machine tape, a medial character in an ASCII file has a left neighbor and a right neighbor character. Any attempt to represent an in between cursor within the file itself would require inserting more characters into the file under the same model of every medial character having a left and a right character. Consequently, though emacs presents a model where cursor is located in between two characters, this model is only due to the interpretation of the functionsâ actual effects presented to users in the documentation. For example, instead of saying a cursor is located upon a character, and that inserting a character inserts the character to the right of the given character, the manual gives the description that the new character is inserted at the cursor location, where said cursor is in between the given character and its right neighbor. Thus the documentation presents the user with one model, which by necessity of using standard library calls to work with files, is built upon another model.
+
+ Partitions on a finite virtual tape
@@ -3391,14 +3579,15 @@
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.
-
-
+
+ The partitions of a finite virtual tape
+
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.
For the Leftmost/remaining partition, the remaining area is now a finite set terminating at the rightmost cell of the virtual tape.
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.
- List . The partitions of a finite virtual tape
+
@@ -3467,7 +3656,7 @@
Iteration
@@ -3487,6 +3676,41 @@
+
+ Initialization and the first-rest pattern
+
+
+
Signaling emptinessLengthening the tape, and what it costs
@@ -3679,7 +3913,7 @@
- Table . Memory tier latency, scaled so that one clock tick lasts one day
+
@@ -3704,17 +3938,25 @@
- When discussing symbols we noted they could be Peano 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.
+ When discussing symbols we noted they could be Counting 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 section , 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.
+
As we noted in , 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 Peano Numbers, the address of the leftmost cell, and that of the rightmost cell. All Peano 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.
+
+ With addresses we can now define an area with two addresses, two Counting Numbers, the address of the leftmost cell, and that of the rightmost cell. All Counting 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.
@@ -3744,36 +3986,56 @@
- Is the cardinality of an open on the right area a Peano Number?
+ Is the cardinality of an open on the right area a Counting 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
-
-
+
+ The three steps for computing the cardinality of an address space
+
We set Turing Machine P with its head on the leftmost cell of an area. We mount the initial tape, â·â, on the A machine.
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.
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.
- List . The three steps for computing the cardinality of an address space
+
- Lemma 1, the A machine produces Peano Numbers
+ Lemma 1, the A machine produces Counting Numbers
-
This follows from its definition; it is literally the increment from the Peano Numbers Machine.
+
This follows from its definition; it is literally the increment from the Counting Numbers Machine.
- Lemma 2, cardinality is a Peano Number
+ Lemma 2, cardinality is a Counting Number
-
Cardinality is produced by repeatedly calling the A machine, and the A machine produces Peano Numbers.
+
Cardinality is produced by repeatedly calling the A machine, and the A machine produces Counting Numbers.
@@ -3785,28 +4047,28 @@
- Lemma 4, the address space of an open on the right area is identical to the Peano Numbers.
+ Lemma 4, the address space of an open on the right area is identical to the Counting 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 Peano Numbers Machine.
+
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 Counting Numbers Machine.
The apparent contradiction.
-
By Lemma 2, cardinality is a Peano Number. By Lemma 3 cardinality is not in the address space. By Lemma 4 the address space is identical to the Peano Numbers.
+
By Lemma 2, cardinality is a Counting Number. By Lemma 3 cardinality is not in the address space. By Lemma 4 the address space is identical to the Counting 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 Peano Number because a Peano Number Machine cannot reach it in the first-order.
+
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 Counting Number because a Counting 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, analogous to 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 Peano 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.
+
Such a value would be a new Turing Machine, one that composes a call to the never halting Counting 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.
@@ -3815,23 +4077,24 @@
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 Peano Numbers. We can call this machine \aleph_{-1}.
+ 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 Counting Numbers. We can call this machine \aleph_{-1}.
Now here is an interesting result:
-
-
+
+ The difference of two transfinite cardinals is one
+
\aleph_{0} - \aleph_{-1} = 1
- eq: The difference of two transfinite cardinals is one
+
- Neither machine can be run. However we can compose the two machines, then simplify the composition. When we do so, the ever larger Peano Number machines annihilate each other, and the increment machine remains. The increment machine can be run, so we end up with an output value.
+ Neither machine can be run. However we can compose the two machines, then simplify the composition. When we do so, the ever larger Counting Number machines annihilate each other, and the increment machine remains. The increment machine can be run, so we end up with an output value.
@@ -3846,46 +4109,143 @@
-
- Peano Number
+
+
+
+ Number
+
+
+
+ What a number is
+
+
+
+ Where zero comes from
+
+
-
+
+
Unary representation
- A person can define a Turing Machine that is identical to the recursive definition of Peano Numbers as given by Peano. Giuseppe Peano, Arithmetices principia, nova methodo exposita (Turin: Fratres Bocca, 1889). If a person were to run the Peano Number Machine and observe as it writes to the tape, that person would watch as the Peano Numbers are printed one after another: â·s·ss·sss·ssss· ...â. Here â·â represents zero, and âs·â represents one, etc. Because the Peano Number Machine never halts, the machine cannot be used to initialize a tape, but an analyzer can evaluate the machine to make conclusions about what it would write if it were run.
+ A person can define a Turing Machine that is identical to the recursive definition of Counting Numbers as given by Peano. Giuseppe Peano, Arithmetices principia, nova methodo exposita (Turin: Fratres Bocca, 1889). If a person were to run the Counting Number Machine and observe as it writes to the tape, that person would watch as the Counting Numbers are printed one after another: â·s·ss·sss·ssss· ...â. Here â·â represents zero, and âs·â represents one, etc. Because the Counting Number Machine never halts, the machine cannot be used to initialize a tape, but an analyzer can evaluate the machine to make conclusions about what it would write if it were run.
- In contrast, a function extension version of the Peano Number sequence generator can be run. The function extension machine would be given as input a prior function extension result, or an initial empty tape. It would then modify the tape to contain the next Peano Number, as per the sequence that the Peano Number machine would write, if it could be run. This is accomplished through two subroutine calls: find_empty and increment. The find_empty machine checks the symbol under the head. Upon finding it is not the empty symbol, the machine steps right and checks the next cell, repeating until it finds the empty symbol, whereupon it halts. The increment machine then writes an âsâ onto the tape and halts. Recurrent calls to the Peano Number extender then produce a sequence of result tapes: [], [s], [ss], â¦. Similarly, a programmer can write a machine called decrement, though the programmer must note that decrementing can return the left-of-leftmost symbol.
+ In contrast, a function extension version of the Counting Number sequence generator can be run. The function extension machine would be given as input a prior function extension result, or an initial empty tape. It would then modify the tape to contain the next Counting Number, as per the sequence that the Counting Number machine would write, if it could be run. This is accomplished through two subroutine calls: find_empty and increment. The find_empty machine checks the symbol under the head. Upon finding it is not the empty symbol, the machine steps right and checks the next cell, repeating until it finds the empty symbol, whereupon it halts. The increment machine then writes an âsâ onto the tape and halts. Recurrent calls to the Counting Number extender then produce a sequence of result tapes: [], [s], [ss], â¦. Similarly, a programmer can write a machine called decrement, though the programmer must note that decrementing can return the left-of-leftmost symbol.
- To say that Peano Number A is smaller than Peano Number B is to say that A would occur on the Peano Number Machine tape to the left of B, if the machine were run. Conversely, if B were said to be greater than A, that would mean B occurs further to the right. It is a simple matter for a programmer to write a decider machine for this. The decider is given two input tapes for the two numbers to compare, and it keeps a head on each. It then steps forward until neither head has an âsâ under it. If empty symbols are found simultaneously on both tapes, then the two numbers are equal; otherwise, the number with an empty symbol under the head is the lesser number.
+ To say that Counting Number A is smaller than Counting Number B is to say that A would occur on the Counting Number Machine tape to the left of B, if the machine were run. Conversely, if B were said to be greater than A, that would mean B occurs further to the right. It is a simple matter for a programmer to write a decider machine for this. The decider is given two input tapes for the two numbers to compare, and it keeps a head on each. It then steps forward until neither head has an âsâ under it. If empty symbols are found simultaneously on both tapes, then the two numbers are equal; otherwise, the number with an empty symbol under the head is the lesser number.
- As such, a person can assign a Peano Number to each cell of a given tape by using a mechanical procedure. Given a machine, say P, and an address machine, say A_P, each time P is stepped right, a call is made to run increment on A_P. Similarly, each time P is stepped left, a call is made to run decrement on A_P. In this manner the tape on A_P will always hold the address that machine Pâs head is on.
+ As such, a person can assign a Counting Number to each cell of a given tape by using a mechanical procedure. Given a machine, say P, and an address machine, say A_P, each time P is stepped right, a call is made to run increment on A_P. Similarly, each time P is stepped left, a call is made to run decrement on A_P. In this manner the tape on A_P will always hold the address that machine Pâs head is on.
- The Peano Number found on A_P is then called the address for the cell that machine Pâs head is on. As each increment and decrement of the address is a constant-time operation, keeping the address of the cell the head is on is computationally inconsequential.
+ The Counting Number found on A_P is then called the address for the cell that machine Pâs head is on. As each increment and decrement of the address is a constant-time operation, keeping the address of the cell the head is on is computationally inconsequential.
+
An address space is a set of addresses for contiguous cells. The tapeâs address space is the set of addresses for all the cells on the tape. Typically the address of 0 is given to the leftmost among the contiguous cells.
-
+
+
Hindu-Arabic representation
Charles Burnett published a very interesting book about the translation of Hindu-Arabic mathematics in Europe during the Middle Ages Charles Burnett, Numerals and Arithmetic in the Middle Ages (Farnham: Ashgate Variorum, 2010). DOI: 10.33137/aestimatio.v9i0.25990.. He describes a 9th-century treatise on Hindu-Arabic arithmetic authored by Muḥammad ibn MÅ«sÄ al-KhwÄrizmÄ«, where "al-KhwÄrizmÄ«" indicated he was from Khwarazm in Central Asia. When this manuscript was translated into Latin in the 12th century, European translators approximated his name as Algoritmi or Algorismi, thus giving us the word algorithm. He notes that the Arabs called such numbers "Indian Numbers". Another chapter, "Why we read Arabic numerals backwards," shows that the little-endian and big-endian debate that has plagued programmers for decades has its origin in the Middle Ages Danny Cohen, "On Holy Wars and a Plea for Peace," IEEE Computer 14, no. 10 (October 1981): 48-54. DOI: 10.1109/C-M.1981.220208.
-
The topological structure of a Hindue-Arabic representation is found embodied in a simple gear based machine called an odometer. Multiple geared wheels occur in a reticulated structure. Pushing a toggle advances the least-significant digit wheel by 36 degrees of rotation. The wheel has a peg in it, such that if it rolls past 9 back to 0, it pushes the toggle on the next wheel in the reticulation sequence. The peg of the last wheel rotates through a toggle that raises the overflow error flag. By its very construction, this process establishes a one-to-one correspondence between each Peano Number and a sequence of symbols in Arabic Representation.
+
The topological structure of a Hindue-Arabic representation is found embodied in a simple gear based machine called an odometer. Multiple geared wheels occur in a reticulated structure. Pushing a toggle advances the least-significant digit wheel by 36 degrees of rotation. The wheel has a peg in it, such that if it rolls past 9 back to 0, it pushes the toggle on the next wheel in the reticulation sequence. The peg of the last wheel rotates through a toggle that raises the overflow error flag. By its very construction, this process establishes a one-to-one correspondence between each Counting Number and a sequence of symbols in Arabic Representation.
@@ -3896,8 +4256,9 @@
For Hindu-Arabic_increment, the machine reads the cell under the head; upon finding a 0 or the terminator, it writes a 1 and halts. Upon finding a 1, it writes a 0, steps right, and repeats the procedure.
-
-
+
+ A controller that increments a binary counter
+
increment:
a = TTU.read()
@@ -3908,19 +4269,24 @@
TTU.step()
goto increment
- Code . A controller that increments a binary counter
+
-
Here TTU is the tape transport unit. It has the number to be incremented mounted on it. This number is either zero, which would mean the leftmost cell is empty, or it is of the same form as a result from a Peano Number extension machine. A TTU.read places a copy of the symbol instance found in the cell under the head into the read buffer automatically when the machine enters a new state on the programmed controller, so it is not counted as a step. In contrast, the other actions are associated with the state of the programmed controller, so when the machine arrives at a write, step, or halt node, it means that the programmed state controller has taken a step. Sequential instructions mean unconditional next-state choices, whereas an if signals a conditional next-state choice. The if condition is a logical proposition based on the read symbol.
+
Here TTU is the tape transport unit.
+ It has the number to be incremented mounted on it. This number is either zero, which would mean the leftmost cell is empty, or it is of the same form as a result from a Counting Number extension machine. A TTU.read places a copy of the symbol instance found in the cell under the head into the read buffer automatically when the machine enters a new state on the programmed controller, so it is not counted as a step. In contrast, the other actions are associated with the state of the programmed controller, so when the machine arrives at a write, step, or halt node, it means that the programmed state controller has taken a step. Sequential instructions mean unconditional next-state choices, whereas an if signals a conditional next-state choice. The if condition is a logical proposition based on the read symbol.
The loop form here is worth taking note of, as it will come up again. The controller executes a first action, that of a read, followed by a middle break test, and then the recursive form actions.
- Each row shows an input tape, and actions taken to write the result tape. For any given row, the result tape is the same as the input tape on the next row down. Table lists 7 increments, which is sufficient to reach the maximum count that can be held by a 3 bit counter.
+ Each row shows an input tape, and actions taken to write the result tape. For any given row, the result tape is the same as the input tape on the next row down. lists 7 increments, which is sufficient to reach the maximum count that can be held by a 3 bit counter.
-
-
+
+ The cost in steps of each increment, through the range of a three bit counter
+
@@ -3969,7 +4335,7 @@
- Table . The cost in steps of each increment, through the range of a three bit counter
+
@@ -4004,35 +4370,40 @@
-
+ The Computability of Length and Unbounded Zeros
-
Consider the proposition of representing Peano Numbers with an unbounded sequence of leftward-trailing zero symbols, extending from the leftmost nonzero digit. If a Turing Machine attempts to evaluate the length of this number, or append a digit to the left of its most-significant digit, the machine encounters a structural failure. Any algorithm that starts at the right of the sequence (the least-significant digit) and scans leftward in search of the last non-zero digit can never be sure at any step that there isnât another non-zero digit further to the left, as those members of the sequence have not yet been examined.
+
Consider the proposition of representing Counting Numbers with an unbounded sequence of leftward-trailing zero symbols, extending from the leftmost nonzero digit. If a Turing Machine attempts to evaluate the length of this number, or append a digit to the left of its most-significant digit, the machine encounters a structural failure. Any algorithm that starts at the right of the sequence (the least-significant digit) and scans leftward in search of the last non-zero digit can never be sure at any step that there isnât another non-zero digit further to the left, as those members of the sequence have not yet been examined.
Thus, an append function can never know where to write the appended digit, and a length function can never know when to end the count. Because these functions cannot be computed locally on a tape initialized with unbounded zeros, the viable Arabic Representation must strictly be a finite, growing sequence rather than an unbounded string of zeros. If an algorithm attempts to access an index greater than the extent of this finite sequence, the access function fails. This failure is itself a form of meta-informationâinformation about the structure of the representation rather than the number it encodes.
-
+ The Representation of Zero and Structural Emptiness
-
In the growing Arabic representation, counting acts as a mechanical mechanism. In the case of zero, before the first increment, the mechanism has not yet encountered a carry-in. At this stage, no digits have materialized in the representation. Any attempt to retrieve a digit in this state results in an access violation.
+
+ In the growing Arabic representation, counting acts as a mechanical mechanism. In the case of zero, before the first increment, the mechanism has not yet encountered a carry-in. At this stage, no digits have materialized in the representation. Any attempt to retrieve a digit in this state results in an access violation.
-
This reveals a fundamental property of Arabic Representation: it encodes both the sequence of digit symbols (which map to a Peano Number) and the sequenceâs length (which exists at a meta level, governing computational operations). The representation of zero exposes a limitation. At zero, the representation retains length information necessary for computation but lacks an explicit numerical mapping to zero itself.
+
This reveals a fundamental property of Arabic Representation: it encodes both the sequence of digit symbols (which map to a Counting Number) and the sequenceâs length (which exists at a meta level, governing computational operations). The representation of zero exposes a limitation. At zero, the representation retains length information necessary for computation but lacks an explicit numerical mapping to zero itself.
Structurally, this forces a design choice between two options:
-
-
+
+ The two options for representing zero
+
Using an empty sequence [] and arbitrarily mapping it to zero. This allows a length function to return zero naturally, as the empty sequence is never scanned.
Using a lone zero symbol [0], which introduces an effective length concept where [0] must be treated as though it has zero length in algorithmic operations.
- List . The two options for representing zero
+
Without explicit brackets, the empty sequence collapses into an empty space, conveying no meaning when written in conventional notation. To maintain visual clarity and avoid empty spaces where zero should appear, conventional architectures adopt the standard 0. However, the length function must still return zero for [0], despite its apparent length of one.
-
+ Numeric value
An Hindu-Arabic number consists of a sequence of digits, d_0 d_1 d_2 \ldots where, in base 10, each digit has a value ranging from 0 to 9. In this section, these sequences are represented using sequence notation. For example, X = [7, 8, 9] is a sequence with three components. Its zero index component, x_0, is 7, etc. Note that X is written as a capital letter to denote that it is a container, while its individual members use small letters.
@@ -4049,7 +4420,7 @@
-
+ Meaning of the word digital
The information about ENIAC in this chapter is found in a 1947 IRE article, "Electronic Computing Circuits of the ENIAC" by Arthur W. Burks Arthur W. Burks, "Electronic Computing Circuits of the ENIAC," Proceedings of the IRE 35, no. 8 (August 1947): 756-767. DOI: 10.1109/JRPROC.1947.234265. I found it interesting that some of the design issues for flip-flops made of vacuum tubes resemble those of designing static RAM cells in CMOS. Although ENIACâs implementation is electronic, its architecture is fundamentally that of a mechanical machine.
@@ -4076,7 +4447,7 @@
-
+ Scanning-Order and Digit-Order
Had this book been written in Hindu-Arabic, the text would be written right to left. Let us explore what that looks like by using an example where we start with an English sentence and then reverse it. Notice that in this right to left string, the sequence [9, 8, 7] without notation is 987. Both strings match.
In most text documents, a number is written down once and remains unchanged. In contrast, a computing program frequently returns to the exact memory location and changes its value. This is equivalent to erasing an old value on a paper document and writing a new value in the same space.
@@ -4210,26 +4769,28 @@
In the architectural terminology utilized here, viewing memory as a horizontal tape with bytes in the cells and addresses increasing while moving to the right, little-endian numbers have the least-significant digit on the left, and big-endian numbers have the least-significant digit on the right of an allocation. Stated structurally, little-endian numbers are zero padded on the right, and big-endian numbers are zero padded on the left.
-
Figure depicts a word featuring byte addresses represented in hexadecimal, running from c0 to c3. (In decimal these addresses represent 192, 193, 194, 195). The address of the byte before c0 is bf. The address after c3 is c4. The address for the word itself evaluates to c0, as it is the minimum byte address. This word holds a little-endian number. Treating a byte as an octet digit, the binary encoding for the least-significant digit of this number is 0001 1000. The most-significant digit is 1010 1110.
+
depicts a word featuring byte addresses represented in hexadecimal, running from c0 to c3. (In decimal these addresses represent 192, 193, 194, 195). The address of the byte before c0 is bf. The address after c3 is c4. The address for the word itself evaluates to c0, as it is the minimum byte address. This word holds a little-endian number. Treating a byte as an octet digit, the binary encoding for the least-significant digit of this number is 0001 1000. The most-significant digit is 1010 1110.
-
-
+
+ A left-justified word holding a number least-significant-digit-first
+
- Figure . A left-justified word holding a number least-significant-digit-first
+
-
In Figure , the same number populates the word using big-endian architecture. For all but very large numbers, the digit pointed at by the allocation pointer evaluates to zero. A system continues to scan zeros until reaching either the end of the allocation or the most-significant digit. If it reaches the end of the allocation, the contained number evaluates to zero. Because this is the exact same number shown in Figure , it retains the identical least-significant digit and most-significant digit.
+
In , the same number populates the word using big-endian architecture. For all but very large numbers, the digit pointed at by the allocation pointer evaluates to zero. A system continues to scan zeros until reaching either the end of the allocation or the most-significant digit. If it reaches the end of the allocation, the contained number evaluates to zero. Because this is the exact same number shown in , it retains the identical least-significant digit and most-significant digit.
-
-
+
+ The same number held in big-endian digit-order
+
- Figure . The same number held in big-endian digit-order
+
If the specified word holds a count, the counting mechanics differ. When counting with the little-endian convention, a number grows into larger addresses as the count carries into new digits. In contrast, with big-endian architecture, counting carries into strictly smaller memory addresses.
@@ -4242,7 +4803,7 @@
-
+ Bit Order Within Bytes
Data transports between hardware nodes over bundles of wires called buses. Bus specifications explicitly define the order of bits in bytes, and for contemporary machines, bytes are strictly octets. All compute processors, channel processors, and attached devices must conform to the busâs specifications.
@@ -4257,7 +4818,7 @@
-
+ Byte Order Within Words
A specific processor architecture features native support for byte data alongside varied word lengths, most commonly 16, 32, and 64 bits (or 4, 8, and 16 bytes).
@@ -4266,26 +4827,28 @@
Our Indian Number derived representations consist of sequences of digits. Words of allocation consist of consecutively addressed bytes. Hardware manages bytes atomically. Any bit encoding for the digits of a number must pack cleanly into bytes, otherwise the digits fracture. Achieving a clean packing requires padding the data with zeros to force alignment to an 8-bit boundary. When a system meets this criterion, treating a number as a sequence of bytes acting as digits maintains structural consistency. Due to this constraint, little-endian and big-endian are routinely classified as byte orders.
-
Figure displays a stream of bytes arriving as data and being copied into a word. The digits of the word (the bytes) arrive in little-endian order and target a little-endian machine, so they are written in the exact order they are scanned off the channel.
+
displays a stream of bytes arriving as data and being copied into a word. The digits of the word (the bytes) arrive in little-endian order and target a little-endian machine, so they are written in the exact order they are scanned off the channel.
-
-
+
+ A byte-by-byte copy performed in address order
+
- Figure . A byte-by-byte copy performed in address order
+
In the second case, the identical data stream arrives with words serialized as bytes in little-endian order, but the receiving machine is big-endian. The system must reverse the bytes strictly on a word-by-word basis.
-
-
+
+ A reverse order byte copy performed word by word
+
- Figure . A reverse order byte copy performed word by word
+
When the data arrives, there is no way to know where the word boundaries are. Serialization destroys that structural boundary information. Without knowing where the words are, a system cannot determine when to perform the byte order reversal. Therefore, resolving this requires a different approach than the one used for bit order in bytes; the problem transfers into the software layer.
@@ -4300,7 +4863,7 @@
-
+ The Realizable Machine number system
The native Integer data type for the Realizable Machine utilizes a high radix online number system. This number system functions as an extension of online arithmetic. Similar to online arithmetic, it employs serial most-significant-digit-first signed-digit arithmetic. In contrast to standard signed arithmetic, the radix scales significantly higher, causing a digit to span at least a byte in length. The numbers are highly scalable, and the architecture mandates an analysis step at compile time to establish rigorous precision requirements and exact range bounds. This process is detailed in the next chapter. The architecture provides explicit conversion instructions to generate alternate number formats.
@@ -4324,8 +4887,8 @@
- The orders of analysis were named in section
- . This
+ The orders of analysis were named in
+ . This
chapter takes the second-order as its working material.
@@ -4363,8 +4926,9 @@
Suppose our goal is to subtract 3 from 5 in the second-order. Consider a Turing Machine representation named five that outputs the number 5, i.e., it prints to the tape, âsssssâ, using unary notation. Let us assume that the tape is initially empty and that the empty symbol ââ¡â terminates the string. To preserve the code for second-order analysis, we define the programâs Abstract Syntax Tree (AST) as a quoted progn block. This block can contain any native Lisp control structures, though for this generator it is a simple sequence:
-
-
+
+ The abstract syntax tree for the Counting Number five
+
(defparameter *five-ast*
â(progn
@@ -4375,13 +4939,14 @@
(write s) (step)
))
- Code . The abstract syntax tree for the Peano Number five
+
Similarly, the AST for the number 3:
-
-
+
+ The abstract syntax tree for the Counting Number three
+
(defparameter *three-ast*
â(progn
@@ -4390,7 +4955,7 @@
(write s) (step)
))
- Code . The abstract syntax tree for the Peano Number three
+
@@ -4401,8 +4966,9 @@
For the second-order difference operation, we compose the ASTs to create a new program. Here we extract the body of the second operandâs AST and substitute every (write s) followed by a (step) instruction with an inverted pair: a (left) instruction followed by writing the empty symbol (write â¡).
-
-
+
+ A composer that subtracts by inverting the direction of one machine
+
(defun invert-direction (cmds)
(cond
@@ -4434,13 +5000,14 @@
,@(invert-direction body-b)
)))
- Code . A composer that subtracts by inverting the direction of one machine
+
-
We pass our two Peano Number ASTs to this composer, and we get as a result a newly synthesized AST.
+
We pass our two Counting Number ASTs to this composer, and we get as a result a newly synthesized AST.
-
-
+
+ The composed but unsimplified tree for five minus three
+
(defparameter
*primitive-five-minus-3-ast*
@@ -4459,7 +5026,7 @@
;; (left) (write â¡)
;; )
- Code . The composed but unsimplified tree for five minus three
+
@@ -4471,11 +5038,12 @@
- For a program containing branched control logic, the simplifier would require a deep recursive walk of the AST to ensure operations arenât annihilated across conditional boundaries. For our explicit Peano Number generators, a linear scan of the progn body suffices. It calls itself recursively until the scan fails to find any further reductions, returning its optimized AST.
+ For a program containing branched control logic, the simplifier would require a deep recursive walk of the AST to ensure operations arenât annihilated across conditional boundaries. For our explicit Counting Number generators, a linear scan of the progn body suffices. It calls itself recursively until the scan fails to find any further reductions, returning its optimized AST.
-
-
+
+ A simplifier that removes annihilating instruction pairs
+
(defun remove-annihilations (cmds)
(cond
@@ -4512,13 +5080,14 @@
)))
- Code . A simplifier that removes annihilating instruction pairs
+
After giving the difference program to the simplifier, we get:
-
-
+
+ The simplified tree for five minus three
+
(defparameter
*simplified-five-minus-3-ast*
@@ -4530,7 +5099,7 @@
;; (write s) (step)
;; (write s) (step))
- Code . The simplified tree for five minus three
+
This technique of composing Turing Machine programs in the presence of simplification is closely related to that of symbol computation and expression simplification that we find in math tools such as Mathematica. We can imagine our Turing Machines as functions with names, and then symbolic computation leaves them unevaluated as here. Then the Mathematica Simplify is the compiler optimization simplifier as above. A difference in these two systems is that of the functions being reduced to Turing Machine head and tape transport unit instructions.
@@ -4541,7 +5110,7 @@
The multiplicative inverse of the additive identity
- Generally it is more efficient to perform arithmetic in the first-order. Also, it is easier to write Turing Machine control programs if we take Peano Number arithmetic as already available, say, from a subroutine library. On processors fixed word length arithmetic is built into the hardware. Where second-order computation becomes useful is in places where a result cannot be computed in the first-order.
+ Generally it is more efficient to perform arithmetic in the first-order. Also, it is easier to write Turing Machine control programs if we take Counting Number arithmetic as already available, say, from a subroutine library. On processors fixed word length arithmetic is built into the hardware. Where second-order computation becomes useful is in places where a result cannot be computed in the first-order.
@@ -4552,32 +5121,35 @@
Let us take the multiplicative inverse of the additive identity as an example, AKA division by zero. In the second-order, when we attempt to compute a division, say 6/0, the machine will not reduce.
-
-
+
+ A division by zero, which does not reduce
+
(divide 6 0)
- Code . A division by zero, which does not reduce
+
Now consider the compiler optimization like simplification of this expression:
-
-
+
+ A composition of two unreduced divisions
+
(divide (divide 6 0) (divide 3 0))
- Code . A composition of two unreduced divisions
+
The result will be:
-
-
+
+ The reduced result, still carrying a divide of zero by zero
+
(multiply 2 (divide 0 0))
- Code . The reduced result, still carrying a divide of zero by zero
+
@@ -4625,8 +5197,9 @@
Let us construct a forward difference pyramid for the polynomial f(t) = t^2.
-
-
+
+ The forward difference table for f(t) = t²
+
@@ -4670,7 +5243,7 @@
- Table . The forward difference table for f(t) = t²
+
@@ -4681,8 +5254,9 @@
Here is the sequence of tape states as the machine is repeatedly called to extend the function from its initial conditions at t = 0. During each step, the machine adds δ^1 to f, and δ^2 to δ^1, as there is no δ^3, it is taken to be zero, so δ^2 is merely copied down.
-
-
+
+ The tape at each call while extending t²
+
Initial Tape (t=0): [0, 1, 2]
Call 1 (t=1): [1, 3, 2]
@@ -4690,7 +5264,7 @@
Call 3 (t=3): [9, 7, 2]
Call 4 (t=4): [16, 9, 2]
- Code . The tape at each call while extending t²
+
@@ -4747,24 +5321,26 @@
The exact algebraic composition of this mechanical expansion is formalized by Newtonâs calculus of finite differences Isaac Newton formalized this interpolation method in 1675, later published in his Methodus Differentialis (1711). For a comprehensive foundational treatment, see George Boole, A Treatise on the Calculus of Finite Differences (Cambridge: Macmillan and Co., 1860), Chapter II.. Instead of executing the machine incrementally, a person can calculate the function value at call \omega directly as a linear combination of the initial tape components using Newtonâs forward difference formula:
-
-
+
+ Newtonâs forward difference formula for the value at call Ï
+
D_{\omega, 0} = \sum_{j=0}^{\omega} \binom{\omega}{j} D_{0, j}
- eq: Newtonâs forward difference formula for the value at call Ï
+
Because the binomial coefficient \binom{\omega}{j} evaluates to exactly zero for any Integer j > \omega, the summation naturally truncates at index \omega. This algebraic property perfectly mirrors the physical boundary established by the machine execution trace. Furthermore, the relationship is symmetric. A person can compute the specific components of the initial tape, D_{0, n}, directly from the sequence of evaluated function calls, D_{k, 0}, using the alternating binomial sum:
-
-
+
+ The initial tape components recovered from evaluated calls
+
D_{0, n} = \sum_{k=0}^{n} (-1)^{n-k} \binom{n}{k} D_{k, 0}
- eq: The initial tape components recovered from evaluated calls
+
@@ -4817,8 +5393,9 @@
To observe the structural integrity of this progression, a person can array these relationships into a system of equations mapping the initial tape to the polynomial constants:
-
-
+
+ The initial differences as a system of equations in the polynomial constants
+
@@ -4854,7 +5431,7 @@
- Table . The initial differences as a system of equations in the polynomial constants
+
@@ -4865,8 +5442,9 @@
To observe the formal mechanics of this progression, a person can alternatively array these relationships into a matrix equation mapping the polynomial constants, a_i, to the initial tape differences, D_{0,n}. The coefficients of this transformation are defined by the Stirling numbers of the second kind, denoted S(i,n):
-
-
+
+ Polynomial constants carried to initial differences by Stirling numbers of the second kind
+
\begin{bmatrix} D_{0,0} \\ D_{0,1} \\ D_{0,2} \\ \vdots \\ D_{0,\omega} \end{bmatrix} =
\begin{bmatrix}
@@ -4878,7 +5456,7 @@
\end{bmatrix}
\begin{bmatrix} a_0 \\ a_1 \\ a_2 \\ \vdots \\ a_\omega \end{bmatrix}
- eq: Polynomial constants carried to initial differences by Stirling numbers of the second kind
+
@@ -4886,15 +5464,16 @@
- The main diagonal contains strictly non-zero factorials, ensuring the matrix is invertible. By inverting this matrix, a person replaces the cascading back substitution with a direct, closed form equation to recover any constant a_i. The inversion utilizes the signed Stirling numbers of the first kind, denoted s(n,i) (see the Appendix on Stirling numbers, section ).
+ The main diagonal contains strictly non-zero factorials, ensuring the matrix is invertible. By inverting this matrix, a person replaces the cascading back substitution with a direct, closed form equation to recover any constant a_i. The inversion utilizes the signed Stirling numbers of the first kind, denoted s(n,i) (see the Appendix on Stirling numbers, ).
-
-
+
+ A polynomial constant recovered using signed Stirling numbers of the first kind
+
a_i = \sum_{n=i}^{\omega} \frac{s(n,i)}{n!} D_{0,n}
- eq: A polynomial constant recovered using signed Stirling numbers of the first kind
+
@@ -4905,12 +5484,13 @@
This mechanical recovery of standard polynomial constants is completely analogous to Newtonâs interpolation formula Ibid.. Instead of resolving the standard constants a_i through an upper triangular matrix, a person can construct the polynomial directly by treating the initial tape components as the exact coefficients for a basis of binomial terms:
-
-
+
+ The polynomial built directly on a basis of binomial terms
+
f(t) = \sum_{n=0}^{\omega} D_{0, n} \binom{t}{n}
- eq: The polynomial built directly on a basis of binomial terms
+
@@ -4927,8 +5507,9 @@
Here is the table of finite differences for the function 2^t.
-
-
+
+ The forward difference table for f(t) = 2áµ
+
@@ -4978,11 +5559,11 @@
- Table . The forward difference table for f(t) = 2áµ
+
- The first difference of 2^t is also 2^t, so row 0 of the table will have an infinite number of values. Fortunately, due to the lemma of section , stating that evaluating call \omega requires an initial tape populated with components 0 through \omega of row 0, exactly those components are needed for the recurrence to proceed. Furthermore, when new values are needed, they are easily computed. A programmer need not store the entire infinite first row of the difference table on a static tape.
+ The first difference of 2^t is also 2^t, so row 0 of the table will have an infinite number of values. Fortunately, due to the lemma of , stating that evaluating call \omega requires an initial tape populated with components 0 through \omega of row 0, exactly those components are needed for the recurrence to proceed. Furthermore, when new values are needed, they are easily computed. A programmer need not store the entire infinite first row of the difference table on a static tape.
@@ -5019,21 +5600,23 @@
Now suppose we want to express the quotient of these two functions.
-
-
+
+ The quotient h(t), carrying a pole and a zero at t = 5
+
h(t) = \frac{f(t)}{g(t)} = \frac{2^t - 32}{3t - 15}
- eq: The quotient h(t), carrying a pole and a zero at t = 5
+
-
-
+
+ The quotient h(t) plotted across the singularity at t = 5
+
- Figure . The quotient h(t) plotted across the singularity at t = 5
+
@@ -5045,8 +5628,9 @@
Suppose we move to a second-order evaluation, and for places the computation does not work, we return the machine that isnât evaluating. That is similar to what we did to get (divide 0 0), but the zeros in that expression came from a prior step first-order evaluation. Let us instead give the quotient composer two machines to compose, and have it return a value when reduction to the first-order is possible, and return the full problem as posed to it when it can not be reduced.
-
-
+
+ The quotient and the ratio of first differences through the singularity
+
@@ -5119,7 +5703,7 @@
- Table . The quotient and the ratio of first differences through the singularity
+
@@ -5127,7 +5711,7 @@
- I included the first difference along with the evaluation results in Table . When building a first difference table an interesting thing happens at the singularity, the first difference and the function itself coincide, note calls 4 and 5. This makes sense because δ f(4) = f(5) - f(4), which becomes δ f(4) = 0 - f(4), and the same happens to g in the denominator, so the signs cancel. Note also δ f(5) = f(6) - f(5), which becomes δ f(5) = f(6) - 0.
+ I included the first difference along with the evaluation results in . When building a first difference table an interesting thing happens at the singularity, the first difference and the function itself coincide, note calls 4 and 5. This makes sense because δ f(4) = f(5) - f(4), which becomes δ f(4) = 0 - f(4), and the same happens to g in the denominator, so the signs cancel. Note also δ f(5) = f(6) - f(5), which becomes δ f(5) = f(6) - 0.
Ostensibly it looks like we have happened upon a discrete version of LâHôpitalâs rule, that we merely use the first difference quotient instead of the function quotient at the singularity. But alas, the coincidence occurs at h(4) rather than at h(5). For the second coincidence, we find h(6) as the 5th first finite difference. In neither case did we learn anything about the value of h(5).
@@ -5141,13 +5725,14 @@
So then, perhaps we set the value at the singularity to x build out the difference table, then solve for x?
-
-
+
+ The difference table with the singular value carried as the variable x
+
- Figure . The difference table with the singular value carried as the variable x
+
@@ -5155,12 +5740,13 @@
As Newton pointed out, we can know the differences on the D_0 row of the table from the quotient function:
-
-
+
+ The initial differences of the quotient, taken from the function
+
D_{0,n} = \sum_{k=0}^n (-1)^{n-k} \binom{n}{k} \frac{f(k)}{g(k)}
- eq: The initial differences of the quotient, taken from the function
+
@@ -5175,32 +5761,35 @@
The LâHôpital evaluator will discover that a transcendental constant is required. It will be returned as a higher-order object, a machine definition, because the value can not be written to the tape.
-
-
+
+ The transcendental constant the quotient requires
+
T = \frac{32 \ln(2)}{3}
- eq: The transcendental constant the quotient requires
+
The resulting D_0 vector for the quotient is:
-
-
+
+ The Dâ vector for the quotient
+
- Figure . The Dâ vector for the quotient
+
-
-
+
+ The difference table for h(t)
+
- Figure . The difference table for h(t)
+
@@ -5214,8 +5803,9 @@
And for the victory lap, evaluation versus higher-order computation and function extension:
-
-
+
+ Direct evaluation of f(t)/g(t) against the extended quotient vector H(t)
+
@@ -5278,7 +5868,7 @@
- Table . Direct evaluation of f(t)/g(t) against the extended quotient vector H(t)
+
@@ -5288,12 +5878,13 @@
The fundamental claim of computational analysis is that all functions can be viewed as discrete entities. Take this simple function:
-
-
+
+ A simple cubic function
+
f(t) = t^3
- Code . A simple cubic function
+
It is said to be a continuous function over the real field. However, from a computational perspective, it is a string of 8 discrete symbols. A person might ask then, "If the function is not continuous, then how can a person take a derivative?" Often people view a derivative as a tangent line to a curve drawn on a plot. The computational analystâs answer is to use a machine that manipulates the symbols; it will move the 3 down in front of the t, decrement the power, and write 2. Those are all discrete operations.
@@ -5330,274 +5921,278 @@
-
-
-
-
- Appendix: The Tension Between Formal Methods and Practical Architecture
-
-
- Does computation theory matter to computing?
-
-
- 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. Table provides the historical date that the variable value would finally be loaded into the processor, depending on the memory tier being accessed:
-
-
-
-
-
-
-
-
-
Memory Tier
-
Real-World Latency
-
Scaled Delay
-
Scaled Arrival Era
-
Historical Context
-
-
-
-
-
L1 Cache Hit
-
1 ns
-
3 days
-
-0043-03-18
-
Three days after the assassination.
-
-
-
DRAM (Main memory)
-
100 ns
-
300 days
-
-0042-01-09
-
Nearly a year later, during the Liberatorsâ civil war.
-
-
-
NVMe SSD Page Swap
-
15 µs
-
45,000 days
-
0080
-
123 years later, exactly as the Colosseum is completed in Rome.
-
-
-
SATA SSD Page Swap
-
100 µs
-
300,000 days
-
0778
-
821 years later, during the reign of Charlemagne and the Frankish Empire.
-
-
-
Magnetic HDD Page Swap
-
10 ms
-
30,000,000 days
-
82092
-
Tens of thousands of years in the future, long after current human civilizations are dust.
-
-
-
- Table . Memory tier latency, scaled so that one clock tick lasts one day
-
+
+
+ Neural networks
+
-
- Do formal methods belong in computer design?
-
-
-
-
- Professor Gonzalez once observed that the primary purpose of computer architecture is to execute the customerâs programs as rapidly as possible. IBM later amended this philosophy to add âfor what they paid for,â famously designing a computer model where performance was artificially restricted unless the customer paid to have a physical hardware jumper removed. Within this prevailing design philosophy, the graceful handling of computational end cases, where most formal theoretical questions arise, is deemed secondary because such cases do not occur frequently in the critical execution path.
-
-
-
- The primary data structure of Lisp is the list, and its programs are designed fundamentally around list traversal. In this sense, the language closely mirrors the pure formal execution of a Turing Machine. Throughout the 1980s, companies such as Symbolics, Lisp Machines Incorporated, Texas Instruments, and Xerox produced computers based on architectures designed specifically to run Lisp natively. However, when Sun Microsystems introduced their workstations, the industry discovered these general-purpose machines were relatively inexpensive and offered higher performance for the exact same Lisp programs. The commercial mandate to execute programs quickly decisively defeated formal architectural purity.
-
-
-
- A counterexample to this trend occurred during the 1980s when two competing floating-point standards emerged. The proposal from DEC allowed for optimally fast computation provided the behavior was well documented. Under this model, the bottom few bits of a computation could be imprecise, and following an interrupt, a program would be required to do diagnostic work to determine the specific instruction that caused the fault. The reasoning was that floating-point computation is approximate by its very nature, and because end-case interrupts occur infrequently, it makes no sense to sacrifice performance on workhorse computations to accelerate rare anomalies.
-
-
-
- The competing standard, initially backed by Intel and soon adopted as the IEEE standard, demanded accuracy to the last bit for each operation, alongside synchronized interrupts. This predictable structure permitted a program to overflow, promote the value, and seamlessly continue an operation. It also specified the use of error tags that participate in a higher-order error algebra. This standard ultimately prevailed because its precision guarantees and deterministic predictability provided the necessary foundation for the formal analysis of programs.
-
-
-
- This continuous tension between pure formal models and practical execution speed remains a defining characteristic of the field, driving the structural logic behind modern mechanisms dealing with instruction pipelines, branch prediction, and memory aliasing.
-
-
-
- Logic and neural network equivalence
-
-
+
+ The Tension Between Formal Methods and Practical Architecture
+
+ Does computation theory matter to computing?
-
-
- Appendix: The dialectic from the Athenian decline to Kant
+
+ 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. provides the historical date that the variable value would finally be loaded into the processor, depending on the memory tier being accessed:
+
-
Section gives the short account of what became of the argument between Plato and Aristotle. This appendix gives the long one. It is arranged by date, with one exception noted where it occurs. A reader who accepts the summary loses nothing by skipping it.
+
+ Memory tier latency, scaled so that one clock tick lasts one day
+
+
+
+
+
Memory Tier
+
Real-World Latency
+
Scaled Delay
+
Scaled Arrival Era
+
Historical Context
+
+
+
+
+
L1 Cache Hit
+
1 ns
+
3 days
+
-0043-03-18
+
Three days after the assassination.
+
+
+
DRAM (Main memory)
+
100 ns
+
300 days
+
-0042-01-09
+
Nearly a year later, during the Liberatorsâ civil war.
+
+
+
NVMe SSD Page Swap
+
15 µs
+
45,000 days
+
0080
+
123 years later, exactly as the Colosseum is completed in Rome.
+
+
+
SATA SSD Page Swap
+
100 µs
+
300,000 days
+
0778
+
821 years later, during the reign of Charlemagne and the Frankish Empire.
+
+
+
Magnetic HDD Page Swap
+
10 ms
+
30,000,000 days
+
82092
+
Tens of thousands of years in the future, long after current human civilizations are dust.
+
+
+
+
+
-
As Greek learning passed among late-antique, Syriac, and Arabic-speaking communities, the transmission of Greek philosophy became dispersed rather than simply preserved in one place. Western Europe retained fragments of Aristotleâs logic, while much of the philosophical and scientific corpus was translated and developed in the Syriac Christian and Arabic scholarly worlds. The Abbasid translation movement made Aristotle, Euclid, Galen, and other Greek authors available in Arabic, but the work was not merely translational: it also involved commentary, criticism, and the construction of new philosophical syntheses.
- The Arabic translation movement flourished especially under the Abbasids. Syriac Christian scholars had already translated Greek philosophical and medical works into Syriac, and some of these scholars later participated in Arabic translations. The resulting Arabic tradition also incorporated Neoplatonic works and texts falsely attributed to Aristotle, notably the Theology of Aristotle, an adaptation of parts of Plotinus. See Cristina DâAncona, âGreek Sources in Arabic and Islamic Philosophy,â Stanford Encyclopedia of Philosophy.
-
+
-
- One recurring problem was how philosophical demonstration could be reconciled with Islamic theology. Al-Farabi (c. 872â950) held that truth reaches the philosopher as a proof and everyone else as an image of it, with different nations holding different images of the one truth. Avicenna (980â1037) gave Aristotelian and Neoplatonic materials a systematic philosophical form. Ibn al-Haytham (c. 965â1040) argued, with the aid of experiments, that vision depends on light entering the eye rather than on rays emitted by the eye. Al-Ghazali (1058â1111) denied that fire possesses an independent and necessary power to burn cotton, arguing that what appears as natural causation depends at every occasion on Godâs act. Ibn Rushd (1126â1198) answered that a demonstrated conclusion cannot conflict with a revealed truth, and that apparent conflicts call for a revision of the textual interpretation.
- Al-Ghazali, TahÄfut al-FalÄsifa, discussion 17. The position, termed occasionalism, denies necessary causal efficacy to created things; it need not deny the regular succession of events or the usefulness of ordinary causal descriptions. Its relationship to Humeâs later account of causation is one of resemblance and historical comparison, not simple identity.
-
+
+ Do formal methods belong in computer design?
-
Ibn Rushdâs commentaries, together with other Arabic philosophical works, entered Latin Europe through translators working in Toledo and elsewhere. The Arabic-Latin translation movements transformed several areas of Latin philosophy, including natural philosophy, psychology, metaphysics, logic, and ethics.
- The Arabic-Latin translation movement was not a single return of Greek philosophy through one city or one author. Important translations were made in Toledo, Sicily, southern Italy, and elsewhere. The influence of Arabic philosophy on Latin Europe was especially strong in natural philosophy, psychology, and metaphysics, but it also reached logic and ethics. See Dag Nikolaus Hasse, âInfluence of Arabic and Islamic Philosophy on the Latin West,â Stanford Encyclopedia of Philosophy.
-
+
+ Professor Gonzalez once observed that the primary purpose of computer architecture is to execute the customerâs programs as rapidly as possible. IBM later amended this philosophy to add âfor what they paid for,â famously designing a computer model where performance was artificially restricted unless the customer paid to have a physical hardware jumper removed. Within this prevailing design philosophy, the graceful handling of computational end cases, where most formal theoretical questions arise, is deemed secondary because such cases do not occur frequently in the critical execution path.
+
-
Here the arrangement by date is set aside once, to introduce the question the schoolmen were answering. The specifically medieval form of it was shaped by Porphyryâs Isagoge, an introduction to Aristotleâs Categories. Porphyry famously set aside, for a deeper investigation, the questions of whether genera and species exist in reality or only in thought, whether they are bodies or incorporeal, and whether they exist separately or in sensible things. Boethius then carried these questions into Latin philosophy through two commentaries, and medieval authors spent centuries refining the relations among things, concepts, and the universal terms by which things are named.
- Porphyry, Isagoge, in John Peter Anton and George L. Kustas, eds., Essays in Ancient Greek Philosophy, vol. 2 (Albany: State University of New York Press, 1971), 197â199. Boethius wrote two commentaries on Porphyryâs text, the first based on Marius Victorinusâs translation and the second on his own.
-
+
+ The primary data structure of Lisp is the list, and its programs are designed fundamentally around list traversal. In this sense, the language closely mirrors the pure formal execution of a Turing Machine. Throughout the 1980s, companies such as Symbolics, Lisp Machines Incorporated, Texas Instruments, and Xerox produced computers based on architectures designed specifically to run Lisp natively. However, when Sun Microsystems introduced their workstations, the industry discovered these general-purpose machines were relatively inexpensive and offered higher performance for the exact same Lisp programs. The commercial mandate to execute programs quickly decisively defeated formal architectural purity.
+
-
William of Ockham (c. 1287â1347) gave one of the sharpest late-medieval attempts to dissolve this dialectic. He held that what the many instances of a thing have in common is neither a Form standing above them nor an essence lodged within them, but a sign that stands for all of them.
- William of Ockham, Summa Logicae I.14â17 (c. 1323); in English as Ockhamâs Theory of Terms: Part I of the Summa Logicae, trans. Michael J. Loux (Notre Dame: University of Notre Dame Press, 1974). The fuller critique is in the Ordinatio I d.2 qq.4â8. The position is called nominalism, from nomen, a name. Peter Abelard (1079â1142) reached a non-realist account two centuries earlier, while Ockham gave one of the sharpest and most influential late-medieval statements. Ockhamâs sign is a concept in the soul, with spoken and written words subordinated to it, so the sign he means is nearer the abstraction of section than the representation is.
- Plato places the explanatory model in an intelligible order distinct from sensible particulars, whereas Ockham denies that there is any independently existing universal of that kind to locate. In the language of section , Ockham keeps the representation and the instances below, and empties the layer above.
-
+
+ A counterexample to this trend occurred during the 1980s when two competing floating-point standards emerged. The proposal from DEC allowed for optimally fast computation provided the behavior was well documented. Under this model, the bottom few bits of a computation could be imprecise, and following an interrupt, a program would be required to do diagnostic work to determine the specific instruction that caused the fault. The reasoning was that floating-point computation is approximate by its very nature, and because end-case interrupts occur infrequently, it makes no sense to sacrifice performance on workhorse computations to accelerate rare anomalies.
+
-
Thomas Hobbes (1588â1679) pressed the naturalist argument into the human body. Against the separation of an immaterial mind from an extended body, he treated sensation, imagination, and reasoning as processes belonging to the natural order. Thought, on this account, was not a visitor from a higher realm but something that happened in a body.
- Thomas Hobbes, Leviathan (London, 1651), Introduction and chaps. 1 and 5. In the Introduction Hobbes compares the body to an artificial machine, asking why the heart should not be a spring, the nerves strings, and the joints wheels. In chap. 1 he treats sense as a motion produced in the organ by an external body; in chap. 2 he describes imagination as decaying sense; and in chap. 5 he defines reasoning as a form of reckoning or computation. See also Hobbes, De Corpore (London, 1655), Part I, chap. 1, and Part II on geometry and motion. Hobbesâs materialism does not anticipate a modern computational theory in every detail, but it places bodily sensation, imagination, and reasoning within a natural order rather than assigning them to an immaterial realm.
-
+
+ The competing standard, initially backed by Intel and soon adopted as the IEEE standard, demanded accuracy to the last bit for each operation, alongside synchronized interrupts. This predictable structure permitted a program to overflow, promote the value, and seamlessly continue an operation. It also specified the use of error tags that participate in a higher-order error algebra. This standard ultimately prevailed because its precision guarantees and deterministic predictability provided the necessary foundation for the formal analysis of programs.
+
+ This continuous tension between pure formal models and practical execution speed remains a defining characteristic of the field, driving the structural logic behind modern mechanisms dealing with instruction pipelines, branch prediction, and memory aliasing.
+
-
George Berkeley (1685â1753) attempted to dissolve the dialectic by identifying sensible objects with ideas as perceived, rather than treating perception as a report about some further material thing standing behind them. The world as sensed is therefore a world of perceived ideas, but Berkeley does not reduce reality to a private personâs perceptions: the order of nature is secured by Godâs perception and is not controlled by individual will. When asked what becomes of the furniture in a room when nobody is there, he answered that God perceives it.
- George Berkeley, A Treatise Concerning the Principles of Human Knowledge (Dublin, 1710), §§3 and 6 for the doctrine, §§28â33 and §146 for the argument reaching God, and §48 for the objects that persist unperceived by any man. Put again, and more accessibly, in Three Dialogues between Hylas and Philonous (London, 1713).
-
+
+
-
David Hume (1711â1776) divided all inquiry into relations of ideas and matters of fact. Hume placed mathematical certainty among the relations of ideas while noting that mathematical certainty belongs to intuition and demonstration rather than to empirical observation.
- David Hume, An Enquiry Concerning Human Understanding (London, 1748), §IV part 1.
-
+
+ The dialectic from the Athenian decline to Kant
-
In 1781 Immanuel Kant (1724â1804) placed mathematics within the conditions of human cognition. He argued that space and time are forms of intuition: space is the condition under which geometry is possible, and time is the condition under which arithmetic can be constructed through succession.
- Immanuel Kant, Kritik der reinen Vernunft (Riga: Hartknoch, 1781), Introduction B14âB17 and the Transcendental Aesthetic. Kant does not merely say that mathematics is a private invention. He argues that space and time are forms of intuition, conditions under which objects can be given to us and mathematical cognition can arise.
-
+
gives the short account of what became of the argument between Plato and Aristotle. This appendix gives the long one. It is arranged by date, with one exception noted where it occurs. A reader who accepts the summary loses nothing by skipping it.
-
Kantâs position remained influential until nineteenth-century geometries challenged the identification of Euclidean space with the necessary structure of human intuition. In the 1820s and 1830s, Nikolai Lobachevsky and János Bolyai developed geometries in which Euclidâs parallel postulate fails. In 1868 Eugenio Beltrami constructed a model of Lobachevskian geometry within Euclidean geometry, establishing a relative-consistency result: if the Euclidean background is consistent, then so is the modeled geometry.
- Nikolai Lobachevsky, âOn the Principles of Geometry,â Kazan Messenger (1829â1830); János Bolyai, âAppendix Scientiam Spatii Absolute Veram Exhibens,â published with Farkas Bolyaiâs Tentamen (Maros-Vásárhely, 1832); Eugenio Beltrami, âSaggio di interpretazione della geometria non-euclidea,â Giornale di Matematiche 6 (1868): 284â312. Gauss had reached similar results and published none of them. The historical point is not that non-Euclidean geometry simply refuted Kant, but that it forced philosophers to reconsider what Kantâs claims about mathematical intuition could mean.
- This did not by itself refute Kantâs philosophy, but it made the location of mathematical necessity in human spatial intuition much more difficult to defend.
-
+
As Greek learning passed among late-antique, Syriac, and Arabic-speaking communities, the transmission of Greek philosophy became dispersed rather than simply preserved in one place. Western Europe retained fragments of Aristotleâs logic, while much of the philosophical and scientific corpus was translated and developed in the Syriac Christian and Arabic scholarly worlds. The Abbasid translation movement made Aristotle, Euclid, Galen, and other Greek authors available in Arabic, but the work was not merely translational: it also involved commentary, criticism, and the construction of new philosophical syntheses.
+ The Arabic translation movement flourished especially under the Abbasids. Syriac Christian scholars had already translated Greek philosophical and medical works into Syriac, and some of these scholars later participated in Arabic translations. The resulting Arabic tradition also incorporated Neoplatonic works and texts falsely attributed to Aristotle, notably the Theology of Aristotle, an adaptation of parts of Plotinus. See Cristina DâAncona, âGreek Sources in Arabic and Islamic Philosophy,â Stanford Encyclopedia of Philosophy.
+
-
+
+ One recurring problem was how philosophical demonstration could be reconciled with Islamic theology. Al-Farabi (c. 872â950) held that truth reaches the philosopher as a proof and everyone else as an image of it, with different nations holding different images of the one truth. Avicenna (980â1037) gave Aristotelian and Neoplatonic materials a systematic philosophical form. Ibn al-Haytham (c. 965â1040) argued, with the aid of experiments, that vision depends on light entering the eye rather than on rays emitted by the eye. Al-Ghazali (1058â1111) denied that fire possesses an independent and necessary power to burn cotton, arguing that what appears as natural causation depends at every occasion on Godâs act. Ibn Rushd (1126â1198) answered that a demonstrated conclusion cannot conflict with a revealed truth, and that apparent conflicts call for a revision of the textual interpretation.
+ Al-Ghazali, TahÄfut al-FalÄsifa, discussion 17. The position, termed occasionalism, denies necessary causal efficacy to created things; it need not deny the regular succession of events or the usefulness of ordinary causal descriptions. Its relationship to Humeâs later account of causation is one of resemblance and historical comparison, not simple identity.
+
-
-
- Appendix: Stirling Numbers
+
Ibn Rushdâs commentaries, together with other Arabic philosophical works, entered Latin Europe through translators working in Toledo and elsewhere. The Arabic-Latin translation movements transformed several areas of Latin philosophy, including natural philosophy, psychology, metaphysics, logic, and ethics.
+ The Arabic-Latin translation movement was not a single return of Greek philosophy through one city or one author. Important translations were made in Toledo, Sicily, southern Italy, and elsewhere. The influence of Arabic philosophy on Latin Europe was especially strong in natural philosophy, psychology, and metaphysics, but it also reached logic and ethics. See Dag Nikolaus Hasse, âInfluence of Arabic and Islamic Philosophy on the Latin West,â Stanford Encyclopedia of Philosophy.
+
-
- James Stirling introduced these numbers in his 1730 publication, Methodus Differentialis, a text that directly expanded upon the foundational work laid by Newton.
-
+
Here the arrangement by date is set aside once, to introduce the question the schoolmen were answering. The specifically medieval form of it was shaped by Porphyryâs Isagoge, an introduction to Aristotleâs Categories. Porphyry famously set aside, for a deeper investigation, the questions of whether genera and species exist in reality or only in thought, whether they are bodies or incorporeal, and whether they exist separately or in sensible things. Boethius then carried these questions into Latin philosophy through two commentaries, and medieval authors spent centuries refining the relations among things, concepts, and the universal terms by which things are named.
+ Porphyry, Isagoge, in John Peter Anton and George L. Kustas, eds., Essays in Ancient Greek Philosophy, vol. 2 (Albany: State University of New York Press, 1971), 197â199. Boethius wrote two commentaries on Porphyryâs text, the first based on Marius Victorinusâs translation and the second on his own.
+
-
- The profound utility of Stirling numbers lies in their function as the definitive translation layer between continuous mathematics and discrete mathematics. In the context of the Turing Machine architecture, they are the exact mechanisms that bridge the continuous abstract polynomial with the discrete mechanical steps of the machine.
-
+
William of Ockham (c. 1287â1347) gave one of the sharpest late-medieval attempts to dissolve this dialectic. He held that what the many instances of a thing have in common is neither a Form standing above them nor an essence lodged within them, but a sign that stands for all of them.
+ William of Ockham, Summa Logicae I.14â17 (c. 1323); in English as Ockhamâs Theory of Terms: Part I of the Summa Logicae, trans. Michael J. Loux (Notre Dame: University of Notre Dame Press, 1974). The fuller critique is in the Ordinatio I d.2 qq.4â8. The position is called nominalism, from nomen, a name. Peter Abelard (1079â1142) reached a non-realist account two centuries earlier, while Ockham gave one of the sharpest and most influential late-medieval statements. Ockhamâs sign is a concept in the soul, with spoken and written words subordinated to it, so the sign he means is nearer the abstraction of than the representation is.
+ Plato places the explanatory model in an intelligible order distinct from sensible particulars, whereas Ockham denies that there is any independently existing universal of that kind to locate. In the language of , Ockham keeps the representation and the instances below, and empties the layer above.
+
-
- To understand their mechanical role, a person must look at the mathematical basis used in each domain.
-
+
Thomas Hobbes (1588â1679) pressed the naturalist argument into the human body. Against the separation of an immaterial mind from an extended body, he treated sensation, imagination, and reasoning as processes belonging to the natural order. Thought, on this account, was not a visitor from a higher realm but something that happened in a body.
+ Thomas Hobbes, Leviathan (London, 1651), Introduction and chaps. 1 and 5. In the Introduction Hobbes compares the body to an artificial machine, asking why the heart should not be a spring, the nerves strings, and the joints wheels. In chap. 1 he treats sense as a motion produced in the organ by an external body; in chap. 2 he describes imagination as decaying sense; and in chap. 5 he defines reasoning as a form of reckoning or computation. See also Hobbes, De Corpore (London, 1655), Part I, chap. 1, and Part II on geometry and motion. Hobbesâs materialism does not anticipate a modern computational theory in every detail, but it places bodily sensation, imagination, and reasoning within a natural order rather than assigning them to an immaterial realm.
+
- In continuous calculus, the natural basis for polynomials is standard exponentiation, t^n. The continuous derivative operator, D, interacts beautifully with this basis, dropping the degree by exactly one: D(t^n) = n t^{n - 1}.
+
George Berkeley (1685â1753) attempted to dissolve the dialectic by identifying sensible objects with ideas as perceived, rather than treating perception as a report about some further material thing standing behind them. The world as sensed is therefore a world of perceived ideas, but Berkeley does not reduce reality to a private personâs perceptions: the order of nature is secured by Godâs perception and is not controlled by individual will. When asked what becomes of the furniture in a room when nobody is there, he answered that God perceives it.
+ George Berkeley, A Treatise Concerning the Principles of Human Knowledge (Dublin, 1710), §§3 and 6 for the doctrine, §§28â33 and §146 for the argument reaching God, and §48 for the objects that persist unperceived by any man. Put again, and more accessibly, in Three Dialogues between Hylas and Philonous (London, 1713).
-
- However, in the calculus of finite differences, standard exponents are clumsy. Because the Turing Machine evaluates discrete jumps, the natural basis is the falling factorial, denoted as t^{\underline{n}}:
+
David Hume (1711â1776) divided all inquiry into relations of ideas and matters of fact. Hume placed mathematical certainty among the relations of ideas while noting that mathematical certainty belongs to intuition and demonstration rather than to empirical observation.
+ David Hume, An Enquiry Concerning Human Understanding (London, 1748), §IV part 1.
-
-
-
- t^{\underline{n}} = t(t - 1)(t - 2) ⯠(t - n + 1)
-
- eq: The falling factorial, the natural basis for discrete differences
-
+
In 1781 Immanuel Kant (1724â1804) placed mathematics within the conditions of human cognition. He argued that space and time are forms of intuition: space is the condition under which geometry is possible, and time is the condition under which arithmetic can be constructed through succession.
+ Immanuel Kant, Kritik der reinen Vernunft (Riga: Hartknoch, 1781), Introduction B14âB17 and the Transcendental Aesthetic. Kant does not merely say that mathematics is a private invention. He argues that space and time are forms of intuition, conditions under which objects can be given to us and mathematical cognition can arise.
+
-
- When a person applies the discrete forward difference operator, δ, to a falling factorial, it behaves identically to the continuous derivative: δ(t^{\underline{n}}) = n t^{\underline{n - 1}}.
+
Kantâs position remained influential until nineteenth-century geometries challenged the identification of Euclidean space with the necessary structure of human intuition. In the 1820s and 1830s, Nikolai Lobachevsky and János Bolyai developed geometries in which Euclidâs parallel postulate fails. In 1868 Eugenio Beltrami constructed a model of Lobachevskian geometry within Euclidean geometry, establishing a relative-consistency result: if the Euclidean background is consistent, then so is the modeled geometry.
+ Nikolai Lobachevsky, âOn the Principles of Geometry,â Kazan Messenger (1829â1830); János Bolyai, âAppendix Scientiam Spatii Absolute Veram Exhibens,â published with Farkas Bolyaiâs Tentamen (Maros-Vásárhely, 1832); Eugenio Beltrami, âSaggio di interpretazione della geometria non-euclidea,â Giornale di Matematiche 6 (1868): 284â312. Gauss had reached similar results and published none of them. The historical point is not that non-Euclidean geometry simply refuted Kant, but that it forced philosophers to reconsider what Kantâs claims about mathematical intuition could mean.
+ This did not by itself refute Kantâs philosophy, but it made the location of mathematical necessity in human spatial intuition much more difficult to defend.
-
- Stirling Numbers of the Second Kind, S(n, k)
+
+ Stirling Numbers
- The Stirling numbers of the second kind are the coefficients required to project the continuous basis onto the discrete basis. They express standard powers as a sum of falling factorials:
+ James Stirling introduced these numbers in his 1730 publication, Methodus Differentialis, a text that directly expanded upon the foundational work laid by Newton.
- t^n = \sum_{k=0}^n S(n,k) t^{\underline{k}}
+ The profound utility of Stirling numbers lies in their function as the definitive translation layer between continuous mathematics and discrete mathematics. In the context of the Turing Machine architecture, they are the exact mechanisms that bridge the continuous abstract polynomial with the discrete mechanical steps of the machine.
- In combinatorics, S(n,k) represents the number of distinct ways to partition a set of n items into k non empty subsets.
+ To understand their mechanical role, a person must look at the mathematical basis used in each domain.
-
- In the Turing Machine architecture, the polynomial coefficients a_i represent the abstract continuous function. The initial tape components D_{0, k} represent the discrete physical realization of that function. Because the Turing Machine operates in discrete Integer steps, mapping the abstract polynomial onto the physical tape forces the conversion from standard powers to falling factorials. This is why S(n,k) governs the upper triangular matrix in the preceding lemma.
-
+
+ The Continuous vs. Discrete Basis
-
+
+ In continuous calculus, the natural basis for polynomials is standard exponentiation, t^n. The continuous derivative operator, D, interacts beautifully with this basis, dropping the degree by exactly one: D(t^n) = n t^{n - 1}.
+
-
- Stirling Numbers of the First Kind, s(n, k)
+
+ However, in the calculus of finite differences, standard exponents are clumsy. Because the Turing Machine evaluates discrete jumps, the natural basis is the falling factorial, denoted as t^{\underline{n}}:
+
-
- The signed Stirling numbers of the first kind perform the exact inverse operation. They reconstruct standard continuous powers from falling factorials:
-
+
+ The falling factorial, the natural basis for discrete differences
+
+
+ t^{\underline{n}} = t(t - 1)(t - 2) ⯠(t - n + 1)
+
+
+
-
-
-
- t^{\underline{n}} = \sum_{k=0}^n s(n,k) t^k
-
- eq: The falling factorial expanded over standard powers
-
+
+ When a person applies the discrete forward difference operator, δ, to a falling factorial, it behaves identically to the continuous derivative: δ(t^{\underline{n}}) = n t^{\underline{n - 1}}.
+
-
- Combinatorially, the unsigned magnitude of s(n,k) represents the number of ways to arrange n items into k disjoint cycles. The alternating signs account for the algebraic expansion of the falling factorial terms (t - 1)(t - 2), etc.
-
+
-
- In the context of the quotient machine or the coefficient recovery matrix, taking the inverse of the matrix formed by the second kind inherently generates a matrix composed of the first kind. This provides the direct algorithmic path to extract the continuous polynomial identity from the discrete mechanical state of the tape.
-
+
+ Stirling Numbers of the Second Kind, S(n, k)
-
- They essentially prove that no information is lost when moving a polynomial from the abstract realm into the physical constraints of a stepping machine.
-
-
-
+
+ The Stirling numbers of the second kind are the coefficients required to project the continuous basis onto the discrete basis. They express standard powers as a sum of falling factorials:
+
+
+
+ t^n = \sum_{k=0}^n S(n,k) t^{\underline{k}}
+
+
+
+ In combinatorics, S(n,k) represents the number of distinct ways to partition a set of n items into k non empty subsets.
+
+
+
+ In the Turing Machine architecture, the polynomial coefficients a_i represent the abstract continuous function. The initial tape components D_{0, k} represent the discrete physical realization of that function. Because the Turing Machine operates in discrete Integer steps, mapping the abstract polynomial onto the physical tape forces the conversion from standard powers to falling factorials. This is why S(n,k) governs the upper triangular matrix in the preceding lemma.
+
+
+
+
+
+ Stirling Numbers of the First Kind, s(n, k)
+
+
+ The signed Stirling numbers of the first kind perform the exact inverse operation. They reconstruct standard continuous powers from falling factorials:
+
+
+
+ The falling factorial expanded over standard powers
+
+
+ t^{\underline{n}} = \sum_{k=0}^n s(n,k) t^k
+
+
+
+
+
+ Combinatorially, the unsigned magnitude of s(n,k) represents the number of ways to arrange n items into k disjoint cycles. The alternating signs account for the algebraic expansion of the falling factorial terms (t - 1)(t - 2), etc.
+
+
+
+ In the context of the quotient machine or the coefficient recovery matrix, taking the inverse of the matrix formed by the second kind inherently generates a matrix composed of the first kind. This provides the direct algorithmic path to extract the continuous polynomial identity from the discrete mechanical state of the tape.
+
+
+
+ They essentially prove that no information is lost when moving a polynomial from the abstract realm into the physical constraints of a stepping machine.
+