This document refutes Alan Turing’s 1936 proof of the undecidability of
the halting problem, as presented in “On Computable Numbers, with an Application to the Entscheidungsproblem” (Proceedings of the London Mathematical Society, 1936), by leveraging the assumption that self- referential conflation of a halt decider and its input constitutes a
category (type) error. The refutation argues that Turing’s proof, which relies on a self-referential construction, is invalid in a typed system
where such conflation is prohibited.
---
1. Turing’s 1936 Halting Problem Proof
Turing’s proof demonstrates that no general algorithm (Turing machine) can decide whether an arbitrary Turing machine halts on a given input. The
proof proceeds as follows:
- Assume a universal Turing machine U that can simulate any Turing machine
M on input w.
- Assume a halt decider H, a Turing machine that takes as input the description of a Turing machine M (denoted <M>) and an input w, and
outputs:
- 1 if M halts on w.
- 0 if M does not halt on w.
Thus, H(<M>, w) determines whether M halts on w.
- Construct a Turing machine D (the “diagonal” machine) defined as:
- D takes as input the description of a Turing machine <M>.
- D runs H(<M>, <M>), i.e., it checks whether M halts when given its own description as input.
- If H(<M>, <M>) = 1 (M halts on <M>), D enters an infinite loop (does
not halt).
- If H(<M>, <M>) = 0 (M does not halt on <M>), D halts.
- Apply D to its own description, i.e., evaluate D(<D>):
- If H(<D>, <D>) = 1 (D halts on <D>), D loops infinitely (does not
halt).
- If H(<D>, <D>) = 0 (D does not halt on <D>), D halts.
- This creates a contradiction: H’s output about D’s halting behavior leads to the opposite behavior, implying that H cannot exist for all
Turing machines and inputs.
- Therefore, the halting problem is undecidable, as no such H can consistently determine halting for all cases.
Turing’s proof relies on self-reference, where D is defined in terms of H’s evaluation of D’s own description, leading to the diagonalization contradiction.
---
2. Assumption: Self-Referential Conflation as a Type Error
The refutation assumes that the self-referential construction in Turing’s proof—specifically, the evaluation H(<D>, <D>), where D calls H with its own description as input—constitutes a category (type) error.
A type error
occurs when an operation is applied to arguments of an inappropriate type, resulting in undefined or invalid behavior.
Here, conflating the halt
decider H with its input <D> (by allowing D to embed a call to H(<D>,
<D>)) is argued to violate type constraints, rendering D an ill-formed
Turing machine.
---
3. Refutation
The refutation demonstrates that Turing’s proof is invalid in a typed computational model because the self-referential machine D is ill-formed
due to a type error, undermining the contradiction.
3.1. Type System
In a typed computational framework, the halt decider H can be assigned a
type signature:
H: (TM_Description, Input) → {0, 1}
where:
- TM_Description is the type of valid Turing machine descriptions (e.g., encoded as strings or Gödel numbers).
- Input is the type of inputs accepted by the Turing machine.
- The output {0, 1} indicates whether the machine halts (1) or does not
halt (0).
The machine D, which takes a Turing machine description <M> and calls
H(<M>, <M>), must itself be a valid Turing machine with a description <D>
of type TM_Description. For H(<D>, <D>) to be well-typed, <D> must be a
fully defined TM_Description.
3.2. Self-Reference as a Type Error
In Turing’s construction, D is defined such that it calls H(<D>, <D>), meaning D’s behavior depends on H’s evaluation of D’s own description. This self-reference introduces a circular dependency:
- D’s description <D> must be well-defined for H(<D>, <D>) to be a valid computation.
- However, D’s definition includes the call to H(<D>, <D>), meaning <D> is not fully defined until H’s computation is resolved.
- This circularity creates a type error in a strict type system, as D’s type (TM_Description) cannot be resolved without evaluating H(<D>, <D>), which in turn requires a complete <D>.
In typed systems (e.g., typed lambda calculus or modern programming languages), such self-referential definitions are often rejected at the type-checking stage. For example, a program that uses its own source code
as an argument in a recursive manner may fail type checking if the type system prohibits unresolved recursive dependencies. Thus, D is not a well- formed Turing machine in a typed framework, as its description is invalid
due to the self-referential conflation.
3.3. Impact on Turing’s Proof
Turing’s proof assumes that D is a valid Turing machine whose description
<D> can be passed to H. If H(<D>, <D>) constitutes a type error, then D is
not a well-formed Turing machine, and the evaluation D(<D>) is undefined.
The contradiction derived from analyzing D’s behavior—halting if and only if it does not halt—relies on D being a legitimate machine. Since D is illformed due to the type error, the contradiction does not hold, and the proof fails to demonstrate that H cannot exist.
3.4. Implications
By classifying self-referential constructions like D as type errors, the proof’s generality is undermined. If self-referential Turing machines are excluded from the set of valid machines due to type constraints, then H
might exist for non-self-referential machines in a typed system. This suggests that Turing’s proof does not establish the undecidability of the halting problem in computational models where self-reference is restricted
by type discipline.
3.5. Critical Examination
- Counterargument: Turing’s proof operates in the untyped domain of Turing machines, where any string can represent a valid machine description, including self-referential ones like <D>. Type errors are irrelevant in
this context, and D is a legitimate construction.
- Response: While Turing machines are untyped, the assumption of a type
error can be applied by imposing a type discipline on the model of computation. For example, in typed computational frameworks (e.g., typed lambda calculus or formal systems with type safety), self-referential definitions are restricted to ensure well-formedness. By reinterpreting Turing’s proof in such a framework, H(<D>, <D>) is flagged as a type
error, rendering D invalid and the proof unsound.
- Limitation: This refutation specifically targets Turing’s
diagonalization argument and does not negate the undecidability of the halting problem in general. Other proofs, such as those based on
reductions to other undecidable problems (e.g., the Post correspondence problem), may avoid self-referential constructions and remain unaffected. Additionally, the halting problem’s undecidability is well-established in untyped systems, so the refutation is limited to typed contexts.
---
4. Conclusion
Based on the assumption that self-referential conflation of a halt decider and its input is a category (type) error, Turing’s 1936 proof of the halting problem’s undecidability is refuted in a typed computational framework. The diagonal machine D is ill-formed due to the type error in H(<D>, <D>), as its self-referential definition violates type constraints. Since the proof’s contradiction depends on D being a valid Turing machine, the type error invalidates the argument. This refutation highlights the significance of type systems in computational theory and suggests that Turing’s proof does not hold in typed contexts where self-reference is prohibited. However, it does not challenge the broader undecidability of
the halting problem in untyped systems or via alternative proofs.
This document refutes Alan Turing’s 1936 proof of the undecidability of
the halting problem, as presented in “On Computable Numbers, with an Application to the Entscheidungsproblem” (Proceedings of the London Mathematical Society, 1936), by leveraging the assumption that self- referential conflation of a halt decider and its input constitutes a
category (type) error. The refutation argues that Turing’s proof, which relies on a self-referential construction, is invalid in a typed system
where such conflation is prohibited.
---
1. Turing’s 1936 Halting Problem Proof
Turing’s proof demonstrates that no general algorithm (Turing machine) can decide whether an arbitrary Turing machine halts on a given input. The
proof proceeds as follows:
- Assume a universal Turing machine U that can simulate any Turing machine
M on input w.
- Assume a halt decider H, a Turing machine that takes as input the description of a Turing machine M (denoted <M>) and an input w, and
outputs:
- 1 if M halts on w.
- 0 if M does not halt on w.
Thus, H(<M>, w) determines whether M halts on w.
- Construct a Turing machine D (the “diagonal” machine) defined as:
- D takes as input the description of a Turing machine <M>.
- D runs H(<M>, <M>), i.e., it checks whether M halts when given its own description as input.
- If H(<M>, <M>) = 1 (M halts on <M>), D enters an infinite loop (does
not halt).
- If H(<M>, <M>) = 0 (M does not halt on <M>), D halts.
- Apply D to its own description, i.e., evaluate D(<D>):
- If H(<D>, <D>) = 1 (D halts on <D>), D loops infinitely (does not
halt).
- If H(<D>, <D>) = 0 (D does not halt on <D>), D halts.
- This creates a contradiction: H’s output about D’s halting behavior leads to the opposite behavior, implying that H cannot exist for all
Turing machines and inputs.
- Therefore, the halting problem is undecidable, as no such H can consistently determine halting for all cases.
Turing’s proof relies on self-reference, where D is defined in terms of H’s evaluation of D’s own description, leading to the diagonalization contradiction.
On 4/25/2025 3:46 AM, Mikko wrote:
On 2025-04-24 15:11:13 +0000, olcott said:
On 4/23/2025 3:52 AM, Mikko wrote:
On 2025-04-21 23:52:15 +0000, olcott said:
Computer Science Professor Eric Hehner PhD
and I all seem to agree that the same view
that Flibble has is the correct view.
Others can see that their justification is defective and contradicted
by a good proof.
Some people claim that the unsolvability of the halting problem is
unproven but nobody has solved the problem.
For the last 22 years I have only been refuting the
conventional Halting Problem proof.
Trying to refute. You have not shown any defect in that proof of the
theorem. There are other proofs that you don't even try to refute.
Not at all. You have simply not been paying enough attention.
Once we understand that Turing computable functions are only
allowed
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 02:57:01 |
Calls: | 10,387 |
Calls today: | 2 |
Files: | 14,061 |
Messages: | 6,416,755 |