Uncomputability
Some well‑defined problems cannot be solved by any mechanical procedure, even on an idealised computing device. This is the core insight of uncomputability: certain functions are beyond the reach of any effective algorithmic method. The limits originate not from practical constraints but from the logical structure of computation itself.
The canonical example is the Halting Problem. Given an arbitrary Turing machine and an input, no algorithm can always determine in finite time whether the machine will halt. The proof relies on diagonalisation, constructing a machine that contradicts the existence of a universal halting‑decider. The result shows that even the most powerful models-of-computation face intrinsic boundaries.
The existence of a Universal Turing Machine—a machine that can simulate any other Turing machine given its encoded index—deepens the result. This universality means that a single computational framework can express any algorithm, yet it simultaneously guarantees the existence of functions for which no algorithmic description exists. Uncomputability therefore highlights a fundamental asymmetry: we can enumerate all computations, but not all decision problems.
The conceptual scaffold rests on Church’s Thesis, which equates effective computability with Turing‑machine computability. Once a system (such as a Beta‑like ISA with conditional branching and arithmetic) reaches Turing‑universal status, it inherits the same uncomputable limits. Practical programming in assembly-language or higher‑level languages cannot escape these truths; there is no instruction sequence that solves the Halting Problem for arbitrary programs.