Intermediate Topic 33 of 51 Theory & Discrete Math
Rice's Theorem
Every nontrivial semantic program property is undecidable.
How it works
Rice's theorem states that every non-trivial semantic property of programs is undecidable. A property is semantic if it depends only on the function or language the program computes, not on its code text, and non-trivial if some programs have it and some do not. Examples: whether a program halts on all inputs, computes a constant function, accepts the empty string or is equivalent to another program. The proof reduces from the halting problem.
Step-by-step walkthrough
- A semantic property is about what a program does, not its text.
- Some programs have it and some do not, so it is nontrivial.
- Rice says no algorithm can decide it for every program.
- Examples: does it halt, does it compute squares, is it a virus.
- Only syntactic checks such as length are decidable.
Where it is used
It explains the limits of static analysis, program verification, malware detection, optimizing compilers and automatic grading: no tool can perfectly decide such properties for all programs.
Common pitfall
Syntactic properties, such as whether the code contains a certain statement or has more than 100 lines, are decidable and not covered. The theorem does not forbid tools from working on restricted languages or giving approximate answers with false positives or negatives. Apply it only to properties of the computed behavior and check non-triviality.
Where it fits in the course
Rice's Theorem is topic 33 of 51 in Theory & Discrete Math, rated Intermediate. It follows Reductions. The next topic is Complexity Classes.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Theory & Discrete Math quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Theory & Discrete Math quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Rice's Theorem?
Where do people use Rice's Theorem?
What is the most common mistake with Rice's Theorem?
What should I learn before this topic?
How can I practice it?
Is Rice's Theorem hard to learn?
How long does it take to learn Rice's Theorem?
Which topics are related to Rice's Theorem?
What should I study after Rice's Theorem?
Related topics
- Reductions (Theory & Discrete Math)
- Complexity Classes (Theory & Discrete Math)
- Halting Problem (Theory & Discrete Math)
- Class P (Theory & Discrete Math)
- Bayes' Theorem (Math for Computing)
- Master Theorem (Algorithms)
- Central Limit Theorem (Math for Computing)