adds halting proof, acknowedges page swapping
authorThomas Walker Lynch <eknp9n@reasoningtechnology.com>
Fri, 3 Jul 2026 09:48:22 +0000 (09:48 +0000)
committerThomas Walker Lynch <eknp9n@reasoningtechnology.com>
Fri, 3 Jul 2026 09:48:22 +0000 (09:48 +0000)
document/TM-2026.html

index ee99d4b..3ef8d54 100644 (file)
 
       <RT·TOC level="1-2"></RT·TOC>
 
+<RT·article>
+
+      <RT·title author="Thomas Walker Lynch" date="2026-06-01 08:28:00Z" title="TTCA Turing Machine Variation: Chapters 1 8"></RT·title>
+
+      <RT·TOC level="1 2"></RT·TOC>
+
       <RT·chapter>Introduction</RT·chapter>
 
       <p>
-        In 1893 Gottlob Frege published an axiomatic construction of mathematics from set theory. Frege's grand objective was something he called <RT·term>Logicism</RT·term>, the philosophical thesis that all of mathematics can be derived entirely from pure logic. To achieve this, his specific machinery relied upon unrestricted set comprehension, formalized as Basic Law V <RT·endnote>Gottlob Frege, Grundgesetze der Arithmetik, Vol. II, 1903, Appendix (Nachwort), p. 253.</RT·endnote>.
+        In 1893 Gottlob Frege published an axiomatic construction of mathematics from set theory. Frege's grand objective was something he called <RT·term>Logicism</RT·term>, the philosophical thesis that all of mathematics can be derived entirely from pure logic. To bridge set theory and logic, Frege defined sets using a method known as <RT·term>set comprehension</RT·term>. Under this approach, a mathematician states a logical rule or property, and any object satisfying that logical statement automatically becomes a member of the set. Because the membership of a set is determined entirely by logical rules, the resulting sets, and the mathematics built upon them, are derived directly from logic. To implement this, his specific machinery relied upon unrestricted set comprehension, formalized as Basic Law V <RT·endnote>Gottlob Frege, <em>Grundgesetze der Arithmetik</em>, Vol. 2 (Jena: Hermann Pohle, 1903), Appendix (Nachwort), 253.</RT·endnote>.
       </p>
 
       <p>
         At a conference in Paris in 1900, David Hilbert presented a list of pressing unsolved problems in mathematics.
-        Second on his list was "The Compatibility of the Arithmetical Axioms." Hilbert challenged mathematicians to find a means to demonstrate that "a finite number of logical steps based upon them [axioms] can never lead to contradictory results" <RT·endnote>Conference of 1900 printed in English: F.N. Cole et al., eds., Bulletin of the American Mathematical Society, Vol. VIII, The Macmillan Company, 1902. This can be found at https://www.gutenberg.org/cache/epub/71655/pg71655-images.html. The MathWorld article on this subject, https://mathworld.wolfram.com/HilbertsProblems.html, explains that Hilbert presented 10 problems at the conference, though the publication shows 23 problems, and shortly later a 24th problem was added. Based on the notes of this citation, it appears the second problem is the same on all of these lists. Also note, Hilbert discusses <em>completeness</em> specifically as an axiom for bounding on the sets, which appears to be distinct from the question of logical completeness for an axiomatic system.</RT·endnote>. 
+        Second on his list was "The Compatibility of the Arithmetical Axioms." Hilbert challenged mathematicians to find a means to demonstrate that "a finite number of logical steps based upon them [axioms] can never lead to contradictory results" <RT·endnote>F. N. Cole et al., eds., <em>Bulletin of the American Mathematical Society</em>, Vol. 8 (New York: Macmillan, 1902). This can be found at https://www.gutenberg.org/cache/epub/71655/pg71655 images.html. The MathWorld article on this subject, https://mathworld.wolfram.com/HilbertsProblems.html, explains that Hilbert presented 10 problems at the conference, though the publication shows 23 problems, and shortly later a 24th problem was added. Based on the notes of this citation, it appears the second problem is the same on all of these lists. Also note, Hilbert discusses <em>completeness</em> specifically as an axiom for bounding on the sets, which appears to be distinct from the question of logical completeness for an axiomatic system.</RT·endnote>. 
       </p>
 
       <p>
-        In 1901 Bertrand Russell discovered a paradox in Frege's formalism. The paradox Russell pointed out was the well-formed formula that defined the set of all sets that do not contain themselves, and the question of whether such a set contained itself <RT·endnote>Bertrand Russell, The Principles of Mathematics, Cambridge University Press, 1903, Chapter X, 'The Contradiction'</RT·endnote>. Russell communicated this to Frege in a letter dated 1902-06-16, shortly before his second volume was going to print <RT·endnote>Letter from Bertrand Russell to Gottlob Frege, 1902-06-16, reprinted in Jean van Heijenoort, From Frege to Gödel: A Source Book in Mathematical Logic, Harvard University Press, 1967, pp. 124-125.</RT·endnote> <RT·endnote>Gottlob Frege, Grundgesetze der Arithmetik, Vol. II, 1903, Appendix (Nachwort), p. 253. Frege writes: 'Hardly anything more unfortunate can befall a scientific writer than to have one of the foundations of his edifice shaken after the work is finished.'</RT·endnote>. Frege hurriedly authored an appendix (the Nachwort) admitting his system was compromised <RT·endnote>Frege was a quiet, rigid man who had spent decades building his logical fortress in almost total academic obscurity. Frege was personally devastated by Russell's letter. Shortly after, he suffered the loss of his wife, fell into severe depression, and his academic output almost entirely ceased. In 1924, a year before his death, he wrote unpublished diaries explicitly surrendering his life's work, declaring that logicism was a mistake and that mathematics must actually be derived from geometry. Note I. Grattan-Guinness, The Search for Mathematical Roots, 1870-1940, Princeton University Press, 2000. For an analysis of Frege's intellectual decline, personal tragedies, and his unpublished 1924-1925 diaries where he formally surrenders the logicist program, see Chapter 7.</RT·endnote>.
+        In 1901 Bertrand Russell found a well formed set formulation using Frege's set theory that did not correspond to a set. As Frege's work was based on this set theory, this called into question his entire work. Russell pointed out that it was possible to define a set of all sets that do not contain themselves. However this was a paradox, because if said set contained itself, it shouldn't, and if it didn't it should. Thus the formulation failed to define a set because the logical condition cannot be satisfied <RT·endnote>Bertrand Russell, <em>The Principles of Mathematics</em> (Cambridge: Cambridge University Press, 1903), Chapter X, 'The Contradiction'.</RT·endnote>. Russell communicated this to Frege in a letter dated 1902-06-16, shortly before his second volume was going to print <RT·endnote>Bertrand Russell to Gottlob Frege, June 16, 1902, reprinted in Jean van Heijenoort, <em>From Frege to Gödel: A Source Book in Mathematical Logic</em> (Cambridge: Harvard University Press, 1967), 124 125.</RT·endnote> <RT·endnote>Gottlob Frege, <em>Grundgesetze der Arithmetik</em>, Vol. 2 (Jena: Hermann Pohle, 1903), Appendix (Nachwort), 253. Frege writes: 'Hardly anything more unfortunate can befall a scientific writer than to have one of the foundations of his edifice shaken after the work is finished.'</RT·endnote>. Frege hurriedly authored an appendix (the Nachwort) admitting his system was compromised <RT·endnote>Frege was a quiet, rigid man who had spent decades building his logical fortress in almost total academic obscurity. Frege was personally devastated by Russell's letter. Shortly after, he suffered the loss of his wife, fell into severe depression, and his academic output almost entirely ceased. In 1924, a year before his death, he wrote unpublished diaries explicitly surrendering his life's work, declaring that logicism was a mistake and that mathematics must actually be derived from geometry. Note I. Grattan Guinness, <em>The Search for Mathematical Roots, 1870 1940</em> (Princeton: Princeton University Press, 2000). For an analysis of Frege's intellectual decline, personal tragedies, and his unpublished 1924 1925 diaries where he formally surrenders the logicist program, see Chapter 7.</RT·endnote>.
       </p>
 
-
       <p>
-        In 1903 Russell proposed a modification to set theory based on a hierarchy of types to repair this foundational vulnerability. At the base were sets of individuals, then sets based on individuals or sets of individuals, etc. This looks a lot like how types work in modern software <RT·endnote>Bertrand Russell, The Principles of Mathematics, Cambridge University Press, 1903, Appendix B: The Doctrine of Types.</RT·endnote>. In this manner, it is not possible to write a paradoxical set definition. Russell and Alfred North Whitehead then engineered an entirely new, massive architectural scaffolding utilizing this type system to pursue Frege's original objective of deriving mathematics from logic, publishing their results in three volumes between 1910 and 1913 <RT·endnote>Alfred North Whitehead and Bertrand Russell, Principia Mathematica, Cambridge University Press, 1910-1913.</RT·endnote>. Russell's system can be cumbersome due to requiring a large construction step in place of what might have been a simple rule. It is also true that there will be valid sets that could be defined with rules, but cannot be constructed in this manner.
+        In 1903 Russell proposed a modification to set theory based on a hierarchy of types so as to modify and repair set theory. At the base were sets of individuals, then sets based on individuals or sets of individuals, etc. This looks a lot like how types work in modern software <RT·endnote>Bertrand Russell, <em>The Principles of Mathematics</em> (Cambridge: Cambridge University Press, 1903), Appendix B: The Doctrine of Types.</RT·endnote>. In this manner, it is not possible to write a paradoxical set definition. Russell and Alfred North Whitehead then engineered an entirely new, massive scaffolding utilizing this type system to pursue Frege's original objective of deriving mathematics from logic, publishing their results in three volumes between 1910 and 1913 <RT·endnote>Alfred North Whitehead and Bertrand Russell, <em>Principia Mathematica</em> (Cambridge: Cambridge University Press, 1910 1913).</RT·endnote>. Russell's system can be cumbersome due to requiring a large construction to be assembled in place of what otherwise might have been a simple rule.
       </p>
 
       <p>
-        In 1908 Ernst Zermelo published an alternative system designed to avoid the known paradoxical statements of the time, even though absolute consistency remained unproven. In Zermelo's set theory, a mathematician first starts with an existing set, and then applies the Axiom of Separation using definite properties to partition out subsets <RT·endnote>Ernst Zermelo, 'Untersuchungen über die Grundlagen der Mengenlehre I', Mathematische Annalen, Vol. 65, 1908, pp. 261 281.</RT·endnote>. To see how this works, consider the expression <RT·math>\{x \mid P(x)\}</RT·math>. Under unrestricted comprehension, a logician is permitted to define the predicate <RT·math>P(x)</RT·math> as <RT·math>x \notin x</RT·math>. This unrestricted interpretation produces Russell's Paradox, so the set fails to be defined. In contrast, consider the identical predicate evaluated using Zermelo's Axiom of Separation over a predefined set <RT·math>S</RT·math>, written as <RT·math>\dot{R} = \{x \mid x \in S \wedge x \notin x\}</RT·math>. The only thing a person needs to know about <RT·math>S</RT·math> here is that it has already been successfully defined. So let us ask, is <RT·math>\dot{R}</RT·math> in <RT·math>\dot{R}</RT·math>? If we assume <RT·math>\dot{R}</RT·math> is a member of <RT·math>S</RT·math>, evaluating the second term forces the familiar fatal loop: if <RT·math>\dot{R}</RT·math> is in <RT·math>\dot{R}</RT·math>, it shouldn't be, and if it isn't, it should be. However, this contradiction serves as a mathematical proof that our assumption was false. <RT·math>\dot{R}</RT·math> cannot be a member of <RT·math>S</RT·math> because, if it were, the resulting paradox would prevent it from being defined at all. By falling strictly outside the boundaries of <RT·math>S</RT·math>, it avoids the contradiction and remains a valid set. Since it is absent from <RT·math>S</RT·math>, it naturally fails the first term of the condition, <RT·math>x \in S</RT·math>. Thus, <RT·math>\dot{R}</RT·math> is definitively not a member of <RT·math>\dot{R}</RT·math>, and the paradox vanishes. Under the axiom of separation, the generative power resides entirely within the parent set rather than the property. A definite property can only isolate what already exists within those bounds. Consequently, this demonstrates that certain collections definable under unrestricted comprehension lack a valid parent set and therefore cannot be constructed when the axiom of separation is the sole mechanism of definition.
+        In 1908 Ernst Zermelo published an alternative system designed to avoid the known paradoxical statements of the time, even though absolute consistency remained unproven. In Zermelo's set theory, a mathematician first starts with an existing set, and then applies the Axiom of Separation using definite properties to partition out subsets <RT·endnote>Ernst Zermelo, "Untersuchungen über die Grundlagen der Mengenlehre I," <em>Mathematische Annalen</em> 65 (1908): 261 281.</RT·endnote>. To see how this works, consider the expression <RT·math>\{x \mid P(x)\}</RT·math>. Under unrestricted comprehension, a logician is permitted to define the predicate <RT·math>P(x)</RT·math> as <RT·math>x \notin x</RT·math>. This produces Russell's Paradox, so the set fails to be defined. In contrast, consider the same predicate, though restricted by Zermelo's Axiom of Separation over a predefined set <RT·math>S</RT·math>, written as <RT·math>\dot{R} = \{x \mid x \in S \wedge x \notin x\}</RT·math>. The only thing a person needs to know about <RT·math>S</RT·math> here is that it has already been successfully defined. So let us ask, is <RT·math>\dot{R}</RT·math> in <RT·math>\dot{R}</RT·math>? If we assume <RT·math>\dot{R}</RT·math> is a member of <RT·math>S</RT·math>, evaluating the second term forces the familiar fatal loop: if <RT·math>\dot{R}</RT·math> is in <RT·math>\dot{R}</RT·math>, it shouldn't be, and if it isn't, it should be. Thus if we assume that <RT·math>\dot{R}</RT·math> is in <RT·math>S</RT·math>, then <RT·math>\dot{R}</RT·math> can not be defined, but by definition, <RT·math>S</RT·math> is defined, and thus its members are defined. As we arrived at a contradiction, the original assumption must be false, i.e. it is wrong to assume that <RT·math>\dot{R}</RT·math> is in <RT·math>S</RT·math>. As <RT·math>\dot{R}</RT·math> is definitively not a member of <RT·math>\dot{R}</RT·math>, the first term of the set comprehension rule, <RT·math>x \in S</RT·math> is false, and the paradox vanishes.
       </p>
 
       <p>
-        A person might suggest defining <RT·math>S</RT·math> as the set of all definable mathematical objects, forming a universal set. If such a universal set <RT·math>S</RT·math> existed, the Axiom of Separation could be applied using the previous predicate to isolate <RT·math>\dot{R}</RT·math>. Because <RT·math>\dot{R}</RT·math> is a valid, definable set, it must reside within <RT·math>S</RT·math> by the very definition of a universal set. However, the structural logic evaluated earlier proved definitively that <RT·math>\dot{R}</RT·math> cannot be a member of <RT·math>S</RT·math>. The existence of a definable set <RT·math>\dot{R}</RT·math> that sits strictly outside of <RT·math>S</RT·math> contradicts the premise that <RT·math>S</RT·math> contains everything. Therefore, within any system governed by the Axiom of Separation, a universal set cannot exist.
+        A person might suggest defining <RT·math>S</RT·math> as the set of all definable mathematical objects, forming a universal set. If such a universal set <RT·math>S</RT·math> existed, the Axiom of Separation could be applied using the previous predicate to isolate <RT·math>\dot{R}</RT·math>. Because <RT·math>\dot{R}</RT·math> is a valid, definable set, it must reside within <RT·math>S</RT·math> by the very definition of a universal set. However, the logic evaluated earlier proved definitively that <RT·math>\dot{R}</RT·math> cannot be a member of <RT·math>S</RT·math>. The existence of a definable set <RT·math>\dot{R}</RT·math> that sits strictly outside of <RT·math>S</RT·math> contradicts the premise that <RT·math>S</RT·math> contains everything. Therefore, within any system governed by the Axiom of Separation, a universal set cannot exist.
       </p>
 
       <p>
       </p>
 
       <p>
-        In 1928 David Hilbert and Wilhelm Ackermann published a textbook on mathematical logic, Grundzüge der theoretischen Logik <RT·endnote>David Hilbert and Wilhelm Ackermann, Grundzüge der theoretischen Logik, 1928. This first edition has not been translated into English.</RT·endnote>. A feature of this book is its attention to procedures to follow for mechanically determining truth of statements. They called the problem solved by such a procedure the Entscheidungsproblem. In the first chapter they review the procedure for solving the Entscheidungsproblem in the propositional logic. For the first order predicate calculus they define the problem as, "Universal validity concerns the following question: How can one determine, for any given logical expression that contains no individual signs [constants], whether the expression represents a true assertion for arbitrary substitutions for the occurring variables, or not?" <RT·endnote>Ibid pp. 72-73.</RT·endnote>. They review some special cases with solutions, including one published earlier by Ackermann, but then throw down the gauntlet by saying,
-        "A general solution to the Entscheidungsproblem, regardless of whether a person considers the first or the second formulation, is not yet available." <RT·endnote>Ibid p. 81, "Eine allgemeine Lösung des Entscheidungsproblems , mag man nun die erste oder die zweite Fassung nehmen, liegt bis jetzt noch nicht vor."</RT·endnote> <RT·endnote>The term Entscheidungsproblem literally translates to 'decision problem'. However, there are many types of decision problems, and later we will meet a class of Turing Machine programs called deciders, so it appears to be best to keep the original German. As we will see later Alan Turing also did this.</RT·endnote>.
+        In 1928 David Hilbert and Wilhelm Ackermann published a textbook on mathematical logic, Grundzüge der theoretischen Logik <RT·endnote>David Hilbert and Wilhelm Ackermann, <em>Grundzüge der theoretischen Logik</em> (Berlin: Springer, 1928). This first edition has not been translated into English.</RT·endnote>. A feature of this book is its attention to procedures to follow for mechanically determining truth of statements. They called the problem solved by such a procedure the Entscheidungsproblem. In the first chapter they review the procedure for solving the Entscheidungsproblem in the propositional logic. For the first order predicate calculus they define the problem as, "Universal validity concerns the following question: How can one determine, for any given logical expression that contains no individual signs [constants], whether the expression represents a true assertion for arbitrary substitutions for the occurring variables, or not?" <RT·endnote>Ibid., 72 73.</RT·endnote>. They review some special cases with solutions, including one published earlier by Ackermann, but then throw down the gauntlet by saying,
+        "A general solution to the Entscheidungsproblem, regardless of whether a person considers the first or the second formulation, is not yet available." <RT·endnote>Ibid., 81. "Eine allgemeine Lösung des Entscheidungsproblems, mag man nun die erste oder die zweite Fassung nehmen, liegt bis jetzt noch nicht vor."</RT·endnote> <RT·endnote>The term Entscheidungsproblem literally translates to 'decision problem'. However, there are many types of decision problems, and later we will meet a class of Turing Machine programs called deciders, so it appears to be best to keep the original German. As we will see later Alan Turing also did this.</RT·endnote>.
+      </p>
+
+      <p>
+        In 1931 Kurt Gödel published his incompleteness theorems <RT·endnote>Kurt Gödel, "Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I," <em>Monatshefte für Mathematik und Physik</em> 38 (1931): 173 198.</RT·endnote>. By mapping formal logic into arithmetic, he demonstrated that any consistent formal system sufficiently powerful to perform basic arithmetic, let us call it system <RT·math>S</RT·math>, will inevitably contain well formed formulas that are mathematically true yet cannot be proven within the system itself <RT·endnote>For the definitive English translation, see Jean van Heijenoort, <em>From Frege to Gödel: A Source Book in Mathematical Logic, 1879 1931</em> (Cambridge: Harvard University Press, 1967), 596 616.</RT·endnote>. Gödel achieved this by engineering a specific formula that evaluates to the claim: "<RT·math>G</RT·math>: There exists no sequence of valid logical steps within system <RT·math>S</RT·math> that proves <RT·math>G</RT·math>." If system <RT·math>S</RT·math> is consistent, it cannot output a proof for <RT·math>G</RT·math>; thus, the claim <RT·math>G</RT·math> makes is factually accurate, rendering it true but mechanically unprovable. Furthermore, Gödel demonstrated that system <RT·math>S</RT·math> cannot output a proof of its own consistency. This result fractured David Hilbert's 1900 vision of utilizing a weaker, strictly "finitistic" logical subsystem to definitively prove that the axioms of arithmetic are entirely free of contradictions <RT·endnote>David Hilbert, "Mathematical Problems," <em>Bulletin of the American Mathematical Society</em> 8 (1902): 437 479.</RT·endnote>. If the full, powerful system <RT·math>S</RT·math> physically lacks the mechanical capacity to verify its own consistency, Hilbert's weaker finitistic subsystem is definitively incapable of accomplishing the task. Gödel's work establishes a hard mechanical boundary, asserting that truth and provability are distinct concepts in classical mathematics.
+      </p>
+
+      <p>
+        In April 1936, Alonzo Church leveraged Gödel's foundational papers to directly answer the Entscheidungsproblem <RT·endnote>Alonzo Church, "An Unsolvable Problem of Elementary Number Theory," <em>American Journal of Mathematics</em> 58, no. 2 (April 1936): 345 363.</RT·endnote>. Working independently, Alan Turing had arrived at his own mechanical solution, and upon seeing Church's April publication, Turing rushed to submit his manuscript on 28 May 1936, appending a proof that his mechanical architecture was mathematically equivalent to Church's lambda calculus <RT·endnote>Alan M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem," <em>Proceedings of the London Mathematical Society</em> s2 42, no. 1 (1936): 230 265. Received May 28, 1936, published November 30, 1936.</RT·endnote>. As Hilbert and Ackermann concede in the 1938 second edition of their textbook, Church's results demonstrated that "the quest for a general solution of the decision problem must be regarded as hopeless" <RT·endnote>David Hilbert and Wilhelm Ackermann, <em>Principles of Mathematical Logic</em>, 2nd ed. (New York: Chelsea Publishing Company, 1950), 124.</RT·endnote>. By giving the "somewhat vague intuitive concept of recursion a certain precise formalization," Church proved the "non existence of such a recursive procedure" that could mechanically yield a value of truth or falsehood for every individual formula <RT·endnote>Ibid., 124.</RT·endnote>.
       </p>
 
+
       <p>
-        In 1931 Kurt Gödel published his incompleteness theorems <RT·endnote>Kurt Gödel, 'Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I', Monatshefte für Mathematik und Physik, Vol. 38, 1931, pp. 173-198.</RT·endnote>. By mapping formal logic into arithmetic, he demonstrated that any consistent formal system sufficiently powerful to perform basic arithmetic, let us call it system $S$, will inevitably contain well-formed formulas that are mathematically true yet cannot be proven within the system itself <RT·endnote>For the definitive English translation, see Jean van Heijenoort, From Frege to Gödel: A Source Book in Mathematical Logic, 1879-1931, Harvard University Press, 1967, pp. 596-616.</RT·endnote>. Gödel achieved this by engineering a specific formula that evaluates to the claim: "$G$: There exists no sequence of valid logical steps within system $S$ that proves $G$." If system $S$ is consistent, it cannot output a proof for $G$; thus, the claim $G$ makes is factually accurate, rendering it true but mechanically unprovable. Furthermore, Gödel demonstrated that system $S$ cannot output a proof of its own consistency. This result fractured David Hilbert's 1900 vision of utilizing a weaker, strictly "finitistic" logical subsystem to definitively prove that the axioms of arithmetic are entirely free of contradictions <RT·endnote>David Hilbert, 'Mathematical Problems', Bulletin of the American Mathematical Society, Vol. 8, 1902, pp. 437-479.</RT·endnote>. If the full, powerful system $S$ physically lacks the mechanical capacity to verify its own consistency, Hilbert's weaker finitistic subsystem is definitively incapable of accomplishing the task. Gödel's work established a hard mechanical boundary, asserting that truth and provability are distinct concepts in classical mathematics.
+        Alan Turing used an abstraction of a computing machine, also described as a clerk working at a desk with pen and squares on paper while following a procedure, to prove that no primary 'analyzer' program can universally decide whether a second 'studied' program will halt when it is run <RT·endnote>Alan M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem," <em>Proceedings of the London Mathematical Society</em> s2 42, no. 1 (1936): 230 265.</RT·endnote>. An answer to this <RT·term>halting problem</RT·term> (specifically asserting "The studied machine halts" or "The studied machine does not halt") would indeed be a statement in first order logic. Thus, by showing no analyzer can universally make such a determination, Turing proved that no decider could exist for the Entscheidungsproblem.
       </p>
 
+
       <p>
-        In April 1936, Alonzo Church leveraged Gödel's foundational papers to directly answer the Entscheidungsproblem <RT·endnote>Alonzo Church, 'An Unsolvable Problem of Elementary Number Theory', American Journal of Mathematics, Vol. 58, No. 2, April 1936, pp. 345-363.</RT·endnote>. Working independently, Alan Turing had arrived at his own mechanical solution, and upon seeing Church's April publication, Turing rushed to submit his manuscript on 28 May 1936, appending a proof that his mechanical architecture was mathematically equivalent to Church's lambda calculus <RT·endnote>Alan M. Turing, 'On Computable Numbers, with an Application to the Entscheidungsproblem', Proceedings of the London Mathematical Society, Vol. s2-42, No. 1, received May 28, 1936, published November 30, 1936, pp. 230-265.</RT·endnote>. As Hilbert and Ackermann concede in the 1938 second edition of their textbook, Church's results demonstrated that "the quest for a general solution of the decision problem must be regarded as hopeless" <RT·endnote>David Hilbert and Wilhelm Ackermann, Principles of Mathematical Logic, Second Edition (1938), translated 1950, p. 124.</RT·endnote>. By giving the "somewhat vague intuitive concept of recursion a certain precise formalization," Church proved the "non-existence of such a recursive procedure" that could mechanically yield a value of truth or falsehood for every individual formula <RT·endnote>Ibid, p. 124.</RT·endnote>.
+        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 <RT·endnote>Christopher Strachey, "An Impossible Program," <em>The Computer Journal</em> 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."</RT·endnote>. To begin the proof, assume a person builds a perfect decider program, <RT·math>H(p, i)</RT·math>, that evaluates any given program <RT·math>p</RT·math> executing with input <RT·math>i</RT·math>, then outputs 'Y' if <RT·math>p(i)</RT·math> halts, and 'N' if it does not halt. Next, a person writes a malicious program, <RT·math>M(x)</RT·math>, that incorporates <RT·math>H</RT·math> as a subroutine. When <RT·math>M</RT·math> receives an input program <RT·math>x</RT·math>, it evaluates <RT·math>H(x, x)</RT·math> to determine how program <RT·math>x</RT·math> behaves when given itself as input. If <RT·math>H(x, x)</RT·math> outputs 'Y', <RT·math>M</RT·math> enters an infinite loop; if <RT·math>H(x, x)</RT·math> outputs 'N', <RT·math>M</RT·math> immediately halts.
       </p>
 
+      <RT·code>
+        M(x){
+          if(H(x ,x) == 'Y') while(true);
+          else if(H(x ,x) == 'N') return;
+        }
+      </RT·code>
+
       <p>
-        Alan Turing used an abstraction of a computing machine, also described as a clerk working at a desk with pen and squares on paper while following a procedure, to prove that no primary 'analyzer' program can universally decide whether a second 'studied' program will halt when it is run <RT·endnote>Alan M. Turing, 'On Computable Numbers, with an Application to the Entscheidungsproblem', Proceedings of the London Mathematical Society, Vol. s2-42, No. 1, 1936, pp. 230-265.</RT·endnote>. An answer to this <RT·term>halting problem</RT·term> (specifically asserting "The studied machine halts" or "The studied machine does not halt") would indeed be a statement in first-order logic. Thus, by showing no analyzer can universally make such a determination without entering an infinite recursion, Turing proved that no decider could exist for the Entscheidungsproblem.
+        The evil part occurs when we give program <RT·math>M(x)</RT·math> itself as input, <RT·math>M(M)</RT·math>. Program <RT·math>M</RT·math> calls its subroutine and asks <RT·math>H(M, M)</RT·math> what <RT·math>M</RT·math> will do. If <RT·math>H</RT·math> outputs 'Y', it is wrong, because <RT·math>M</RT·math> loops infinitely. If <RT·math>H</RT·math> outputs 'N', then it is wrong, because <RT·math>M</RT·math> halts. The decider <RT·math>H</RT·math> is forced into an inescapable failure, proving that no universal decider can exist.
       </p>
 
       <p>
-        While Gödel, Church, and Turing established the primary boundaries of computation, they did not work in a vacuum. During this period, the broader academic community worked to synthesize the definitive mechanics of effective calculability. Jacques Herbrand and Gödel formalized general recursive functions between 1931 and 1934 <RT·endnote>Kurt Gödel, 'On Undecidable Propositions of Formal Mathematical Systems', mimeographed lecture notes, Institute for Advanced Study, Princeton, 1934.</RT·endnote>. Emil Post independently defined "Finite Combinatory Processes" in 1936, outlining a theoretical architecture functionally identical to Turing's model <RT·endnote>Emil L. Post, 'Finite Combinatory Processes-Formulation 1', The Journal of Symbolic Logic, Vol. 1, No. 3, September 1936, pp. 103-105.</RT·endnote>. Stephen Kleene subsequently unified these disparate threads, proving the strict mathematical equivalence of Church's lambda calculus, Herbrand-Gödel recursive functions, and Turing's mechanical architectures <RT·endnote>Stephen C. Kleene, 'General Recursive Functions of Natural Numbers', Mathematische Annalen, Vol. 112, 1936, pp. 727-742.</RT·endnote>.
+        While Gödel, Church, and Turing established the primary boundaries of computation, they did not work in a vacuum. During this period, the broader academic community worked to synthesize the definitive mechanics of effective calculability. Jacques Herbrand and Gödel formalized general recursive functions between 1931 and 1934 <RT·endnote>Kurt Gödel, "On Undecidable Propositions of Formal Mathematical Systems," mimeographed lecture notes, Institute for Advanced Study, Princeton, 1934.</RT·endnote>. Emil Post independently defined "Finite Combinatory Processes" in 1936, outlining a theoretical architecture functionally identical to Turing's model <RT·endnote>Emil L. Post, "Finite Combinatory Processes Formulation 1," <em>The Journal of Symbolic Logic</em> 1, no. 3 (September 1936): 103 105.</RT·endnote>. Stephen Kleene subsequently unified these disparate threads, proving the strict mathematical equivalence of Church's lambda calculus, Herbrand Gödel recursive functions, and Turing's mechanical architectures <RT·endnote>Stephen C. Kleene, "General Recursive Functions of Natural Numbers," <em>Mathematische Annalen</em> 112 (1936): 727 742.</RT·endnote>.
       </p>
 
       <p>
-        The academic community was thus equipped with three mathematically equivalent foundations for computation theory: recursive functions, the lambda calculus, and the Turing Machine. While all three frameworks remain active subjects of study, Turing's model is unique in providing practical intuition through the abstraction of physical machines and programs. This made it the foundation of choice for computation theory textbooks by Stephen Kleene <RT·endnote>Stephen C. Kleene, Introduction to Metamathematics, North-Holland, 1952</RT·endnote>, Martin Davis <RT·endnote>Martin Davis, Computability and Unsolvability, McGraw-Hill, 1958</RT·endnote>, and Marvin Minsky <RT·endnote>Marvin L. Minsky, Computation: Finite and Infinite Machines, Prentice-Hall, 1967</RT·endnote>, leading to the modern standard presentations by authors such as John Hopcroft and Jeffrey Ullman <RT·endnote>John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, 1979</RT·endnote>, as well as Harry Lewis and Christos Papadimitriou <RT·endnote>Harry R. Lewis and Christos H. Papadimitriou, Elements of the Theory of Computation, Prentice-Hall, 1981, ISBN 978-0132624787</RT·endnote>.
+        The academic community was thus equipped with three mathematically equivalent foundations for computation theory: recursive functions, the lambda calculus, and the Turing Machine. While all three frameworks remain active subjects of study, Turing's model is unique in providing practical intuition through the abstraction of physical machines and programs. This made it the foundation of choice for computation theory textbooks by Stephen Kleene <RT·endnote>Stephen C. Kleene, <em>Introduction to Metamathematics</em> (Amsterdam: North Holland, 1952).</RT·endnote>, Martin Davis <RT·endnote>Martin Davis, <em>Computability and Unsolvability</em> (New York: McGraw Hill, 1958).</RT·endnote>, and Marvin Minsky <RT·endnote>Marvin L. Minsky, <em>Computation: Finite and Infinite Machines</em> (Englewood Cliffs: Prentice Hall, 1967).</RT·endnote>, leading to the modern standard presentations by authors such as John Hopcroft and Jeffrey Ullman <RT·endnote>John E. Hopcroft and Jeffrey D. Ullman, <em>Introduction to Automata Theory, Languages, and Computation</em> (Reading: Addison Wesley, 1979).</RT·endnote>, as well as Harry Lewis and Christos Papadimitriou <RT·endnote>Harry R. Lewis and Christos H. Papadimitriou, <em>Elements of the Theory of Computation</em> (Englewood Cliffs: Prentice Hall, 1981).</RT·endnote>.
       </p>
 
       <p>
-        To definitively apply his proof to the Entscheidungsproblem, Turing carried the additional burden of establishing that Hilbert and Ackermann's intuitive concept of an effective <RT·term-em>procedure</RT·term-em> was functionally equivalent to a Turing Machine program. Turing addressed this issue directly in his 1936 paper. Over the following decades, the academic community evaluated and accepted his argument, cementing what is now known as the Church-Turing Thesis. This consensus supplied the necessary bridge between mathematics and modern computer science by formally equating the vague, historical notion of a human procedure with the rigorous, mechanical definition of an <RT·term>algorithm</RT·term>.
+        To definitively apply his proof to the Entscheidungsproblem, Turing carried the additional burden of establishing that Hilbert and Ackermann's intuitive concept of an effective <RT·term em>procedure</RT·term em> was functionally equivalent to a Turing Machine program. Turing addressed this issue directly in his 1936 paper. Over the following decades, the academic community evaluated and accepted his argument, cementing what is now known as the Church Turing Thesis. This consensus supplied the necessary bridge between mathematics and modern computer science by formally equating the vague, historical notion of a human procedure with the rigorous, mechanical definition of an <RT·term>algorithm</RT·term>.
       </p>
 
       <p>
-        For Turing's purposes working on the Entscheidungsproblem, establishing functional equivalence between algorithms and Turing Machine programs was sufficient. However, when the Turing Machine serves as a foundational model for computation theory, we are led to ask another question: whether the Turing Machine is representative of modern architectures, and to the extent it differs, how this would affect the applicability of computation-theoretic results.
+        For Turing's purposes working on the Entscheidungsproblem, establishing functional equivalence between algorithms and Turing Machine programs was sufficient. However, when the Turing Machine serves as a foundational model for computation theory, we are led to ask another question: whether the Turing Machine is representative of modern architectures, and to the extent it differs, how this would affect the applicability of computation theoretic results.
       </p>
 
       <p>
         In reading Alan Turing's 1936 paper, it is striking how modern the text feels, specifically because he discusses algorithms, stored programs, and the mechanical limits of computation. 
-      While his contemporaries largely built purely mathematical and logical frameworks, Turing uniquely tied computation theory directly to the abstraction of machines executing stored programs. Because physical hardware capable of executing stored memory programs had not yet been invented, this explicit architectural grounding makes Turing's work remarkably prescient. Still, Turing could not formally connect the Turing Machine to modern architectures, simply because those architectures did not yet exist. Here, by <em>modern</em>, I refer to architectures utilizing random-access system memory, dedicated instruction fetch streams with dynamic branching, and discrete processing units. Though Charles Babbage's 1842 Analytical Engine touched on these concepts, they would wait until the 1940s to reemerge. The practical engineering context of 1936 was limited to calculating machines programmed via patch panels. Hence, for example, there is no explanation in his paper as to why a von Neumann architecture machine (1945) running a program would exhibit the computation-theoretic results derived from a computation theory based on the Turing Machine (1936).
+      While his contemporaries largely built purely mathematical and logical frameworks, Turing uniquely tied computation theory directly to the abstraction of machines executing stored programs. Because physical hardware capable of executing stored memory programs had not yet been invented, this explicit architectural grounding makes Turing's work remarkably prescient. Still, Turing could not formally connect the Turing Machine to modern architectures, simply because those architectures did not yet exist. Here, by <em>modern</em>, I refer to architectures utilizing random access system memory, dedicated instruction fetch streams with dynamic branching, and discrete processing units. Though Charles Babbage's 1842 Analytical Engine touched on these concepts, they would wait until the 1940s to reemerge. The practical engineering context of 1936 was limited to calculating machines programmed via patch panels. Hence, for example, there is no explanation in his paper as to why a von Neumann architecture machine (1945) running a program would exhibit the computation theoretic results derived from a computation theory based on the Turing Machine (1936).
       </p>
 
       <p>
-      To establish the missing connection to modern architecture, the volumes of the TTCA, starting in the following chapters, transform the Turing Machine into a modern architecture in a stepwise fashion, while ensuring that at each step the modifications are inconsequential to computation-theoretic existence proofs and complexity class results. We do run into some problems, so the architecture we derive will be a little different from those we currently build.
+      To establish the missing connection to modern architecture, the volumes of the TTCA, starting in the following chapters, transform the Turing Machine into a modern architecture in a stepwise fashion, while ensuring that at each step the modifications are inconsequential to computation theoretic existence proofs and complexity class results. We do run into some problems, so the architecture we derive will be a little different from those we currently build.
       </p>
 
       <p>
       </p>
 
       <p>
-        In 1967, Marvin Minsky addressed this very topic in saying: "We need not think of the machine's tape as infinite. We imagine instead that the machine begins with a finite tape, but that, whenever an end is encountered, another unit of tape is attached." <RT·endnote>Marvin L. Minsky, Computation: Finite and Infinite Machines, Prentice Hall, 1967, p. 167</RT·endnote> In 1967, this was a perfectly natural thing to suggest, as computers utilized magnetic tape memory on manually mounted reels, and it was entirely possible for a computation to stop and request a new reel of tape to be mounted. Contemporary computer architectures could attempt to achieve similar effects by swapping memory pages out to ever-expanding pools of networked auxiliary storage. However, if they did this, they would eventually reach an address space depleted fault. In practice, once local storage is depleted, the operating system abruptly terminates the process rather than pausing to autonomously provision additional capacity. 
+        In 1967, Marvin Minsky addressed this very topic in saying: "We need not think of the machine's tape as infinite. We imagine instead that the machine begins with a finite tape, but that, whenever an end is encountered, another unit of tape is attached." <RT·endnote>Marvin L. Minsky, <em>Computation: Finite and Infinite Machines</em> (Englewood Cliffs: Prentice Hall, 1967), 167.</RT·endnote> In 1967, this was a perfectly natural thing to suggest, as computers utilized magnetic tape memory on manually mounted reels, and it was entirely possible for a computation to stop and request a new reel of tape to be mounted. Contemporary computer architectures do, in fact, achieve a similar effect through virtual memory. When physical RAM is depleted, the operating system pauses the active process and autonomously provisions apparent capacity by swapping memory pages out to auxiliary storage. However, this illusion of infinite tape remains bound by the physical limits of the secondary storage and the boundaries of the processor's address space. Once the available swap space is exhausted or the address space is saturated, the operating system abruptly terminates the process.
       </p>
 
       <p>
-        Like a Turing Machine, a computer architecture is an abstraction. The box sitting on a person's desk is a realization of some computer architecture. To say a Turing Machine does something is to say that the Turing Machine was analyzed and the result of the analysis is that 'something'. A computer architecture can also be analyzed. A computer architecture is said to be Turing Complete when through analysis it is determined that it can do anything that a Turing Machine can do. The practical implications for a realization of a computer architecture is that a running program will only throw an error because a) the program logic told it to, b) the program has a flaw, or c) there is a mathematical fact standing in the way of execution. It is tolerable to call a computer architecture Turing Complete if it has the built-in ability to pause a program until a 'more memory' request is fulfilled. If there can be any other errors from a realization running a program, such as running out of address space or integer overflow, then the architecture is not Turing Complete.
+        Like a Turing Machine, a computer architecture is an abstraction. The box sitting on a person's desk is a realization of some computer architecture. To say a Turing Machine does something is to say that the Turing Machine was analyzed and the result of the analysis is that 'something'. A computer architecture can also be analyzed. A computer architecture is said to be Turing Complete when through analysis it is determined that it can do anything that a Turing Machine can do. The practical implications for a realization of a computer architecture is that a running program will only throw an error because a) the program logic told it to, b) the program has a flaw, or c) there is a mathematical fact standing in the way of execution. It is tolerable to call a computer architecture Turing Complete if it has the built in ability to pause a program until a 'more memory' request is fulfilled. If there can be any other errors from a realization running a program, such as running out of address space or integer overflow, then the architecture is not Turing Complete.
       </p>
 
       <p>
-        Turing's <RT·term>a-machine</RT·term> from his 1936 paper utilizes binary. George Boole's work (1847, 1854) was well established by then, so from a theoretical standpoint, it was a sensible simplification. However, utilizing binary within the context of a machine description effectively bridged the gap to the more practically minded engineers of the time. Alan Turing's paper arrived at the same time that switched telephone networks had reached a scale that made them difficult to maintain without systematic approaches. These networks were built upon electromechanical relays, which were decisively binary devices. At least seven men in addition to Alan Turing appear to have independently contemplated the intersection of Boolean algebra, logic, and physical computing: Victor Shestakov (1935, proposed mapping Boolean algebra to electromechanical relay circuits), Konrad Zuse (1936, adopted base 2 architecture to bypass the physical complexity of decimal mechanical gears), Akira Nakashima (1936, published the mathematical equivalence of Boolean algebra and two-terminal switching networks), Louis Couffignal (1936, proved calculating machines must shift to binary linkages to reduce physical friction), Claude Shannon (1937, published the definitive mathematical proof mapping Boolean algebra to electrical relays), George Stibitz (1937, constructed the first electromechanical binary adder), and John Vincent Atanasoff (1937, adopted binary to keep the vacuum tube count of electronic circuits physically viable).
+        Turing's <RT·term>a machine</RT·term> from his 1936 paper utilizes binary. George Boole's work (1847, 1854) was well established by then, so from a theoretical standpoint, it was a sensible simplification. However, utilizing binary within the context of a machine description effectively bridged the gap to the more practically minded engineers of the time. Alan Turing's paper arrived at the same time that switched telephone networks had reached a scale that made them difficult to maintain without systematic approaches. These networks were built upon electromechanical relays, which were decisively binary devices. At least seven men in addition to Alan Turing appear to have independently contemplated the intersection of Boolean algebra, logic, and physical computing: Victor Shestakov (1935, proposed mapping Boolean algebra to electromechanical relay circuits), Konrad Zuse (1936, adopted base 2 architecture to bypass the physical complexity of decimal mechanical gears), Akira Nakashima (1936, published the mathematical equivalence of Boolean algebra and two terminal switching networks), Louis Couffignal (1936, proved calculating machines must shift to binary linkages to reduce physical friction), Claude Shannon (1937, published the definitive mathematical proof mapping Boolean algebra to electrical relays), George Stibitz (1937, constructed the first electromechanical binary adder), and John Vincent Atanasoff (1937, adopted binary to keep the vacuum tube count of electronic circuits physically viable).
       </p>
 
       <RT·chapter>The computer design abstraction stack</RT·chapter>