Rice's Theorem¶
Every non-trivial semantic property of programs — anything depending on the input-output function rather than the source text — is undecidable, proved by a generic reduction from the halting problem, so no exact analyzer for such a property can exist.
Core Idea¶
Rice's theorem (Rice, 1953) is the central undecidability result in computability theory: every non-trivial semantic property of programs is undecidable. A semantic property depends solely on the function a program computes — its input-output behaviour — not on any syntactic feature of the source. Non-trivial means it holds for at least one computable function and fails for another. The mechanism is a reduction from the halting problem, generic over the property, so it closes off every question of the form "does this program behave in some non-trivial way?" and draws a provable line between the syntactic and the semantic.
Scope of Application¶
Because Rice's theorem is a proven result, it applies literally wherever its precondition holds — a Turing-complete model whose programs are finite descriptions of partial computable functions. Within computer science that holds throughout.
- Programming-language theory — the founding negative result motivating type and effect systems.
- Static analysis and abstract interpretation — structures the soundness/completeness trade-off.
- Software verification — explains the inherent incompleteness of model checking and deductive verification.
- Compiler optimisation — bounds what an optimiser can know without purity/effect annotations.
- Malware analysis and program equivalence — the in-principle undecidability of these tooling problems.
Clarity¶
Naming Rice's theorem settles a question practitioners repeatedly get wrong: why can't we just write a tool that decides whether an arbitrary program is correct, terminates, or is equivalent to a reference? Without it, each failure looks like a local engineering shortfall; with it, the failure is structural — the tool would decide an undecidable problem, so it provably cannot exist. The sharper distinction it draws is syntactic versus semantic, and it makes the menu of responses exhaustive: no both-sound-and-complete analyzer is possible by law.
Manages Complexity¶
Computer science accumulates an ever-growing list of "can we build a tool that decides X?" questions, each looking like its own research problem. Rice's theorem collapses that catalog to a single decision procedure run over the property, not the program: is it semantic, and is it non-trivial? Both yes means provably undecidable — stop looking. Downstream, the escape routes become finite and known in advance: restrict to a decidable fragment, accept sound-but-incomplete, accept complete-but-unsound, or demand annotations — a single discrete choice over where the approximation's blind spot falls.
Abstract Reasoning¶
The theorem licenses a boundary-drawing move (a two-question membership test on the property — semantic and non-trivial — yielding a provable impossibility verdict), an interventionist move (making an undecidable question tractable by changing one input to the test: render the property syntactic via annotations, or shrink the language to a non-Turing-complete fragment), a diagnostic move (any tool claiming exact analysis of a non-trivial semantic property must secretly be unsound, incomplete, or restricted), and an order-of-reasoning discipline (classify the property first, build the tool second).
Knowledge Transfer¶
Rice's theorem is a proven negative result, so it applies literally wherever its precondition holds — a Turing-complete model whose programs are finite descriptions of computable functions. Within computer science that holds everywhere, so the two-question membership test and the exhaustive escape-route menu carry with full force across language theory, static analysis, verification, compilers, and malware analysis — one result, applied literally throughout. Beyond programs-as-computable-functions the theorem does not transfer: the proof depends on universal Turing machines and halting-problem diagonalisation. What recurs is the more general description-to-behaviour gap of the limitative-results family (halting, Gödel, Chaitin), each separately proven; that meta-pattern carries the cross-domain lesson, not "a Rice's theorem for X."
Relationships to Other Abstractions¶
Current abstraction Rice's Theorem Domain-specific
Parents (2) — more general patterns this builds on
-
Rice's Theorem is a kind of Axiomatic Incompatibility Prime
Rice's theorem is axiomatic incompatibility specialized to total decision of non-trivial semantic properties of partial computable functions.
-
Rice's Theorem presupposes Halting Problem Domain-specific
Rice's theorem presupposes halting undecidability as the reduction basis that generalizes the limit to every non-trivial semantic program property.
Hierarchy paths (2) — routes to 2 parentless roots
- Rice's Theorem → Axiomatic Incompatibility
- Rice's Theorem → Halting Problem → Diagonal Impossibility → Reflexivity (Self-Reference)
Neighborhood in Abstraction Space¶
Rice's Theorem sits in a moderately populated region (46th percentile for distinctiveness): it has near-neighbors but no dense thicket of look-alikes.
Family — Unclustered & Miscellaneous (309 abstractions)
Nearest neighbors
- Halting Problem — 0.89
- P versus NP Problem — 0.86
- Turing Machine — 0.85
- Complexity Class — 0.84
- Model Checking — 0.83
Computed from structural-signature embeddings · 2026-07-12